外观
Loading search…
外观
Loading search…
本文是 控制板 DlaBoard_A ↔ FOC_double ↔ 刹车板 DlaCart_v2.1 ↔ 转向伺服 之间 CAN 通信的唯一权威定义。三方固件改动须以本文为准并同步更新本文。 物理层:经典 CAN(Classic CAN),1 Mbps,标准帧(11 位 ID)。 FOC 端用 FDCAN 外设但配置为经典帧,与控制板 bxCAN、刹车板 bxCAN 总线兼容。
最后更新:2026-06-01
| 节点 | MCU | CAN 外设 | 句柄 | 备注 |
|---|---|---|---|---|
| 控制板 DlaBoard_A | STM32F407 | bxCAN1 | hcan1 | 总线主控;采集 RC/油门/屏/档位并下发指令 |
| FOC 驱动板 FOC_double | STM32G473 | FDCAN1(经典帧) | hfdcan1 | 双电机 FOC;CAN 接入时本地油门/RC 让位 |
| 刹车板 DlaCart_v2.1 | STM32F103 | bxCAN | hcan | 脉冲式电动刹车执行器 |
| 转向伺服 | 伺服自带 | — | — | 绝对位置闭环,ID=0x64+node_id |
控制板滤波器:mask=0 全收进 FIFO0,主循环 while 排空逐帧分发。
| ID | 方向 | 名称 | 周期 | DLC |
|---|---|---|---|---|
0x64 + node_id | 控制板 ↔ 伺服 | 转向伺服指令/反馈 | 50ms 保活 | 8 |
0x210 | 控制板 → FOC | 驱动请求 | 20ms | 8 |
0x211 | FOC → 控制板 | 行走状态 | 20ms | 8 |
0x212 | FOC → 控制板 | 母线遥测(屏显) | 100ms | 8 |
0x220 | 控制板 → 刹车板 | 刹车命令 | 变化即发 + 100ms 保活 | 8 |
ID 选择:0x2xx 段留给「整车语义」帧,伺服 0x64+ 段为厂商既定,互不重叠。 新增整车帧请在 0x213.. 顺延,并先更新本表。
0x210 控制板 → FOC 驱动请求(DLC=8) 小端。源 foc_can.c::FocCAN_SendDriveRequest,宿 bsp_can.c::bsp_can_poll_rx。
| 字节 | 字段 | 类型 | 说明 |
|---|---|---|---|
| [0:1] | throttle_permille | u16 | 油门 0..1000(‰) |
| [2:3] | steer_permille | s16 | 转向 -1000..1000(‰)(差速用,当前 0) |
| [4] | flags | u8 | bit0=allow_drive, bit1=brake |
| [5] | gear | u8 | 0=N 1=F(前进) 2=R(后退) |
| [6] | seq | u8 | 心跳计数 |
| [7] | timeout_10ms | u8 | 0=FOC 默认(300ms);非 0 建议 30 |
FOC 仲裁:新鲜 0x210 优先于本地油门;超时(timeout 或默认 300ms)→失效; 持续无源 800ms→撤防停机。
0x211 FOC → 控制板 行走状态(DLC=8) 源 vehicle.c::vehicle_status_tx,宿 foc_can.c::FocCAN_OnRxFrame。
| 字节 | 字段 | 类型 | 说明 |
|---|---|---|---|
| [0] | health | u8 | bit0=foc1_run bit1=foc2_run bit4=foc1_nfault bit5=foc2_nfault bit6=cmd_recent |
| [1] | seq | u8 | 心跳 |
| [2:3] | foc1_rpm | s16 | 车架机械 rpm(带向) |
| [4:5] | foc2_rpm | s16 | 同上 |
| [6] | echo_flags | u8 | 回显 bit0=allow bit1=brake |
| [7] | — | u8 | bit7=cmd_valid, bit0-3=gear |
控制板用双轮 rpm 折算车速(0.1km/h),轮速传感器作回退(FocCAN_GetSpeed_01kmh)。
0x212 FOC → 控制板 母线遥测(DLC=8) 源 vehicle.c::vehicle_telem_tx,宿 foc_can.c::FocCAN_OnRxFrame。供串口屏显示。
| 字节 | 字段 | 类型 | 说明 |
|---|---|---|---|
| [0:1] | vbus_mV | u16 | 母线电压(毫伏) |
| [2:3] | ibus_cA | s16 | 母线总电流(厘安,10mA/LSB;双电机 ibus 之和) |
| [4] | seq | u8 | 心跳 |
| [5:7] | — | — | 预留(温度/故障字) |
控制板缓存 + FocCAN_GetVbus_mV/GetIbus_cA(不新鲜返回 0)。屏显: 电压 0.1V/字、电流 0.1A/字。屏地址待定(screen.h 中 SCREEN_ADDR_VBUS_*=0, 填入后即生效)。
0x220 控制板 → 刹车板 刹车命令(DLC=8) 源 brake_can.c::BrakeCAN_Send,宿 DlaCart_v2.1/main.c::Brake_CAN_ApplyFrame。
| 字节 | 字段 | 类型 | 说明 |
|---|---|---|---|
| [0] | flags | u8 | bit0=apply(拉闸) |
| [1] | seq | u8 | 心跳 |
| [2] | timeout_10ms | u8 | 失效超时(默认 30=300ms) |
| [3] | magic | u8 | 固定 0x42,刹车板据此校验 |
| [4:7] | — | — | 预留 |
刹车板校验:DLC≥4 且 data[3]==0x42;执行:apply 跳变→驱动 ~500ms 脉冲到位后保持; 同状态周期帧仅保活;超时无帧→自动松刹车。故控制板须以 < timeout 周期持续发送当前意图。
刹车意图来源(控制板 foc_brake,与 FOC 刹车同源): 跟随模式取上位机 brake;否则 刹车开关(PE2/PE3) 或 P 档 或 撤防 任一成立。 UART BRAKE 1/0/OFF 为台架测试旁路,测试保持期间正式刹车自动让位 (FocCAN_BrakeTestActive)。
0x64 + node_id 转向伺服 厂商指令集,见 servo_can.c(使能/定位/限速/清报警/写零点/心跳)。 心跳回读 abs_pos 用于训练采集转向角与跟随定位。
FocCAN_OnRxFrame 分发分支。bsp_can.c 加发送函数 + vehicle.c 定周期调用 + app_config.h 加 ID/周期。DlaCart_v2.1/main.c 顶部宏,注意 magic/DLC 校验。