feat: add AS status feedback for both HMI sizes with verified v2.7 release

This commit is contained in:
shenlefengnai-rgb
2026-10-07 16:32:42 +08:00
parent dba8aa5ea9
commit e6556fc218
245 changed files with 21470 additions and 159 deletions
+21 -7
View File
@@ -2,11 +2,11 @@
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 说明](docs/AMI_CAN_DBC说明.md)。
YMR A11 仪表,使用淘晶驰 TJC4827X543_011 串口屏,分辨率 480 × 272。
YMR A11 仪表。当前提供淘晶驰 TJC8048X370_011(800 × 480)与 TJC4827X543_011(480 × 272)两个版本,均支持独立无人状态。小屏工程为 `AMI.HMI`。
当前屏幕接口 **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 编辑、编译。
当前屏幕接口 **1.5**,MCU CAN 输入 **v2.7(CAN1 500 kbit/s、CAN2 250 kbit/s,2026-10-07)**。标准 `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 需实现此新增自定义帧,详见 [反馈协议](docs/AMI_CAN_DBC说明.md#vcu-状态反馈-0x183) 和 [验证报告](docs/VCU状态反馈测试报告.md)。
任务按钮确认仅发送 `0x300` 请求,实际状态等待 VCU `0x183` 更新。例:标准 ID `183`、DLC `8`、周期 `100 ms`、数据 `02 01 01 0F 00 01 00 02` 显示直线加速、已锁定、AS Ready、EBS 正常。无人状态独立显示在锁定状态右侧;有效标志为 0 或超过 500 ms 无反馈显示灰色未知。VCU 需实现此自定义版本 2 布局,详见 [反馈协议](docs/AMI_CAN_DBC说明.md#vcu-状态反馈-0x183) 和 [本次验证报告](docs/无人状态显示验证报告.md)。
dash 顶部已加入低压电池电压 `lvbat`(两位小数),来源是 SDC `0x6A1` ADC mV。高压电压、电流来自 BMS `0x140` / 扩展 `0x186040F3`,现有控件显示整数单位;最高单体温度取 `0x156` 的有效实际温度最大值,或扩展 `0x186140F3`。旧 `0x180 / 0x181 / 0x280` 输入不再使用。
@@ -16,22 +16,26 @@ v2.3 按用户接线表将 `0x6A6` 的 PD0~PD14 映射到 DEBUG:`d0,d5,d2,d6
屏幕接口 1.3 的修正已保留:PD1 / Safe_S 的 d5 显示为“左电机互锁”,替换原左后悬项;删除 BSPD/TSMS 与“返回支路”框。布局绘制源码见 [debug 后初始化脚本](scripts/hmi/debug-postinit.txt),主页面反馈渲染见 [状态脚本](scripts/hmi/dash-status-render.txt)。
2026-10-05:按 SDC master `7bc2d9f1eaaf19814957037bd097cd879cbf4cbf` 接入标准 `0x6A2 / DLC 4` 双前轮轮速(uint16 小端 mm/s,20 ms)。车速为双前轮平均值换算整数 km/h;`10 27 F8 2A` 显示 38 km/h,停止 `00 00 00 00` 显示白色 0。超过 500 ms 无有效轮速帧保留数字变灰,新帧恢复,其他流量不续期。旧 DLC 8 四路 Hz 已拒绝。SDC 已使用每圈 49 脉冲、轮周长 1414 mm;AMI 不再次标定。无每轮有效标志,不能把零读数当作传感器健康证据。详情见 [轮速接入验证报告](docs/SDC轮速接入验证报告.md)。
## 工程与交接资料
- [CAN1 DBC](AMI.dbc):500 kbit/s,13 条报文、53 个信号,含标准/扩展帧。
- [CAN2 DBC](AMI_CAN2_250k.dbc):250 kbit/s,不含 0x301 心跳,其余报文布局与 CAN1 相同。
- [DBC 对应说明](docs/AMI_CAN_DBC说明.md):信号布局、枚举、字节序、样例与复现检查。
- [CAN 报文说明 PDF](output/pdf/AMI_CAN报文说明.pdf):当前 v2.5 协议的中文打印版,含两路速率、13 条报文及仅 CAN1 发送的 0x301 心跳。
- [VCU 状态发送工具](scripts/send_vcu_status_can.py):预览或发送实际任务、锁定和 EBS 显示反馈。
- [CAN 报文说明 PDF](output/pdf/AMI_CAN报文说明.pdf):当前 v2.7 协议的中文打印版,含两路速率、无人状态反馈及仅 CAN1 发送的 0x301 心跳。
- [VCU 状态发送工具](scripts/send_vcu_status_can.py):预览或发送实际任务、锁定、无人状态和 EBS 显示反馈。
- [CAN 显示发送工具](scripts/send_drivetrain_can.py):通过 python-can 发送扭矩千分和两路温度,支持预览字节、有效标志和适配器参数。
- [v2.2 显示 CAN 测试报告](docs/AMI自定义显示CAN测试报告.md):新帧烧录回读和 CAN2 数据、失效、异常帧测试。
- [联调报告](docs/SDC_BMS联调报告.md):真实 CAN1 / MCU / COM4 到 HMI 调试器的证据。
- [v2.1 双 CAN 测试报告](docs/CAN1_CAN2_v2.1测试报告.md):烧录和完整回读、CAN1 500K / CAN2 250K 数据与六个任务确认/取消测试。
- [当前固件 BIN](output/firmware/AMI_Controller.bin):STM32G0B1CBT6,v2.4,CAN1 500K / CAN2 250K,已烧录并完整回读比对;VCU 反馈测试见当前验证报告。
- [当前固件 BIN](output/firmware/AMI_Controller.bin):STM32G0B1CBT6,v2.7,CAN1 500K / CAN2 250K;2026-10-07 已烧录,16672 字节 Flash 回读与 BIN 完全一致。大小屏官方模拟器与真实 CAN1/MCU/COM6 验收通过;见 [无人状态报告](docs/无人状态显示验证报告.md) 与 [小屏报告](docs/小屏无人状态验证报告.md)。
- [此前 v2.5 BIN](output/firmware/AMI_Controller_v2.5_500k_250k.bin):保留本次修改前的心跳版本。
- [此前 v2.3 BIN](output/firmware/AMI_Controller_v2.3_500k_250k.bin):保留十五路 GPIO 映射版本。
- [此前已联调的 v2.1 BIN](output/firmware/AMI_Controller_v2.1_500k_250k.bin):CAN1 500K / CAN2 250K,保留双 CAN 分别测试的历史版本。
- [此前已联调的 v2.0 BIN](output/firmware/AMI_Controller_v2.0_500k.bin):两路均为 500K,保留历史测试版本。
- [AMI.HMI](AMI.HMI):最新版屏幕工程,打开后编译并下载到对应型号屏幕。
- [AMI_TJC8048X370_011.HMI](AMI_TJC8048X370_011.HMI):7 寸 800×480 移植版;见 [移植说明](docs/TJC8048X370移植说明.md)。
- [通讯交接文档](docs/通讯交接文档.md):可编辑协议说明,包含全部状态编号、任务帧、主页面属性及联调步骤。
- [历史屏幕接口 PDF](docs/AMI仪表通讯交接文档.pdf):保留的 v1.2 屏幕接口资料;当前 CAN 与有效性定义以 DBC 对应说明和 Markdown 交接文档为准。
- [C 发送示例](examples/ami_debug_send.c):主控更新 debug 状态的参考函数。
@@ -72,7 +76,7 @@ dash.lvbat.val=1260
上述历史证据对应 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 实现。
灰色数值表示未知或失效。原生电机控制器温度协议尚未定义;车速已按最新 SDC 双前轮标定轮速接入,采用平均值显示 km/h;电机与 MCU 温度可由自定义 0x182 显示输入设置。实际当前任务、锁定和 EBS 显示取 VCU 自定义 0x183 反馈;任务裁决与 EBS 安全输出由 VCU 实现。
许可证沿用仓库中的 [AGPL-3.0](LICENSE)。
@@ -87,3 +91,13 @@ python scripts/export_can_pdf.py
```
默认使用 Windows 黑体 `C:/Windows/Fonts/simhei.ttf`;其他环境可通过 `--font` 指定支持中文的 TrueType 字体。输出为 `output/pdf/AMI_CAN报文说明.pdf`。修改 DBC 后,需重新导出 Markdown 和 PDF。
## 2026-10-07 无人状态显示 v2.7
按 ASF 补充独立无人状态,800×480 主页面在“已锁定/已解锁”右侧显示 AS OFF、AS Ready、AS Driving、AS Finished、AS Emergency 或 Manual Driving;无效或超过 500 ms 无反馈显示灰色“无人未知”。状态来自 VCU,不从任务、锁定、EBS 或灯色推断。
`0x183 / DLC 8` 版本 2:byte3 bit3 为 AS 有效标志,byte5 为状态 0..5(按上面顺序),byte6=0,byte7=2;其他字段位置不变。例 `02 01 01 0F 00 01 00 02` 表示直线加速、已锁定、AS Ready、EBS 正常。保留位和枚举错误整帧拒绝、不续期。旧版本 1 仍接收原三项,但 AS 立即未知。屏内新增 `as_state=0..5`(6 未知),串口命令仍使用真实 FF FF FF 结尾;全局变量在切页后保留,每 5 秒重同步。需配套包含 as_state 的新屏幕工程;480×272 AMI.HMI 与 800×480 工程均已加入 as_state;小屏 AS=5 显示“有人驾驶”。完整定义见 CAN DBC 说明的“VCU 状态反馈 0x183”。
本次源码、屏幕工程和构建产物的验证以 `docs/无人状态显示验证报告.md` 为准,历史烧录和联调记录不代表本次版本已下载到实物。
2026-10-07:v2.7 已烧录并完整回读程序区 16,672 字节一致,保留 128 KB 烧录前备份;CAN1 500K→MCU RAM→COM6 实际链路 37 项通过,实际串口驱动官方 HMI 调试器新增状态 16 项通过,含触摸请求→UART→MCU→CAN 0x300。实物串口屏、CAN2、真实 VCU 和车辆动作未测试。详见 [无人状态验收报告](docs/无人状态显示验证报告.md)。