== 介绍 ==
此协议用于MCU与CPU通讯。
== 通讯协议 ==
=== MCU 与 CPU通讯协议(小端模式) ===
====物理层协议====
*通过串口通讯,57600波特率,校验位无,数据位8位,停止位1位
=====帧格式表=====
{| class="wikitable sortable"
|-
! 起始位 !! 数据位 !! 校验位置 !! 结束位置
|-
|0xA5,一个字节长度||见数据位表,变长||数据位(从数据位开始到数据位结束)的CRC16/MODBUS校验(低位在前,高位在后),2个字节长度||0x5A,一个字节长度
|}
=====数据位表=====
{| class="wikitable sortable"
|-
! 数据来源地址 !! 目的地址 !! 帧序号 !! 数据长度 (第5-6位) !! 数据命令以及数据内容
|-
|0x01表示第一块CPU板,0x02表示第二块CPU板,0x03表示第三块CPU板,'''目前只有一块CPU板子,只用到0x01''';
'''0x81表示 MCU板''',一个字节||0x01表示第一块CPU板,0x02表示第二块CPU板,0x03表示第三块CPU板'''目前只有一块CPU板子,只用到0x01''';
0x81表示 MCU板''';
0x80表示目的地址是广播给所有的CPU电路板,0xfe表示目的地址是所有的RA电路板,0xff表示广播给系统中所有设备,其他地址备用,一个字节长度||主动发送数据设备每发送一次数据加一个,两个字节,低位在前,高位在后(大于0xffff,清零)||数据命令以及数据内容部分数据长度,两个字节,低位在前,高位在后||见数据命令以及数据内容表,变长
|}
=====数据命令以及数据内容表=====
{| class="wikitable sortable"
|-
! 命令序号(定长,两个字节低位在前,高位在后),第7-8位 !! 命令内容(变长,0到n个字节),第9位开始 !! 是否需要回复(定长,1个字节)
|-
|0x01,MCU上报PT1000温度值||2个字节(100表示0度,99表示-1度,101表示1度,999度表示传感器没有接入)||0表示不需要返回
|-
|0x02,MCU上报rfid接收到标签信号的数据||24个字节||0表示不需要返回
|-
|0x03,修改rfid的epc id(标签id)||12个字节||0表示不需要返回
|-
|0x05,MCU上报GPS数据||NMEA协议,上报内容包括GPRMC、GPVTG、GPGGA、GPGSA、GPGSV、GPGLL,字节长度会变化||0表示不需要返回
|-
|0x08,要求MCU上报GPS板软件版本号消息||0x11,0x22,2个字节||1表示需要返回
|-
|0x09,MCU上报GPS板软件版本号数据||GPS板子的版本号,12个字节||0表示不需要返回
|-
|0x0A,获取RFID软件版本号||0x11,0x22,2个字节||1表示需要返回
|-
|0x0B,返回的RFID软件版本号||RFID的软件版本号,23个字节||0表示不需要返回
|-
|0x0C,MCU上报P000状态数据||P000状态数据(1:没插;0:插了),1个字节||0表示不需要返回
|-
|0x0D,GPS板进入OTA模式||0xAA,0xBB,2个字节(发送之后等待提示(见命令序号1C),进行操作进入ota模式)||1表示需要返回
|-
|0x0E,RFID板进入OTA模式||0xCC,0xDD,2个字节(发送之后等待mcu发送0x15就可以上传需要升级的bin文件了)||1表示需要返回
|-
|0x0F,要求MCU上报RFID板软件版本号消息||0x33,0x44,2个字节||1表示需要返回
|-
|0x10,MCU上报RFID板软件版本号数据||MCU RFID板子的版本号,12个字节,例如:02 00 02 03 01 00 00 09 00 00 01 04,就代表2023-10-09 0014||0表示不需要返回
|-
|0x11,MCU上报OTA信息||0x01,0x02,0x03,3个字节(打开flash驱动失败)||0表示不需要返回
|-
|0x12,MCU上报OTA信息||0x04,0x05,0x06,3个字节(是否需要强制升级,在接收到这条数据时5s内输入0x38则升级GPS,0x39则升级RFID,5s内不输入则退出)||0表示不需要返回
|-
|0x13,MCU上报OTA信息||0x07,0x08,0x09,3个字节(准备强制升级GPS板子)||0表示不需要返回
|-
|0x14,MCU上报OTA信息||0x0A,0x0B,0x0C,3个字节(准备强制升级RFID板子)||0表示不需要返回
|-
|0x15,MCU上报OTA信息||0x0D,0x0E,0x0F,3个字节(RFID准备超时)||0表示不需要返回
|-
|0x16,MCU上报OTA信息||0x10,0x11,0x12,3个字节(接收RFID应答数据超时)||0表示不需要返回
|-
|0x17,MCU上报OTA信息||0x13,0x14,0x15,3个字节(RFID OTA成功)||0表示不需要返回
|-
|0x18,MCU上报OTA信息||0x16,0x17,0x18,3个字节(RFID OTA失败)||0表示不需要返回
|-
|0x19,MCU上报OTA信息||0x19,0x1A,0x1B,3个字节(有可能:RFID板子断开连接、上传文件失败;处理方法:等待rfid进入主程序(大概20s),或者重启RFID板子)||0表示不需要返回
|-
|0x1A,MCU上报OTA信息||0x1C,0x1D,0x1E,3个字节(没有收到RFID回复,等待RFID板子进入主程序(大概20s)再重新尝试)||0表示不需要返回
|-
|0x1B,MCU上报OTA信息||0x1F,0x20,0x21,3个字节(RFID应答超时,请重新尝试)||0表示不需要返回
|-
|0x1C,MCU上报OTA信息||0x22,0x23,0x24,3个字节(5秒内接收到这个命令后向mcu发送0x32就开始准备给GPS板子ota了)||0表示不需要返回
|-
|0x1D,MCU上报OTA信息||0x37,0x38,0x39,3个字节(检查app区域)||0表示不需要返回
|-
|0x1E,MCU上报OTA信息||0x25,0x26,0x27,3个字节(接收到这个命令就可以开始传输需要升级的bin文件了)||0表示不需要返回
|-
|0x1F,MCU上报OTA信息||0x28,0x29,0x2A,3个字节(升级成功)||0表示不需要返回
|-
|0x20,MCU上报OTA信息||0x2B,0x2C,0x2D,3个字节(升级失败:Flash地址无效)||0表示不需要返回
|-
|0x21,MCU上报OTA信息||0x2E,0x2F,0x30,3个字节(升级失败:下载超时)||0表示不需要返回
|-
|0x22,MCU上报OTA信息||0x31,0x32,0x33,3个字节(升级失败:Flash错误)||0表示不需要返回
|-
|0x23,MCU上报OTA信息||0x34,0x35,0x36,3个字节(升级失败:未知错误)||0表示不需要返回
|}
=== RFID MCU板 与 GPS MCU板通讯协议(小端模式) ===
====物理层协议====
*通过485串口通讯,9600波特率,校验位无,数据位8位,停止位1位
=====帧格式表=====
{| class="wikitable sortable"
|-
! 起始位 !! 数据长度 !! 命令 !! 数据!! 校验
|-
|0xAA,0x55两个字节||命令到校验的长度,一个字节||0x11,0x22,0x33(修改rfid的epc id)三个字节||12个字节(要修改的epc id)||从起始位开始到数据结束,使用CRC16/MODBUS校验(低位在前,高位在后),2个字节长度
|-
|0xAA,0x55两个字节||命令到校验的长度,一个字节||0x77,0x88,0x99(获取rfid软件版本号)三个字节||无||从起始位开始到数据结束,使用CRC16/MODBUS校验(低位在前,高位在后),2个字节长度
|-
|0xAA,0x55两个字节||命令到校验的长度,一个字节||0xAA,0xBB,0xCC(进入ota升级模式)三个字节||无||从起始位开始到数据结束,使用CRC16/MODBUS校验(低位在前,高位在后),2个字节长度
|-
|0xAA,0x55两个字节||命令到校验的长度,一个字节||0xDD,0xEE,0xFF(获取mcu rfid板子软件版本号)三个字节||无||从起始位开始到数据结束,使用CRC16/MODBUS校验(低位在前,高位在后),2个字节长度
|}