使用串口發送、接收數據 ,CRC校驗格式 CRC-8-MAXIM
////////////////////////////////////////////////////////////////////////////
通信格式:XX XX XX XX XX
上位機發送:第一字節:AA
第二字節:數據長度
第三字節:指令類別: 0x01(刷新率設置, 指令內容2字節 oxXX 0xXX 9999為1Hz, 999為10H,99為100Hz, 19為500Hz)
0x02(輸出模式設置, 0x00為輸出字符模式,0x01為輸出十六進制模式) *注意:輸出為字符模式 輸出頻率不可設置為500Hz
0x03(參考電容設置,指令內容4字節,前兩字節為整數位,后兩字節為小數位)
末尾字節:CRC校驗位
下位機發送:
默認為字符輸出
十六進制輸出: 第一字節:0x55
第二字節:數據長度
第三字節:數據類別(0x01 電容1/Rref, 0x02 電容2/Rref, 0x03 電容3/Rref,0x04 R(aul)/R(si))
數據內容 四個字節
末尾字節:CRC校驗位
選擇為十六進制輸出模式時,將直接輸出傳感器的比值數據,須在上位機進行換算以及補償
////////////////////////////////////////////////////////////////////////////
測試用例:
AA 06 01 03 e7 13 切換刷新頻率
AA 05 02 01 48 切換輸出格式
AA 08 03 00 64 00 00 27 設置參考電容
單片機源程序如下:
- #include "sys.h"
- #include "usart.h"
- #include "timer.h"
- #include "pcap.h"
- int lenRFID=0,bleflag=0;
- u8 PreCmdBuff1[8],PreCmdBuff2[8],PreCmdBuff3[8],PreCmdBuff4[8];
- char TemCmdBuff[4]={0x55, 0x04, 0x0E, 0x6A};
- unsigned long Cap_msg1,Cap_msg2,Cap_msg3,Cap_msg4;
- float Cap_val1,Cap_val2,Cap_val3,Cap_val4,refC=100;
- u8 Uartrecive[8];
- int outputflag=0;
- int main(void)
- {
- int i;
-
- delay_init(); //=====延時函數初始化
- uart1_init(230400); //=====串口1初始化
- SPI_SoftInit();
- TIM3_Int_Init(9999,7199);
- NVIC_Configuration();
- LED_Init();
- cap01_init();
- while(1)
- {
- //Uart1SendBuf(TemCmdBuff,4);
- //delay_ms(5);
- //Uart1SendBuf(PreCmdBuff,4);
- //Disp_Proc();
- }
- }
復制代碼
原理圖: 無
仿真: 無
代碼:
HPCL.7z
(222.59 KB, 下載次數: 15)
2024-7-10 14:21 上傳
點擊文件名下載附件
|