== 介绍 == 
此协议用于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'''；<br>'''0x81表示 MCU板'''，一个字节||0x01表示第一块CPU板，0x02表示第二块CPU板，0x03表示第三块CPU板'''目前只有一块CPU板子，只用到0x01'''；<br>0x81表示 MCU板'''；<br>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个字节长度
|}