diff --git a/CODEX_FIRMWARE_HANDOFF.md b/CODEX_FIRMWARE_HANDOFF.md index 2a5b75d..23e7d05 100644 --- a/CODEX_FIRMWARE_HANDOFF.md +++ b/CODEX_FIRMWARE_HANDOFF.md @@ -97,23 +97,23 @@ JDY-28M 的 STAT 依据模块手册第 7 页:MESH 模式下高电平表示入 ### 6.2 模块转发给 STM8 ```text -F1 DD 09 00 0A | 源短地址 2B | 业务数据 | 0D 0A +F1 DD 08/09/0A | 源短地址 2B | 目标短地址 2B | 业务数据 | 0A ``` -- `F1 DD 09 00 0A`:固定接收帧头; +- `F1 DD 08/09/0A`:根据当前实测,第三字节可能随模块固件或转发路径变化; - 源短地址:2 字节; +- 目标短地址:2 字节; - 业务数据:STM8 自定义业务帧; -- `0D 0A`:蓝牙帧结束符。 +- `0A`:实测帧尾,部分串口工具可能同时显示前置`0D`。 广播和单播格式相同,仅目标地址不同。整个 JDY-28M 外层数据包最大 20 字节。 ## 7. STM8 业务帧 ```text -0x55 0xAA | CMD | LEN | DATA | CRC16 +CMD | LEN | DATA | CRC16_H | CRC16_L ``` -- `0x55 0xAA`:业务帧头; - `CMD`:命令码; - `LEN`:DATA 长度; - `DATA`:命令数据; @@ -124,8 +124,8 @@ CRC-16/MODBUS 固定参数: - 初始值:`0xFFFF`; - 右移实现多项式:`0xA001`; - 输入、输出反转; -- CRC 低字节在前; -- 计算范围:从 `CMD` 到 DATA,不包含 `0x55 0xAA`; +- CRC 高字节在前,低字节在后; +- 计算范围:从 `CMD` 到 DATA; - 不计算 JDY-28M 外层帧字段。 测试向量: diff --git a/docs/HOST_PROTOCOL_SPEC.md b/docs/HOST_PROTOCOL_SPEC.md index 7453768..38d7808 100644 --- a/docs/HOST_PROTOCOL_SPEC.md +++ b/docs/HOST_PROTOCOL_SPEC.md @@ -36,13 +36,14 @@ DST_L = 0C ### 1.2 接收端串口收到的 Mesh 数据格式 ```text -F1 DD 09 | SRC_H SRC_L | DST_H DST_L | BUSINESS | 0A +F1 DD 08/09/0A | SRC_H SRC_L | DST_H DST_L | BUSINESS | 0A ``` 这是接收方 UART 侧看到的接收格式,不是设备或主机发送时使用的格式。 其中前两字节是发送方短地址,后两字节是接收方短地址;业务帧中不再重复 -嵌入发送方或接收方地址。部分模块/串口工具可能显示为`0D 0A`,设备解析器 -兼容`0A`和`0D 0A`两种接收表现。 +嵌入发送方或接收方地址。根据当前实测,第三字节可能显示为`08`、`09`或`0A`, +设备和上位机解析器应兼容这三种表现。帧尾通常为`0A`,部分模块或串口工具可能 +显示为`0D 0A`;其中`0D`属于外层结束符,不能计入业务数据。 无论发送方是主机还是设备,发送时都统一使用第1.1节的格式: @@ -202,7 +203,7 @@ DATA[0] = 当前继电器控制状态 设备接收侧看到: ```text -F1 DD 09 34 FA 35 FA 01 01 01 50 E0 0A +F1 DD 0A 34 FA 35 FA 01 01 01 50 E0 0A ``` 设备向主机地址`34FA`回复: @@ -217,8 +218,8 @@ F1 DD 09 34 FA 35 FA 01 01 01 50 E0 0A 41 54 2B AA A1 FF FF A0 01 01 01 50 E0 0D 0A ``` -设备收到广播后执行控制,并向发送方地址回复`0x81`。正式多设备版本应对广播 -应答增加随机错峰延时,避免多个设备同时发送。 +设备收到广播后执行控制,并向发送方地址回复`0x81`。广播应答增加随机错峰 +延时,避免多个设备同时发送造成网络拥塞。 ### 4.2 `0x02` 查询继电器状态 diff --git a/docs/OTA_STORAGE_AND_PROTOCOL.md b/docs/OTA_STORAGE_AND_PROTOCOL.md index cbb0b5a..d3a81ef 100644 --- a/docs/OTA_STORAGE_AND_PROTOCOL.md +++ b/docs/OTA_STORAGE_AND_PROTOCOL.md @@ -213,7 +213,7 @@ CRC正确 业务数据帧格式: ```text -SRC_H | SRC_L | CMD | LEN | DATA | CRC16_L | CRC16_H +CMD | LEN | DATA | CRC16_H | CRC16_L ``` 说明: @@ -224,6 +224,7 @@ SRC_H | SRC_L | CMD | LEN | DATA | CRC16_L | CRC16_H - `LEN`:DATA长度; - `DATA`:命令数据; - `CRC16`:CRC-16/MODBUS,计算范围为 CMD、LEN、DATA,高字节在前; +- 发送方和接收方 Mesh 短地址由 JDY-28M 外层帧携带,业务帧不重复添加地址; - CRC错误时静默丢弃,不执行继电器动作,不返回错误帧。 JDY-28M的Mesh外层帧负责目标地址、源地址、Mesh头和帧尾,业务帧本身不重复添加地址。 @@ -238,6 +239,11 @@ JDY-28M的Mesh外层帧负责目标地址、源地址、Mesh头和帧尾,业 | `0x04` | 故障/恢复上报 | 设备→主机 | DATA为故障码或恢复码 | | `0x05` | 查询设备短地址 | 主机→设备 | 返回2字节短地址 | | `0x06` | 配置电流阈值 | 主机→设备 | 2字节,单位mA,低字节在前,保存到EEPROM | + +当前汇编主程序已经完成并通过实物验证的命令为:`0x01`、`0x02`和`0x05`。 +`0x03`、`0x04`、`0x06`、`0x07`以及`0x08~0x0E`属于已确定的协议设计, +在当前汇编主程序中尚未全部完成或尚未完成实物验证,上位机不应据此判断当前 +固件已经支持这些命令。 | `0x0E` | 查询当前固件版本 | 主机→设备 | 无DATA | | `0x0D` | OTA升级结果上报 | 设备→主机 | DATA为升级结果码 |