AMI
2026-10-04:新增 AMI 0x301 标准心跳帧(DLC 8),仅 CAN1(500 kbit/s)100 ms 一次,CAN2 不发送心跳,包含版本、uint16 序号和 uint32 运行毫秒值,小端。源码和 DBC 已更新,已烧录并全量回读一致;CAN1 实测 121 帧,间隔 99.952~100.180 ms。完整定义见 DBC 说明。
YMR A11 仪表,使用淘晶驰 TJC4827X543_011 串口屏,分辨率 480 × 272。
当前屏幕接口 1.4,MCU CAN 输入 v2.4(CAN1 500 kbit/s、CAN2 250 kbit/s,2026-10-03)。新增标准 0x183,由 VCU 反馈实际当前任务、锁定状态和 EBS 状态;两路保留相同解码和任务收发功能。工程使用 USART HMI 1.68.1.3037 编辑、编译。
任务按钮确认仅发送 0x300 请求,当前任务等待 VCU 0x183 更新。例:标准 ID 183、DLC 8、周期 100 ms、数据 02 01 01 07 00 00 00 01 显示直线加速、已锁定、EBS 正常。任务 1~6、已锁定、EBS 正常使用绿色;无任务、已解锁、EBS 故障使用红色;有效标志为 0 或超过 500 ms 无反馈显示灰色未知。VCU 需实现此新增自定义帧,详见 反馈协议 和 验证报告。
dash 顶部已加入低压电池电压 lvbat(两位小数),来源是 SDC 0x6A1 ADC mV。高压电压、电流来自 BMS 0x140 / 扩展 0x186040F3,现有控件显示整数单位;最高单体温度取 0x156 的有效实际温度最大值,或扩展 0x186140F3。旧 0x180 / 0x181 / 0x280 输入不再使用。
CAN 工具设置标准 ID 0x182、DLC 8、周期 100 ms,发送 F4 01 C2 01 90 01 07 01 即设置 500‰ / 45℃ / 40℃。三个数值为小端 int16;温度缩放 0.1℃;字节 6 的 bit0/1/2 为有效标志,字节 7 固定 1。停发超过 2 秒后三个数值变灰。该帧只设置显示;实际电机控制器协议由上游转换。详见 字节布局和发送示例。
v2.3 按用户接线表将 0x6A6 的 PD0~PD14 映射到 DEBUG:d0,d5,d2,d6,d7,d1,d3,d4,d8,d9,d10,d11,d12,d13,d14。低电平正常、高电平故障;d15 没有来源,保持未知。心跳维持已有采样,心跳与 GPIO 均停止超过 500 ms 后未知,恢复后需新的 GPIO 采样。详见 映射及测试报告。
屏幕接口 1.3 的修正已保留:PD1 / Safe_S 的 d5 显示为“左电机互锁”,替换原左后悬项;删除 BSPD/TSMS 与“返回支路”框。布局绘制源码见 debug 后初始化脚本,主页面反馈渲染见 状态脚本。
工程与交接资料
- CAN1 DBC:500 kbit/s,13 条报文、53 个信号,含标准/扩展帧。
- CAN2 DBC:250 kbit/s,不含 0x301 心跳,其余报文布局与 CAN1 相同。
- DBC 对应说明:信号布局、枚举、字节序、样例与复现检查。
- CAN 报文说明 PDF:当前 v2.5 协议的中文打印版,含两路速率、13 条报文及仅 CAN1 发送的 0x301 心跳。
- VCU 状态发送工具:预览或发送实际任务、锁定和 EBS 显示反馈。
- CAN 显示发送工具:通过 python-can 发送扭矩千分和两路温度,支持预览字节、有效标志和适配器参数。
- v2.2 显示 CAN 测试报告:新帧烧录回读和 CAN2 数据、失效、异常帧测试。
- 联调报告:真实 CAN1 / MCU / COM4 到 HMI 调试器的证据。
- v2.1 双 CAN 测试报告:烧录和完整回读、CAN1 500K / CAN2 250K 数据与六个任务确认/取消测试。
- 当前固件 BIN:STM32G0B1CBT6,v2.4,CAN1 500K / CAN2 250K,已烧录并完整回读比对;VCU 反馈测试见当前验证报告。
- 此前 v2.3 BIN:保留十五路 GPIO 映射版本。
- 此前已联调的 v2.1 BIN:CAN1 500K / CAN2 250K,保留双 CAN 分别测试的历史版本。
- 此前已联调的 v2.0 BIN:两路均为 500K,保留历史测试版本。
- AMI.HMI:最新版屏幕工程,打开后编译并下载到对应型号屏幕。
- 通讯交接文档:可编辑协议说明,包含全部状态编号、任务帧、主页面属性及联调步骤。
- 历史屏幕接口 PDF:保留的 v1.2 屏幕接口资料;当前 CAN 与有效性定义以 DBC 对应说明和 Markdown 交接文档为准。
- C 发送示例:主控更新 debug 状态的参考函数。
- 验证说明:已完成检查和实物验证范围。
- STM32 HAL 固件:STM32G0B1CBT6、双 FDCAN、USART2 DMA 和状态灯实现。
- SDC / BMS 协议:当前 CAN ID、字节序、缩放、失效和任务回传定义。
- 旧 CAN / UART 协议:历史自定义 CAN 输入,当前固件不再使用。
最小通讯示例
主控向屏幕发送 ASCII 指令,每条末尾追加三个实际字节 FF FF FF,当前波特率为 9600:
d0=1
d1=2
page debug
这三条分别将配电箱状态设为正常、左急停及行程/惯性状态设为故障、进入 debug 页面。d0=1 的完整字节为 64 30 3D 31 FF FF FF。
Debug 共 16 个全局变量 d0~d15,状态统一为 0=未知、1=正常、2=故障。页面每 250 ms 自动更新文字和颜色,d1 同时更新两个对应位置。不要继续直接写入旧接口的 debug.tN.txt/pco,它们会被刷新脚本覆盖。
Dash 车速上方新增低压电池电压,显示两位小数,单位 V:
dash.lvbat.val=1260
每条末尾同样追加 FF FF FF。数值单位为 0.01 V,示例显示 12.60 V;若主控采集值为 mV,先除以 10 换算。该控件为全局,可跨页面更新;上电显示初值 0.00 V,没有自动低压告警。
主页面右上角隐藏热区进入 debug;debug 的返回按钮切回主页面。六个任务按钮进入确认页,确认后屏幕向主控发送 AA 55 01 NN 0D 0A,NN=01~06;取消不发送任务帧。任务帧结束符与主控发给屏幕的文本指令结束符不同。
验证与接手事项
工程编译通过:0 错误、0 警告。模拟器已验证状态转换、跨页更新和 d1 双位置同步;任务回传此前已做模拟检查。
此前 v2.0 已验证 CAN 盒 → 实物 AMI CAN1 / MCU → USART2 / COM4 → 官方 HMI 调试器的数据更新、失效与恢复,固件编译及烧录校验通过;当时物理串口屏和 CAN2 尚未接线实测。旧 C 示例仍是屏幕 debug 接口示例。
上述历史证据对应 v2.0。v2.1 的源码、CubeMX、两份 DBC 与位时序校验及 Release 编译通过;已烧录,15612 字节 Flash 回读与发布 BIN 完全一致。随后按 CAN1 500K(SDC)和 CAN2 250K(BMS)分别完成 MCU / COM4 / 官方 HMI 调试器联调;两路各六个任务确认和六个取消通过。使用 CAN 盒模拟数据源,未同时接两路或连接真实 SDC/BMS 节点、物理串口屏。两路不转发原始 CAN 帧,CAN 盒需分别设置正确速率。
灰色数值表示未知或失效。原生电机控制器温度协议、Hz 到 km/h 标定参数尚未定义;电机与 MCU 温度可由自定义 0x182 显示输入设置。实际当前任务、锁定和 EBS 显示取 VCU 自定义 0x183 反馈;任务裁决与 EBS 安全输出由 VCU 实现。
许可证沿用仓库中的 AGPL-3.0。
导出 CAN 报文 PDF
PDF 与 docs/AMI_CAN_DBC说明.md 使用同一份内容,按 A4 横向排版并嵌入中文字体。在仓库根目录运行:
python -m pip install -r scripts/requirements-pdf.txt
python scripts/export_dbc_docs.py
python scripts/export_can_pdf.py
默认使用 Windows 黑体 C:/Windows/Fonts/simhei.ttf;其他环境可通过 --font 指定支持中文的 TrueType 字体。输出为 output/pdf/AMI_CAN报文说明.pdf。修改 DBC 后,需重新导出 Markdown 和 PDF。