使用串口发送、接收数据 ,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, 下载次数: 4)
|