== 通讯协议-Uart2== === MCU 与 上位机通讯协议(小端模式) === ====物理层协议==== *通过串口通讯,57600波特率,校验位None,数据位8位,停止位1位 ====帧格式表==== {| class="wikitable sortable" |- ! 起始位 !! 数据位 !! 校验位置 !! 结束位置 |- |0xA5,一个字节长度||见数据位表,变长||数据位(从数据位开始到数据位结束)的CRC校验,2个字节长度,低位在前,高位在后||0x5A,一个字节长度 |} =====数据位表===== {| class="wikitable sortable" |- ! 数据来源地址 !! 目的地址 !! 帧序号 !! 数据长度 (第5-6位) !! 数据命令以及数据内容 |- |0x01表示第一块CPU板,0x02表示第二块CPU板,0x03表示第三块CPU板,'''目前只有一块RK3568 CPU 板子,只用到0x01''';
'''0x81表示 电源充电控制板''',一个字节||0x01表示第一块CPU板,0x02表示第二块CPU板,0x03表示第三块CPU板'''目前只有一块RK3568 CPU 板子,只用到0x01''';
0x81表示 电源充电控制板''';
0x80表示目的地址是广播给所有的CPU电路板,0xfe表示目的地址是所有的RA2E1电路板,0xff表示广播给系统中所有设备,其他地址备用,一个字节长度||主动发送数据设备每发送一次数据加一个,两个字节,低位在前,高位在后(大于0xffff,清零),接收需要返回数据同数据返回||数据命令以及数据内容部分数据长度,两个字节,低位在前,高位在后||见数据命令以及数据内容表,变长 |} ====数据命令以及数据内容表==== {| class="wikitable sortable" |- ! 命令序号(定长,两个字节低位在前,高位在后),第7-8位 !! 命令内容(变长,0到n个字节),第9位开始 !! 是否需要回复(定长,1个字节) |- |1,CPU发送心跳||无||1表示需要返回,0表示无需返回 |- |2,RA2E1应答心跳||0(超过1分钟没有收到任何数据,RA2E1重启CPU)||0表示无需返回 |- |3,CPU读取RA2E1硬件版本||数据长度0|1表示需要返回,0表示无需返回 |- |4,RA2E1应答上传硬件版本||例如,"NT2109A2",8个字节长度||0表示无需返回 |- |5,CPU读取RA2E1软件版本||无||1表示需要返回,0表示无需返回 |- |6,RA2E1应答上传软件版本||例如,"RA2E1211214001",14个字节长度||0表示无需返回 |- |7,RA2E1上报状态|| 电池电压(2个字节,低位在前,高位在后,单位mV);充电器接口电压(2个字节,低位在前,高位在后,单位mV);原始电池电流(2个字节,得到的值减去10000,单位mA),校准过的电池电流(2个字节,得到的值减去10000,单位mA);系统时间(年、月、日、时、分、秒、礼拜(年两个字节,其余1个字节,一个8个字节)); RTC状态(1个字节,0表示RTC正常,1,RTC初始化异常,2,没有秒中断,3,没有分钟中断);板子温度,一个字节长度,实际温度+40,比如:20表示,-20℃,60表示20℃;当前bios状态0表示A bios,1表示B bios;P111_status,0为低,1为高(一个字节);麦克风adc值(两个字节)||1表示需要返回,0表示无需返回 |- |8,CP回复||无||1表示需要返回,0表示无需返回 |- |129,CPU发送mcu ota命令||无||1表示需要返回 |- |130,RA回复||0表示正常,1表示错误||0表示无需返回 |- |}