USART串口数据包
先来看两张图,本次程序是串口收发HEX数据包,第二种是串口收发文本数据包,之后两个图,展示的就是接收数据包的思路。
在PB1这里接了一个按键,用于控制。在串口助手,在发送模式和接收模式都选择HEX模式。
在OLED显示这样的数据包,在串口助手这,也显示接收到了这个数据包。
这个数据包有个规定的格式,就是以FF为包头,FE为包尾,中间固定4个字节为数据,这是STM32发送数据包。
STM32发送数据包:可以在串口助手的发送区,发送一个数据包给STM32,也是同样的格式,以FF开头,中间4个数据为用户数据,最后以FE结尾。
第二个程序串口收发文本数据包:在串口助手这的发送模式和接收模式都选择文本模式,这个程序我们要发送一个文本数据包,数据包的格式也是个人规定的,此次规定的是,以@符号为包头,中间是数据,如,@LED_ON ,数据也是规定好的指令,最后以换行符为包尾。
可以看到OLED显示接收到了LED_ON,led点亮,然后STM32回传一个字符串LED_ON_OK。如随便给个指令,STM32也能收到,但是返回ERROR_COMMAND,错误指令。
HEX数据包
先看—下HEX数据包格式。首先数据包是一种将单独的数据打包起来,整体进行传输的方式,方便进行多字节的通信。在实际应用中,可能需要把多个字节打包成一个整体进行发送。
比如说,我们有个陀摆仪传感器,需要用串口发送数据到STM32,陀螺仪的数据,比如X
轴一个字节、Y轴一个字节、Z轴一个字节,总共3个数据,需要连续不断地发送,但当你像这样XYZ XYZ XYZ这样连续发送的时候,就会出现一个问题,就是接收方,三不知道这数据哪个对应X哪个对应Y、哪个对应Z。因为接收方可能会从任意位置开始接收,所以会出现数据错位的现象。
解决这个现象