Files
AMI/README.md
T

88 lines
8.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# AMI
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 需实现此新增自定义帧,详见 [反馈协议](docs/AMI_CAN_DBC说明.md#vcu-状态反馈-0x183) 和 [验证报告](docs/VCU状态反馈测试报告.md)。
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 秒后三个数值变灰。该帧只设置显示;实际电机控制器协议由上游转换。详见 [字节布局和发送示例](docs/AMI_CAN_DBC说明.md#自定义动力显示输入-0x182)。
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 采样。详见 [映射及测试报告](docs/DEBUG十五路CAN映射测试报告.md)。
屏幕接口 1.3 的修正已保留:PD1 / Safe_S 的 d5 显示为“左电机互锁”,替换原左后悬项;删除 BSPD/TSMS 与“返回支路”框。布局绘制源码见 [debug 后初始化脚本](scripts/hmi/debug-postinit.txt),主页面反馈渲染见 [状态脚本](scripts/hmi/dash-status-render.txt)。
## 工程与交接资料
- [CAN1 DBC](AMI.dbc):500 kbit/s,12 条报文、49 个信号,含标准/扩展帧。
- [CAN2 DBC](AMI_CAN2_250k.dbc):250 kbit/s,报文布局与 CAN1 相同。
- [DBC 对应说明](docs/AMI_CAN_DBC说明.md):信号布局、枚举、字节序、样例与复现检查。
- [CAN 报文说明 PDF](output/pdf/AMI_CAN报文说明.pdf):当前 v2.4 协议的中文打印版,包含两路速率和全部 12 条报文。
- [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 反馈测试见当前验证报告。
- [此前 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):最新版屏幕工程,打开后编译并下载到对应型号屏幕。
- [通讯交接文档](docs/通讯交接文档.md):可编辑协议说明,包含全部状态编号、任务帧、主页面属性及联调步骤。
- [历史屏幕接口 PDF](docs/AMI仪表通讯交接文档.pdf):保留的 v1.2 屏幕接口资料;当前 CAN 与有效性定义以 DBC 对应说明和 Markdown 交接文档为准。
- [C 发送示例](examples/ami_debug_send.c):主控更新 debug 状态的参考函数。
- [验证说明](docs/验证说明.txt):已完成检查和实物验证范围。
- [STM32 HAL 固件](firmware/README.md):STM32G0B1CBT6、双 FDCAN、USART2 DMA 和状态灯实现。
- [SDC / BMS 协议](docs/SDC_BMS协议.md):当前 CAN ID、字节序、缩放、失效和任务回传定义。
- [旧 CAN / UART 协议](docs/CAN_UART协议.md):历史自定义 CAN 输入,当前固件不再使用。
## 最小通讯示例
主控向屏幕发送 ASCII 指令,每条末尾追加三个实际字节 `FF FF FF`,当前波特率为 `9600`:
```text
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:
```text
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](LICENSE)。
## 导出 CAN 报文 PDF
PDF 与 `docs/AMI_CAN_DBC说明.md` 使用同一份内容,按 A4 横向排版并嵌入中文字体。在仓库根目录运行:
```powershell
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。