DCU_APP SPI 通信 ID(按注册命令展开,三行直观图)

按 device/spi/app_spi_command.cpp 注册顺序组织;每个命令均可展开查看 payload,并用“序号 / 组合 / 说明”三行显示。

⚠ 单帧 payload 最大 123 字节(kTxBufSize=128 - 协议开销 5 字节),超过将被 AppSpiCommand::processCommand() 拒收。

Boot Request

注册函数:registerSpiBootRequestCommand
展开查看 ID / payload / 功能
命令/响应符号值
命令帧类型kTypeBootReq0xB0
成功响应kRspAck0x80
payload 直观图
req
—
无可扩展 payload 字段
ack
0x80
成功应答
功能:请求进入 Boot 状态,回 ACK。

OTA Wait

注册函数:registerSpiOtaWaitCommand
展开查看 ID / payload / 功能
命令符号值
OTA 请求kTypeOtaReq0x01
OTA 数据kTypeOtaData0x02
OTA 取消kTypeOtaCancel0x03
响应kRspWait0x81
response payload 直观图
[0]
0x01
hint 固定值
功能:OTA 占位/流控,占位/流控。

App Ping

注册函数:registerSpiAppPingCommand
展开查看 ID / payload / 功能
命令/响应符号值
命令帧类型kTypeAppPing0xA1
响应kRspAck0x80
response payload 直观图
[0]
0xA1
magic
[1]
0x55
APP version tag
[2..5]
APP_VER
MAJOR/MINOR/PATCH/BUILD
[6]
0xAA
BOOT version tag
[7..10]
BOOT_VER
Boot版本
[11..14]
uptime
运行秒数
功能:读取版本与 uptime。

CAN Bridge

注册函数:registerSpiCanBridgeCommand
展开查看 ID / payload / 功能
命令/响应符号值
命令帧类型kTypeCanSend0xC0
成功响应kRspAck0x80
错误响应kRspError0x82
request payload 直观图
[0]
can_ch
通道 0/1/2
[1..4]
can_id
CAN ID(32bit)
[5..N]
can_data
数据区
response payload 直观图
ack
0x00
OK
err
E0/E1/E2
短帧/通道/忙
错误码:E0=payload 不足,E1=通道非法,E2=发送忙/失败。
功能:ESP32 透传 CANFD 发送帧,校验后发送。

CAN Feedback (ID Snapshot) / Set Mode

注册函数:registerSpiCanFeedbackCommand
展开查看 ID / payload / 功能
命令符号值
反馈查询(分页)kTypeCanFeedback0xC1
模式切换kTypeCanSetMode0xC2
成功响应kRspAck0x80
错误响应kRspError0x82
0xC1 request payload 直观图(分页请求)
[0]
channel
通道 0/1/2
[1]
page
页号 0 或 1
0xC1 response payload 直观图(统计头 + ID 快照条目)
应答变长,最大 123 字节。固定头 25B + 条目逐条拼接。
固定头(25 字节)
[0]
channel
回显通道 0/1/2
[1]
page
回显页号
[2]
total_count
ID 条目总数(0~16)
[3]
entry_count
本页条目数
[4]
mode
当前接收模式
[5..8]
snapshot_seq
快照序号(LE)
[9..12]
rx_count
通道累计接收(LE)
[13..16]
tx_count
通道累计发送(LE)
[17..20]
rx_drop_count
通道丢帧(LE)
[21..24]
error_count
通道错误(LE)
条目区(从 [25] 开始,逐条拼接,变长)
[+0..+3]
id
CAN 报文 ID(LE)
[+4]
dlc
数据长度 1~64
[+5]
flags
bit0=FD bit1=BRS bit2=ESI
[+6..+7]
reserved
0x00
[+8..+N]
data
报文数据(dlc 字节)
条目大小 = 8 + dlc 字节。标准 CAN (dlc=8):14B/条,每页最多 8 条。CANFD (dlc=64):72B/条,每页最多 1 条。
total_count = 实际不重复 ID 数(0~16,不满 16 就是实际值)。total_count ≤ 8 时 page=1 的 entry_count=0。
ESP32 每轮:每通道发 page=0 和 page=1 两次请求(共 6 次 SPI/s),拉完整张表。
0xC2 request payload 直观图
[0]
mode
0=全收 1=过滤
0xC2 response payload 直观图
[0]
actual
生效模式
错误码:E0=payload 不足,E1=参数非法(含非法通道),E3=页号非法。
注:E2=快照不可用 仅用于 0xC3,不在 0xC1/0xC2 中返回。

ID Snapshot(仅 ID 快照表)

注册函数:registerSpiIdSnapshotCommand
展开查看 ID / payload / 功能
命令/响应符号值
命令帧类型kTypeIdSnapshot0xC3
成功响应kRspAck0x80
错误响应kRspError0x82
0xC3 request payload 直观图(分页请求)
[0]
channel
通道 0/1/2
[1]
page
页号 0 或 1
0xC3 response payload 直观图(轻量快照头 + ID 条目)
应答变长,最大 123 字节。固定头 4B + 条目逐条拼接。
固定头(4 字节)
[0]
channel
回显通道 0/1/2
[1]
page
回显页号
[2]
total_count
ID 条目总数(0~16)
[3]
entry_count
本页条目数
条目区(从 [4] 开始,逐条拼接,变长)
[+0..+3]
id
CAN 报文 ID(LE)
[+4..+7]
seq
该 ID 更新序号(LE)
[+8..+11]
rx_count
该 ID 累计接收(LE)
[+12]
dlc
数据长度 1~64
[+13]
flags
bit0=FD bit1=BRS bit2=ESI
[+14..+15]
reserved
0x00
[+16..+N]
data
报文数据(dlc 字节)
条目大小 = 16 + dlc 字节。标准 CAN (dlc=8):24B/条,每页最多 5 条。CANFD (dlc=64):80B/条,每页最多 1 条。
total_count = 实际不重复 ID 数(0~16,不满 16 就是实际值)。total_count ≤ 8 时 page=1 的 entry_count=0。
ESP32 行为:当前代码实现了 0xC3,但主链路主要通过 0xC1 拉取“统计头 + ID 快照表”。
错误码:E0=payload 不足,E1=通道非法,E2=快照不可用,E3=页号非法。

公共响应 / 协议常量

来源:app_spi_command_defs.h、app_spi_command.cpp
展开查看公共 ID / payload
公共帧头与响应
SOF
0xA5
起始帧头
ACK
0x80
成功
WAIT
0x81
等待中
ERR
0x82
错误
公共响应 payload 长度与含义由各命令自行定义。

说明:CAN ID 在 CAN Bridge/Feedback 场景下为运行时值,不在文档中固化为常量。