Photonicat MCU 通讯协议: Difference between revisions
Jump to navigation
Jump to search
Monstercat (talk | contribs) No edit summary |
Monstercat (talk | contribs) No edit summary |
||
Line 2: | Line 2: | ||
*通过串口通讯,115200波特率,校验位无,数据位8位,停止位1位 | *通过串口通讯,115200波特率,校验位无,数据位8位,停止位1位 | ||
===帧格式表 | ===帧格式表=== | ||
{| class="wikitable sortable" | {| class="wikitable sortable" | ||
|- | |- | ||
Line 10: | Line 10: | ||
|} | |} | ||
====数据位表 | ====数据位表==== | ||
{| class="wikitable sortable" | {| class="wikitable sortable" | ||
|- | |- |
Latest revision as of 13:44, 21 August 2024
物理层协议
- 通过串口通讯,115200波特率,校验位无,数据位8位,停止位1位
帧格式表
起始位 | 数据位 | 校验位置 | 结束位置 |
---|---|---|---|
0xA5,一个字节长度 | 见数据位表,变长 | 数据位(从数据位开始到数据位结束)的CRC校验,2个字节长度,低位在前,高位在后 | 0x5A,一个字节长度 |
数据位表
数据来源地址 | 目的地址 | 帧序号 | 数据长度 (第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,清零),接收需要返回数据同数据返回 | 数据命令以及数据内容部分数据长度,两个字节,低位在前,高位在后 | 见数据命令以及数据内容表,变长 |
数据命令以及数据内容表
命令序号(定长,两个字节低位在前,高位在后),第7-8位 | 命令内容(变长,0到n个字节),第9位开始 | 是否需要回复(定长,1个字节) |
---|---|---|
1,CPU发送心跳 | 无 | 1表示需要返回,0表示无需返回 |
2,RA2E1应答心跳 | 0(超过1分钟没有收到任何数据,RA2E1重启CPU) | 0表示无需返回 |
3,CPU读取RA2E1硬件版本 | 1表示需要返回,0表示无需返回 | |
4,RA2E1应答上传硬件版本 | 例如,"NT2109A2",8个字节长度 | 0表示无需返回 |
5,CPU读取RA2E1软件版本 | 无 | 1表示需要返回,0表示无需返回 |
6,RA2E1应答上传软件版本 | 例如,"RA2E1211214001",14个字节长度 | 0表示无需返回 |
7,RA2E1上报状态 | 电池电压(2个字节,低位在前,高位在后,单位mV);充电器接口电压(2个字节,低位在前,高位在后,单位mV);输入GPIO状态(2个字节,见GPIO输入状态表),输出GPIO状态(2个字节,见输出GPIO状态表);系统时间(年、月、日、时、分、秒、礼拜(年两个字节,其余1个字节,一个8个字节)); RTC状态(1个字节,0表示RTC正常,1,RTC初始化异常,2,没有秒中断,3,没有分钟中断);板子温度,一个字节长度,实际温度+40,比如:20表示,-20℃,60表示20℃ | 1表示需要返回,0表示无需返回 |
8,CP回复 | 无 | 1表示需要返回,0表示无需返回 |
9,CPU设置RA时间 | 年、月、日、时、分、秒(年2个字节,其他一个字节,一个7个字节) | 1表示需要返回,0表示无需返回 |
10,RA2E1应答本 | 0数据正常,1错误 | 0表示无需返回 |
11,CPU设置定时开机时间 | 年、月、日、时、分、星期(年2个字节,其他一个字节,一个7个字节(星期匹配需要匹配每位,例如B00000101,表示周日和2定时开机)),匹配设置,1个字节(bit0:年匹配;bit1:月匹配;bit2:日匹配;bit3:时匹配;bit4:分匹配;bit5:星期匹配;1设置为匹配,0设置为不匹配,其中分匹配必须为1,否则忽略此定时开机时间)(注:一次最多设置6个定时开机时间,并覆盖以前设置的开机时间,如果设置6个开机时间,此段数据长度位8*6=42个字节,也就是最长48个字节长度) | 1表示需要返回,0表示无需返回 |
12,RA2E1应答 | 0数据正常,1错误 | 0表示无需返回 |
13,RA2E1发送关机命令 | 关机事件,一个字节,0,表示按键强制关机,1,表示电池低电压关机,2,表示升级前关机;3,其他关机 | 1表示需要返回,0表示无需返回 |
14,CPU应答 | 0数据正常,1错误 | 0表示无需返回 |
15,CPU发送关机命令 | 1表示需要返回,0表示无需返回 | |
16,RA2E1应答 | 0数据正常,1错误 | 0表示无需返回 |
17,RA2E1恢复出厂设置 | 1表示需要返回,0表示无需返回 | |
18,CPU应答 | 0数据正常,1错误 | 0表示无需返回 |
19,CPU发送设置看门狗时间命令 | 系统开启超时时间,一个字节;系统关机超时时间,一个字节;系统启动成功后,喂狗超时时间,一个字节 | 1表示需要返回,0表示无需返回 |
20,RA2E1应答 | 0数据正常,1错误 | 0表示无需返回 |
21,CPU发送设置充电开机配置 | 一个字节长度,0,插上充电器后,不自动开机(如果机器关机时因为低电压关机,此配置情况下,插上充电器后还开机),1、插上充电器后开机。其他数据无效 | 1表示需要返回,0表示无需返回 |
22,RA2E1应答 | 0数据正常,1错误 | 0表示无需返回 |
23,CPU设置电压阈值 | 电压高指示阈值,2个字节,默认3850;电压中指示阈值,默认3700;电压低指示阈值,3600;插充电器开机电压,默认3400;充电器在充电器电压阈值,4500;充电器不在时关机电池阈值,3450;工作中,电池电压低电压提示电压阈值,3600;充电器大电流充电电压阈值,4700;开机后,电池电压持续超过15分钟满电压阈值,4140。一共18个字节,默认电压正负1000mV值范围内设置有效,如设置超出范围则使用默认值 | 1表示需要返回,0表示无需返回 |
24,RA2E1应答 | 0数据正常,1错误 | 0表示无需返回 |
25,CPU设置网络指示灯状态 | 高电平持续时间(2个字节,单位10ms),低电平持续时间(2个字节,单位10ms),变换次数(2个字节,次数到达后,保持低电平,0表示一直高低电平变换) | 1表示需要返回,0表示无需返回 |
26,RA2E1应答 | 0数据正常,1错误 | 0表示无需返回 |
27,CPU读取RA2E1开机原因 | 1表示需要返回,0表示无需返回 | |
28,RA2E1U应答 | 一个字节,1,表示按键开机,2,表示定时开机,3,插上charge车载模式开机,4,低电压关机,插上charge后,电压满足条件开机5,无电池开机 | 0表示无需返回 |
Reference Code
https://github.com/photonicat/rockchip_rk3568_pcat_manager/blob/master/src/pmu-manager.c