常驻嘉宾
- 积分
- 3381
- 威望
- 1636
- 贡献
- 977
- 兑换币
- 1016
- 注册时间
- 2012-4-21
- 在线时间
- 384 小时
|
- /***********************************************************************
- *虚拟示波器 数据包处理及发送
- ***********************************************************************/
- #include "common.h"
- #include "uart.h"
- extern u16 Speed_temp[1000]; //速度缓存
- extern u16 Speed_cv_temp[1000] ;//= {0}; //PWM缓存
- extern u32 Count_temp[1000] ;//= {0};//路程缓存
- //u8 Data[][10]={0};
- //记住数据被visualscope视为是有符号的
- //-------------------------------------------------------------------------------------------
- //The data from MCU to computer should be like this:
- //-------------------------------------------------------------------------------------------
- //Ch1_Data_L,Ch1_Data_H,
- //Ch2_Data_L,Ch2_Data_H,
- //Ch3_Data_L,Ch3_Data_H,
- //Ch4_Data_L,Ch4_Data_H,
- //CRC16_L,CRC16_H
- //获得CRC16校验码
- void CRC16(u8 *Array ,u16 Len)
- {
- u16 IX,IY,CRC;
- CRC=0xffff; //set all 1
- for(IX = 0;IX < Len;IX++)
- {
- CRC=CRC ^ (u16)(Array[IX]);
- for(IY = 0;IY <= 7;IY++)
- {
- if((CRC & 1) != 0)
- CRC= (CRC >> 1) ^ 0xA001;
- else
- CRC = CRC >> 1;
- }
- }
- Array[8]=CRC & 0x00ff;
- Array[9]=(CRC & 0xff00)>>8;
- }
- //数据转换以及发送
- void Scope_send()
- {
- u16 i,j;
- u8 Data[1000][10]={0};
- for(i = 0;i < 1000; i++)
- {
- Data[i][0] = (u8)( Speed_temp[i] & 0x00ff) ; //取低8位
- Data[i][1] = (u8)((Speed_temp[i] & 0xff00 )>> 8) ; //取高8位
- Data[i][2] = (u8)( Speed_cv_temp[i] & 0x00ff) ; //取低8位
- Data[i][3] = (u8)((Speed_cv_temp[i] & 0xff00 )>> 8) ; //取高8位
- Data[i][4] = (u8)( Count_temp[i] & 0x00ff) ; //取低8位
- Data[i][5] = (u8)((Count_temp[i] & 0xff00 )>> 8) ; //取高8位
- CRC16(Data[i],8);
- for(j = 0 ; j < 10;j++ )
- {
- uart_putchar(UART3,Data[i][j]);
- }
- }
-
-
-
- }
复制代码 |
|