Record v2.1 flash readback and dual-CAN hardware validation

This commit is contained in:
shenlefengnai-rgb
2026-10-03 18:14:50 +08:00
parent 9120bd0ec1
commit ceb88a90a5
92 changed files with 9319 additions and 15 deletions
+4 -3
View File
@@ -13,7 +13,8 @@ dash 顶部已加入低压电池电压 `lvbat`(两位小数),来源是 SDC
- [DBC 对应说明](docs/AMI_CAN_DBC说明.md):信号布局、枚举、字节序、样例与复现检查。
- [CAN 报文说明 PDF](output/pdf/AMI_CAN报文说明.pdf):当前 v2.1 协议的中文打印版,包含两路速率和全部 10 条报文。
- [联调报告](docs/SDC_BMS联调报告.md):真实 CAN1 / MCU / COM4 到 HMI 调试器的证据。
- [当前固件 BIN](output/firmware/AMI_Controller.bin):STM32G0B1CBT6,CAN1 500K / CAN2 250K,已编译、尚未烧录;配套源码在 firmware。
- [v2.1 双 CAN 测试报告](docs/CAN1_CAN2_v2.1测试报告.md):烧录和完整回读、CAN1 500K / CAN2 250K 数据与六个任务确认/取消测试。
- [当前固件 BIN](output/firmware/AMI_Controller.bin):STM32G0B1CBT6,CAN1 500K / CAN2 250K,已烧录并完成两路分别测试;配套源码在 firmware。
- [此前已联调的 v2.0 BIN](output/firmware/AMI_Controller_v2.0_500k.bin):两路均为 500K,保留历史测试版本。
- [AMI.HMI](AMI.HMI):最新版屏幕工程,打开后编译并下载到对应型号屏幕。
- [通讯交接文档](docs/通讯交接文档.md):可编辑协议说明,包含全部状态编号、任务帧、主页面属性及联调步骤。
@@ -52,9 +53,9 @@ dash.lvbat.val=1260
工程编译通过:0 错误、0 警告。模拟器已验证状态转换、跨页更新和 `d1` 双位置同步;任务回传此前已做模拟检查。
2026-10-03 已验证 CAN 盒 → 实物 AMI CAN1 / MCU → USART2 / COM4 → 官方 HMI 调试器的数据更新、失效与恢复。固件编译及烧录校验通过;物理串口屏和 CAN2 尚未接线实测。旧 C 示例仍是屏幕 debug 接口示例。
此前 v2.0 已验证 CAN 盒 → 实物 AMI CAN1 / MCU → USART2 / COM4 → 官方 HMI 调试器的数据更新、失效与恢复,固件编译及烧录校验通过;当时物理串口屏和 CAN2 尚未接线实测。旧 C 示例仍是屏幕 debug 接口示例。
上述实物证据对应 v2.0。v2.1 将 CAN2 改为 250 kbit/s,源码、CubeMX、两份 DBC 与位时序校验及 Release 编译已通过;新 BIN 尚未烧录,CAN2 250K 尚未实测。两路均不转发原始 CAN 帧,CAN 盒需分别设置正确速率。
上述历史证据对应 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 标定参数、SDC PD0..PD14 到具名安全信号的映射,对应显示保持无效/未知。VCU 任务裁决、执行反馈和 EBS 安全输出仍需车辆控制协议,画面 EBS 文案不能作为安全状态证明。
+2 -2
View File
@@ -11,7 +11,7 @@ CAN1 为 500 kbit/s,CAN2 为 250 kbit/s,均为 Classic CAN、87.5% 采样点
| CAN1 | 500 kbit/s | PA11 / PA12 | [AMI.dbc](../AMI.dbc) |
| CAN2 | 250 kbit/s | PB0 / PB1 | [AMI_CAN2_250k.dbc](../AMI_CAN2_250k.dbc) |
DBC 的 `Baudrate` / `AMIPort` 分别标注所属总线。每份 DBC 均含 10 条报文、33 个信号;同一份报文表适用于两路。CAN 工具必须按接入端口设置速率,导入 DBC 不一定自动改硬件速率。例如 SDC 板保持 500 kbit/s 时接 CAN1;BMS 节点配置为 250 kbit/s 时接 CAN2。
DBC 的 `Baudrate` / `AMIPort` 分别标注所属总线。每份 DBC 均含 10 条报文、33 个信号;同一份报文表适用于两路。CAN 工具必须按接入端口设置速率,导入 DBC 不一定自动改硬件速率。实际接法:SDC 500 kbit/s 接 CAN1,BMS 250 kbit/s 接 CAN2。
FDCAN 时钟 64 MHz,时钟分频为 1;NominalPrescaler 为 CAN1=8、CAN2=16,两路均使用 Sync=1、TimeSeg1=13、TimeSeg2=2、SJW=1。速率 = 64 MHz / Prescaler / (1+13+2);采样点 = (1+13)/16 = 87.5%。
@@ -193,6 +193,6 @@ python scripts/verify_dbc.py --sdc-dbc ../SDC_ACQ_DAC/SDC_ACQ_DAC.dbc
校验覆盖严格 DBC 解析(长度、信号越界与重叠)、10 个 ID 与固件宏对应、标准/扩展格式、33 个信号、发送/接收节点、SDC 周期、24 个已知报文解码、六个任务号与计数边界编码、大端偏置电流、无效温度枚举、全负温度和截短 DLC。已安装并验证 cantools 44.1.0,接口参考 [cantools 官方文档](https://cantools.readthedocs.io/en/latest/)。
上述是静态及软件编解码验证,另校验两份 DBC 的速率、相同信号布局及源码 / CubeMX 位时序一致。v2.1 的 CAN2 250 kbit/s 固件已编译,尚未烧录或实物验证。之前 v2.0 的 CAN 盒 -> 实物 AMI CAN1 / MCU -> USART2 -> COM4 -> 官方 HMI 调试器的实际更新和六个任务回传见 [联调报告](SDC_BMS联调报告.md)。物理串口屏、CAN2 接线、真实 SDC/BMS 节点和车辆执行动作尚未实测;文档生成和 DBC 解析不替代这些测试。
上述是静态及软件编解码验证,另校验两份 DBC 的速率、相同信号布局及源码 / CubeMX 位时序一致。v2.1 已完成烧录、完整 Flash 回读比对、CAN1 500K 与 CAN2 250K 到官方 HMI 调试器的实物测试,详见 [双 CAN 测试报告](CAN1_CAN2_v2.1测试报告.md)。之前 v2.0 的 CAN 盒 -> 实物 AMI CAN1 / MCU -> USART2 -> COM4 -> 官方 HMI 调试器的实际更新和六个任务回传见 [联调报告](SDC_BMS联调报告.md)。物理串口屏、真实 SDC/BMS 节点、两路同时接入和车辆执行动作尚未实测;文档生成和 DBC 解析不替代这些测试。
修改 AMI.dbc 后运行 `python scripts/export_dbc_docs.py` 更新 CAN2 DBC 和本文;固件字节布局、DBC 与此文档需同时保持一致。
+60
View File
@@ -0,0 +1,60 @@
# AMI v2.1 烧录与双 CAN 实物测试
2026-10-03,固件来源提交 `9120bd0`。实际链路为 PCAN-USB CAN 盒 -> 实物 AMI MCU -> USART2 PA2/PA3 -> CH340 COM4(9600 8N1)-> USART HMI 官方调试器。先测试 CAN1,通知用户切换接线并收到确认后,再测试 CAN2。
CAN1 按 SDC 的 500 kbit/s 使用,CAN2 按 BMS 的 250 kbit/s 使用。此次用 CAN 盒模拟源报文,未连接真实 SDC/BMS 节点或物理串口屏;未同时连接两路。
## 烧录与实际位时序
- ST-LINK SN `37FF71064E573436188C1543`;目标 ID `0x467`,128 KB Flash,供电 3.28 V。
- 从 `0x08000000` 烧录发布的 15612 字节 BIN,烧录工具返回 `Download verified successfully`。
- 另行完整回读 15612 字节,逐字节与发布 BIN 相同。
- 固件 SHA256:`143BB0CF190A17DD3F8A251BD49FEF2AF19699D873951C58CB790B35764E3212`。
- HMI SHA256:`8A37E4961F90671F04E55BA94C173AE8FBFC5E30C2A3E74A2C37148157C3D16D`。
| 端口 | 实际 NBTP | Prescaler | TimeSeg1 / TimeSeg2 | 速率 | 采样点 |
| --- | --- | --- | --- | --- | --- |
| CAN1 | `0x00070C01` | 8 | 13 / 2 | 500 kbit/s | 87.5% |
| CAN2 | `0x000F0C01` | 16 | 13 / 2 | 250 kbit/s | 87.5% |
寄存器通过运行中的 MCU SWD 读取,按 64 MHz FDCAN 时钟计算。见 [烧录与寄存器记录](evidence/2026-10-03/v2.1-can1/flash-and-bit-timing.json)、[烧录日志](evidence/2026-10-03/v2.1-can1/flash.log)、[回读日志](evidence/2026-10-03/v2.1-can1/flash-readback.log)。寄存器记录中的 CAN2 待测标志是切线前的阶段记录,后续结果见下节。
## CAN1:500K,SDC 数据与任务
发送 SDC 心跳 `0x6A0`(100 ms)、ADC `0x6A1`(500 ms)、轮频 `0x6A2`(20 ms)和 GPIO `0x6A6`。ADC 显示经过 8.20 V、12.30 V、12.68 V,停止 ADC 后独立失效变灰,恢复后转白。轮频保持原始 Hz,不换算为 km/h;GPIO 未映射成具名安全状态。
最初 CAN1 回归还额外注入 BMS 格式数据,用于检查原有共享解码路径;该模拟注入不代表真实 BMS 工作于 500K。按用户说明,BMS 最终在 CAN2 250K 单独验证。
六个任务按钮分别确认和取消。每个确认均收到一条标准 `0x300 / DLC 8`,任务号为 1..6、序号为 0..5;六个取消均未出现任务请求。任务测试期间 CAN1 持续有有效输入。
五组 MCU 状态快照符合预期,CAN/UART 接收错误计数均为 0,PCAN 状态为 `0x0`。见 [状态核对](evidence/2026-10-03/v2.1-can1/sdc_bms_verified.json)、[发送记录](evidence/2026-10-03/v2.1-can1/sdc_bms_visual_results.json)、[任务回传](evidence/2026-10-03/v2.1-can1/sdc_bms_function_task_results.json)。
![CAN1 ADC 显示](evidence/2026-10-03/v2.1-can1/sdc_bms_recovered.png)
## CAN2:250K,仅 BMS 数据与任务
CAN2 测试仅发送 BMS 状态、温度以及故意构造的无效帧,没有发送 SDC `0x6A0..0x6A6`。MCU 快照确认 CAN1 接收时间为 0、CAN2 接收时间有效,数据来自 CAN2。
| 阶段 | BMS 输入 | HMI / MCU 结果 |
| --- | --- | --- |
| 标准帧 | `0x140`:400.0 V、+12.3 A;`0x156` 八路温度含一条 FF | 显示 400 V、12 A、有效最高温度 40 ℃ |
| 扩展帧 | `0x186040F3`:421.1 V、-69.5 A;`0x186140F3` 最高温度 23 ℃ | 显示 421 V、-70 A、23 ℃ |
| 全部温度 FF | 状态帧继续有效,八路温度均 FF | 历史温度保留并变灰,电压/电流仍有效 |
| 停止 BMS | 等待 3 秒 | 电压、电流和温度均失效变灰 |
| 恢复 | 54.5 V、0 A、最高有效温度 27 ℃ | 显示 55 V、0 A、27 ℃并转白 |
CAN2 单独测试前复位 MCU,且未注入 SDC ADC,因此低压电池为 0.00 V 灰色,ADC 原始值为 0。扩展 BMS 帧携带的低压字段没有覆盖该值。
错误 DLC、`0x140` 的错误扩展格式及旧 `0x180` 没有覆盖有效读数。六个任务确认均收到正确标准 `0x300 / 8`,六个取消均无任务请求,序号依次 0..5。CAN/UART 接收错误均为 0,PCAN 状态为 `0x0`。
初次切线后的 HMI 调试窗口滞留旧画面且没有发出任务。MCU 快照已正确解码 BMS;关闭该窗口后,直接读取 COM4 得到正确的 ASCII 指令和真实 `FF FF FF`,直接发送串口任务帧也收到 CAN2 回传。重新打开 HMI 调试器并连接 COM4 后,以上五阶段显示和六个按钮确认/取消全部复测通过。无需修改固件。
见 [状态核对](evidence/2026-10-03/v2.1-can2/bms_verified.json)、[发送记录](evidence/2026-10-03/v2.1-can2/bms_visual_results.json)、[任务回传](evidence/2026-10-03/v2.1-can2/bms_function_task_results.json)、[串口诊断](evidence/2026-10-03/v2.1-can2/uart-diagnostic.json)。
![CAN2 扩展帧显示](evidence/2026-10-03/v2.1-can2/bms_extended.png)
## 测试范围
已完成烧录校验、完整回读、两路分别接线的实际 CAN 收发、MCU 解码、串口通信、官方 HMI 调试器显示和任务回传。共十组状态快照、十二个任务确认、十二个取消通过。
物理串口屏、真实 SDC/BMS 节点、两路同时接入、LED 极性、车辆动作及安全互锁未在本次测试中验证。跨页面测试没有在本次重复;此前 v2.0 的结果见历史联调报告。任务回传证明请求已发出,不能作为 VCU 执行成功的证明。
+1 -1
View File
@@ -2,7 +2,7 @@
版本 2.1,2026-10-03。CAN1 为 500 kbit/s,CAN2 为 250 kbit/s;两路均为 Classic CAN、87.5% 采样点,接收 ID、解码和任务发送功能相同,不转发原始帧。CAN1 使用 [AMI.dbc](../AMI.dbc),CAN2 使用 [AMI_CAN2_250k.dbc](../AMI_CAN2_250k.dbc)。当前固件不再接收旧 `0x180 / 0x181 / 0x280` 数据接口。
v2.1 已通过源码 / CubeMX 位时序一致性检查及 Release 编译,尚未烧录或验证 CAN2 250K。本文后面的实物联调证据属于两路均为 500K 的 v2.0。
v2.1 已通过源码 / CubeMX 位时序一致性检查及 Release 编译,已烧录并完整回读比对;CAN1 500K(SDC)与 CAN2 250K(BMS)分别通过数据更新、失效恢复和六个任务确认/取消测试,见 [双 CAN 测试报告](CAN1_CAN2_v2.1测试报告.md)。本文后面旧的实物联调引用属于两路均为 500K 的 v2.0。
来源:`SDC_ACQ_DAC/SDC_ACQ_DAC.dbc` VERSION 1.1;[BmsMonitor-CANTest](https://git.acetaffy.ltd/acetaffy/BmsMonitor-CANTest) 的 `BmsMonitor.App/Protocol/BmsProtocolParser.cs`,核对提交 `e65c95203d1689df05343775982d7e85bd782646`,本机核对副本保存在 `tmp/BmsMonitor-CANTest`(不提交);远端来源使用上述仓库及提交号定位。
+1 -1
View File
@@ -2,7 +2,7 @@
2026-10-03,测试链路:PCAN-USB(500 kbit/s)→ 实物 AMI CAN1 → STM32G0B1 MCU → USART2 PA2/PA3 → CH340 COM4(9600 8N1)→ USART HMI 官方调试器。使用 CAN 盒模拟 SDC / BMS 报文,未接真实 SDC / BMS 节点或物理串口屏。
本文记录 v2.0 的实物测试。后续 v2.1 将 CAN2 改为 250K;新版本尚未烧录,本文不作为 CAN2 250K 验证依据。
本文记录 v2.0 的实物测试。后续 v2.1 将 CAN2 改为 250K,并已完成烧录及两路分别验证,见 [v2.1 双 CAN 测试报告](CAN1_CAN2_v2.1测试报告.md)。本文仍仅作为 v2.0 历史证据。
## 实际发送与显示
@@ -0,0 +1,27 @@
-------------------------------------------------------------------
STM32CubeProgrammer v2.20.0
-------------------------------------------------------------------
ST-LINK SN : 37FF71064E573436188C1543
ST-LINK FW : V2J47S7
Board : --
Voltage : 3.28V
SWD freq : 950 KHz
Connect mode: Hot Plug
Reset mode : Software reset
Device ID : 0x467
Revision ID : Rev Z
Device name : STM32G0B0xx/B1xx/C1xx
Flash size : 128 KBytes
Device type : MCU
Device CPU : Cortex-M0+
BL Version : 0x92
Reading 32-bit memory content
Size : 4 Bytes
Address: : 0x4000641C
0x4000641C : 00070C01
@@ -0,0 +1,27 @@
-------------------------------------------------------------------
STM32CubeProgrammer v2.20.0
-------------------------------------------------------------------
ST-LINK SN : 37FF71064E573436188C1543
ST-LINK FW : V2J47S7
Board : --
Voltage : 3.28V
SWD freq : 950 KHz
Connect mode: Hot Plug
Reset mode : Software reset
Device ID : 0x467
Revision ID : Rev Z
Device name : STM32G0B0xx/B1xx/C1xx
Flash size : 128 KBytes
Device type : MCU
Device CPU : Cortex-M0+
BL Version : 0x92
Reading 32-bit memory content
Size : 4 Bytes
Address: : 0x4000681C
0x4000681C : 000F0C01
@@ -0,0 +1,21 @@
{
"flash_readback_matches_published_bin": true,
"firmware_sha256": "143bb0cf190a17dd3f8a251bd49fef2af19699d873951c58cb790b35764e3212",
"live_register_bit_timing": {
"CAN1": {
"nbtp": "0x70c01",
"prescaler": 8,
"seg1": 13,
"seg2": 2,
"bitrate": 500000
},
"CAN2": {
"nbtp": "0xf0c01",
"prescaler": 16,
"seg1": 13,
"seg2": 2,
"bitrate": 250000
}
},
"can2_physical_test": "pending user cable switch"
}
@@ -0,0 +1,29 @@
-------------------------------------------------------------------
STM32CubeProgrammer v2.20.0
-------------------------------------------------------------------
ST-LINK SN : 37FF71064E573436188C1543
ST-LINK FW : V2J47S7
Board : --
Voltage : 3.28V
SWD freq : 950 KHz
Connect mode: Hot Plug
Reset mode : Software reset
Device ID : 0x467
Revision ID : Rev Z
Device name : STM32G0B0xx/B1xx/C1xx
Flash size : 128 KBytes
Device type : MCU
Device CPU : Cortex-M0+
BL Version : 0x92
UPLOADING ...
File : D:\YMR\AMI\tmp\can1-v21-test-20261003\flash-readback.bin
Size : 15612 Bytes
Address: : 0x8000000
Read progress:
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±± 0%␍ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ 100%
Data read successfully
Time elapsed during read operation is: 00:00:00.250
@@ -0,0 +1,56 @@
-------------------------------------------------------------------
STM32CubeProgrammer v2.20.0
-------------------------------------------------------------------
ST-LINK SN : 37FF71064E573436188C1543
ST-LINK FW : V2J47S7
Board : --
Voltage : 3.28V
SWD freq : 950 KHz
Connect mode: Under Reset
Reset mode : Hardware reset
Device ID : 0x467
Revision ID : Rev Z
Device name : STM32G0B0xx/B1xx/C1xx
Flash size : 128 KBytes
Device type : MCU
Device CPU : Cortex-M0+
BL Version : 0x92
Opening and parsing file: AMI_Controller.bin
Memory Programming ...
File : AMI_Controller.bin
Size : 15.25 KB
Address : 0x08000000
Erasing memory corresponding to segment 0:
Erasing internal memory sectors [0 7]
Download in Progress:
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±± 0%␍ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ 100%
File download complete
Time elapsed during download operation: 00:00:00.758
Verifying...
Read progress:
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±± 50%␍ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ 100%
Time elapsed during verifying operation: 00:00:00.248
Download verified successfully
MCU Reset
Software reset is performed
@@ -0,0 +1,44 @@
{
"can1-nbtp.log": "cab2516dc364f705b4d76aebefaa6c74c2613508df26602c7bceb3f0d28bdc3f",
"can2-nbtp.log": "5a4ab1de646f825fb1f10de307c835e1d5bdaeba26b203bf39188cb9a4307684",
"flash-and-bit-timing.json": "0d44eecfe1b0fd94e74c611e2fd802178ee2ebb579d9cd3b290e8f3e00dda08b",
"flash-readback.log": "6aaed1d5125aa28359c203255b0ddd2d7eff577717e35b436e0877c2599f491e",
"flash.log": "966a1e3888cffd115895080a54434dbcaa523179d48d0f7a3e6b8589889487c3",
"sdc_bms_all_temp_invalid.png": "ef3051c2834412ad02b49d2187dce8277968e1271c9ee5b0661e479d08753681",
"sdc_bms_all_temp_invalid_ram.log": "c16136311253000dc7a6ae60cf2e0ee17e6921dc1f5a5b5ec4169488dd56672d",
"sdc_bms_extended.png": "3e4c29fc5d7b0fe5e76fbe1beb441fe0f3d378ac033954262f5824dba3e4944b",
"sdc_bms_extended_ram.log": "def817a559b92a8d048023a5b31c19b15564f44b3b2bef24a4c0325e8a6c1d1b",
"sdc_bms_function_task1_cancel_page.png": "6be8c52cbab2278098b430b12e58c167c5f19e4ee7f984d179429a63078353e8",
"sdc_bms_function_task1_cancel_return.png": "d6adc27c1a3b1d830652d8916b0a32882254dffe5642105d6394ff2103616d4e",
"sdc_bms_function_task1_confirm_page.png": "6be8c52cbab2278098b430b12e58c167c5f19e4ee7f984d179429a63078353e8",
"sdc_bms_function_task1_confirm_return.png": "579c3e3ff99bdb6994ace442343225670e0505242b3032ee380194db201bec86",
"sdc_bms_function_task2_cancel_page.png": "c64b41ecedc90f6f218c509c6adb104c8c4c0de515294d709062d697618ba72f",
"sdc_bms_function_task2_cancel_return.png": "579c3e3ff99bdb6994ace442343225670e0505242b3032ee380194db201bec86",
"sdc_bms_function_task2_confirm_page.png": "c64b41ecedc90f6f218c509c6adb104c8c4c0de515294d709062d697618ba72f",
"sdc_bms_function_task2_confirm_return.png": "61bbf9c62868f3c1ce485fcd8484465dedd23f166c3fbe2bdfe7ff866dcce82f",
"sdc_bms_function_task3_cancel_page.png": "bade21caca05a58e1f7016b41300bcc79c58b3f035e351c1fb24f2f53112826f",
"sdc_bms_function_task3_cancel_return.png": "61bbf9c62868f3c1ce485fcd8484465dedd23f166c3fbe2bdfe7ff866dcce82f",
"sdc_bms_function_task3_confirm_page.png": "bade21caca05a58e1f7016b41300bcc79c58b3f035e351c1fb24f2f53112826f",
"sdc_bms_function_task3_confirm_return.png": "818a8ea91993f8c44c33b763bb544664376097e5dd883bd9792adf04eb4489e0",
"sdc_bms_function_task4_cancel_page.png": "3743370404cf0a204fb06f114953b6599d764e27b0e8ba5e803d877339ab40b9",
"sdc_bms_function_task4_cancel_return.png": "818a8ea91993f8c44c33b763bb544664376097e5dd883bd9792adf04eb4489e0",
"sdc_bms_function_task4_confirm_page.png": "3743370404cf0a204fb06f114953b6599d764e27b0e8ba5e803d877339ab40b9",
"sdc_bms_function_task4_confirm_return.png": "0900115fede7c64aa750f0ac9f52fb3b592dd3f09be339c5f628befcc9dad26e",
"sdc_bms_function_task5_cancel_page.png": "585a9017870d7959d723c59a6203b5a67759789aee59c1398e670c7834a52ee0",
"sdc_bms_function_task5_cancel_return.png": "0900115fede7c64aa750f0ac9f52fb3b592dd3f09be339c5f628befcc9dad26e",
"sdc_bms_function_task5_confirm_page.png": "585a9017870d7959d723c59a6203b5a67759789aee59c1398e670c7834a52ee0",
"sdc_bms_function_task5_confirm_return.png": "abb81c9386f3722e1afe9e556ab6972db84a515ef77ac0e8689d57e8ec31e584",
"sdc_bms_function_task6_cancel_page.png": "9b2e124bae41df48015b19bd8ac594a4b20a9be52f2dad0c658b0d32f3efe635",
"sdc_bms_function_task6_cancel_return.png": "abb81c9386f3722e1afe9e556ab6972db84a515ef77ac0e8689d57e8ec31e584",
"sdc_bms_function_task6_confirm_page.png": "9b2e124bae41df48015b19bd8ac594a4b20a9be52f2dad0c658b0d32f3efe635",
"sdc_bms_function_task6_confirm_return.png": "e588b27d144c69ab9e01d92c6f1a0cad2f2d208a18fc910310a10e036e0dda36",
"sdc_bms_function_task_results.json": "9acf95d44d4bc98d8b8ed07fb2eb74732b68e70b2ffe114cd341aca94d4f9969",
"sdc_bms_recovered.png": "21db9c564906dd60e45714d89b955930182d83a76e86016c122b2e360418e772",
"sdc_bms_recovered_ram.log": "aee26eb9184314dd6e4264b8b4232ebf9c75f5c0082d34a5b9a326ae223dfc81",
"sdc_bms_source_timeout.png": "03cfab479d87f841aa5f1f8ab8460bf0e367e49ae7b79cd663395f2b3dc43257",
"sdc_bms_source_timeout_ram.log": "c975ad82a7f9b3d7b30be7d0febb7b531e7e15ab95467fecba37cdbc28c950a1",
"sdc_bms_standard.png": "049834be56d482a813202a4491e6289b8e416df8486c2b232438192f2400ab25",
"sdc_bms_standard_ram.log": "456496b5b62071765adda77c9fd3fccd155f405b2a94c5bfa80599badd5b78a0",
"sdc_bms_verified.json": "79d488a541d596a6a8cf0429cf07bf6e93821a97870ae2e3fe59d445aa629646",
"sdc_bms_visual_results.json": "cc6ee8241f847be6273b95c733f5e93b54dde38d39444cfb0131b6920cd03a1f"
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

@@ -0,0 +1,32 @@
-------------------------------------------------------------------
STM32CubeProgrammer v2.20.0
-------------------------------------------------------------------
ST-LINK SN : 37FF71064E573436188C1543
ST-LINK FW : V2J47S7
Board : --
Voltage : 3.28V
SWD freq : 950 KHz
Connect mode: Hot Plug
Reset mode : Software reset
Device ID : 0x467
Revision ID : Rev Z
Device name : STM32G0B0xx/B1xx/C1xx
Flash size : 128 KBytes
Device type : MCU
Device CPU : Cortex-M0+
BL Version : 0x92
Reading 32-bit memory content
Size : 128 Bytes
Address: : 0x200002C8
0x200002C8 : 00000000 00000000 00000000 0000261A
0x200002D8 : 00000000 FFFFFD49 00011073 00000064
0x200002E8 : 55AA7FFF 00640032 00C80096 0000300C
0x200002F8 : 0000256B 000025D4 00002437 000025D4
0x20000308 : 000025D4 00000000 00000000 000001A5
0x20000318 : 00000000 FFFFFFBA 00000000 00000000
0x20000328 : 00000017 000004CE 0000008A 00000000
0x20000338 : 00000000 00000000 00000000 2637AB02
Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

@@ -0,0 +1,32 @@
-------------------------------------------------------------------
STM32CubeProgrammer v2.20.0
-------------------------------------------------------------------
ST-LINK SN : 37FF71064E573436188C1543
ST-LINK FW : V2J47S7
Board : --
Voltage : 3.28V
SWD freq : 950 KHz
Connect mode: Hot Plug
Reset mode : Software reset
Device ID : 0x467
Revision ID : Rev Z
Device name : STM32G0B0xx/B1xx/C1xx
Flash size : 128 KBytes
Device type : MCU
Device CPU : Cortex-M0+
BL Version : 0x92
Reading 32-bit memory content
Size : 128 Bytes
Address: : 0x200002C8
0x200002C8 : 00000000 00000000 00000000 00001949
0x200002D8 : 00000000 FFFFFD49 00011073 00000064
0x200002E8 : 55AA7FFF 00640032 00C80096 0000300C
0x200002F8 : 0000189A 00001906 00001767 00001906
0x20000308 : 00001906 00000000 00000000 000001A5
0x20000318 : 00000000 FFFFFFBA 00000000 00000000
0x20000328 : 00000017 000004CE 000000CA 00000000
0x20000338 : 00000000 00000000 00000000 2637AB02
Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

@@ -0,0 +1,175 @@
{
"results": [
{
"task": 1,
"cancel_no_can_request": true,
"confirm_can_request_correct": true,
"cancel_frames": [],
"confirm_frames": [
{
"time_s": 4.276990900048986,
"id": 768,
"dlc": 8,
"extended": false,
"data": "01 01 00 01 61 0f 00 00"
}
],
"screenshots": [
"D:\\YMR\\AMI\\tmp\\can1-v21-test-20261003\\sdc_bms_function_task1_cancel_page.png",
"D:\\YMR\\AMI\\tmp\\can1-v21-test-20261003\\sdc_bms_function_task1_cancel_return.png",
"D:\\YMR\\AMI\\tmp\\can1-v21-test-20261003\\sdc_bms_function_task1_confirm_page.png",
"D:\\YMR\\AMI\\tmp\\can1-v21-test-20261003\\sdc_bms_function_task1_confirm_return.png"
]
},
{
"task": 2,
"cancel_no_can_request": true,
"confirm_can_request_correct": true,
"cancel_frames": [],
"confirm_frames": [
{
"time_s": 8.501849899999797,
"id": 768,
"dlc": 8,
"extended": false,
"data": "01 02 01 01 dc 1f 00 00"
}
],
"screenshots": [
"D:\\YMR\\AMI\\tmp\\can1-v21-test-20261003\\sdc_bms_function_task2_cancel_page.png",
"D:\\YMR\\AMI\\tmp\\can1-v21-test-20261003\\sdc_bms_function_task2_cancel_return.png",
"D:\\YMR\\AMI\\tmp\\can1-v21-test-20261003\\sdc_bms_function_task2_confirm_page.png",
"D:\\YMR\\AMI\\tmp\\can1-v21-test-20261003\\sdc_bms_function_task2_confirm_return.png"
]
},
{
"task": 3,
"cancel_no_can_request": true,
"confirm_can_request_correct": true,
"cancel_frames": [],
"confirm_frames": [
{
"time_s": 12.732907199999318,
"id": 768,
"dlc": 8,
"extended": false,
"data": "01 03 02 01 6d 30 00 00"
}
],
"screenshots": [
"D:\\YMR\\AMI\\tmp\\can1-v21-test-20261003\\sdc_bms_function_task3_cancel_page.png",
"D:\\YMR\\AMI\\tmp\\can1-v21-test-20261003\\sdc_bms_function_task3_cancel_return.png",
"D:\\YMR\\AMI\\tmp\\can1-v21-test-20261003\\sdc_bms_function_task3_confirm_page.png",
"D:\\YMR\\AMI\\tmp\\can1-v21-test-20261003\\sdc_bms_function_task3_confirm_return.png"
]
},
{
"task": 4,
"cancel_no_can_request": true,
"confirm_can_request_correct": true,
"cancel_frames": [],
"confirm_frames": [
{
"time_s": 16.966246200026944,
"id": 768,
"dlc": 8,
"extended": false,
"data": "01 04 03 01 e7 40 00 00"
}
],
"screenshots": [
"D:\\YMR\\AMI\\tmp\\can1-v21-test-20261003\\sdc_bms_function_task4_cancel_page.png",
"D:\\YMR\\AMI\\tmp\\can1-v21-test-20261003\\sdc_bms_function_task4_cancel_return.png",
"D:\\YMR\\AMI\\tmp\\can1-v21-test-20261003\\sdc_bms_function_task4_confirm_page.png",
"D:\\YMR\\AMI\\tmp\\can1-v21-test-20261003\\sdc_bms_function_task4_confirm_return.png"
]
},
{
"task": 5,
"cancel_no_can_request": true,
"confirm_can_request_correct": true,
"cancel_frames": [],
"confirm_frames": [
{
"time_s": 21.204890400054865,
"id": 768,
"dlc": 8,
"extended": false,
"data": "01 05 04 01 76 51 00 00"
}
],
"screenshots": [
"D:\\YMR\\AMI\\tmp\\can1-v21-test-20261003\\sdc_bms_function_task5_cancel_page.png",
"D:\\YMR\\AMI\\tmp\\can1-v21-test-20261003\\sdc_bms_function_task5_cancel_return.png",
"D:\\YMR\\AMI\\tmp\\can1-v21-test-20261003\\sdc_bms_function_task5_confirm_page.png",
"D:\\YMR\\AMI\\tmp\\can1-v21-test-20261003\\sdc_bms_function_task5_confirm_return.png"
]
},
{
"task": 6,
"cancel_no_can_request": true,
"confirm_can_request_correct": true,
"cancel_frames": [],
"confirm_frames": [
{
"time_s": 25.447075200034305,
"id": 768,
"dlc": 8,
"extended": false,
"data": "01 06 05 01 05 62 00 00"
}
],
"screenshots": [
"D:\\YMR\\AMI\\tmp\\can1-v21-test-20261003\\sdc_bms_function_task6_cancel_page.png",
"D:\\YMR\\AMI\\tmp\\can1-v21-test-20261003\\sdc_bms_function_task6_cancel_return.png",
"D:\\YMR\\AMI\\tmp\\can1-v21-test-20261003\\sdc_bms_function_task6_confirm_page.png",
"D:\\YMR\\AMI\\tmp\\can1-v21-test-20261003\\sdc_bms_function_task6_confirm_return.png"
]
}
],
"rx": [
{
"time_s": 4.276990900048986,
"id": 768,
"dlc": 8,
"extended": false,
"data": "01 01 00 01 61 0f 00 00"
},
{
"time_s": 8.501849899999797,
"id": 768,
"dlc": 8,
"extended": false,
"data": "01 02 01 01 dc 1f 00 00"
},
{
"time_s": 12.732907199999318,
"id": 768,
"dlc": 8,
"extended": false,
"data": "01 03 02 01 6d 30 00 00"
},
{
"time_s": 16.966246200026944,
"id": 768,
"dlc": 8,
"extended": false,
"data": "01 04 03 01 e7 40 00 00"
},
{
"time_s": 21.204890400054865,
"id": 768,
"dlc": 8,
"extended": false,
"data": "01 05 04 01 76 51 00 00"
},
{
"time_s": 25.447075200034305,
"id": 768,
"dlc": 8,
"extended": false,
"data": "01 06 05 01 05 62 00 00"
}
],
"pcan_status": "0x0"
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

@@ -0,0 +1,32 @@
-------------------------------------------------------------------
STM32CubeProgrammer v2.20.0
-------------------------------------------------------------------
ST-LINK SN : 37FF71064E573436188C1543
ST-LINK FW : V2J47S7
Board : --
Voltage : 3.28V
SWD freq : 950 KHz
Connect mode: Hot Plug
Reset mode : Software reset
Device ID : 0x467
Revision ID : Rev Z
Device name : STM32G0B0xx/B1xx/C1xx
Flash size : 128 KBytes
Device type : MCU
Device CPU : Cortex-M0+
BL Version : 0x92
Reading 32-bit memory content
Size : 128 Bytes
Address: : 0x200002C8
0x200002C8 : 00000000 00000000 00000000 00003FBC
0x200002D8 : 00000000 00000000 00010221 00000064
0x200002E8 : 55AA7FFF 00640032 00C80096 00003188
0x200002F8 : 00003F0F 00003F7F 00003DD9 00003F7E
0x20000308 : 00003F7F 00000000 00000000 00000037
0x20000318 : 00000000 00000000 00000000 00000000
0x20000328 : 0000001B 000004F4 000000CA 00000000
0x20000338 : 00000000 00000000 00000000 2637AB02
Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

@@ -0,0 +1,32 @@
-------------------------------------------------------------------
STM32CubeProgrammer v2.20.0
-------------------------------------------------------------------
ST-LINK SN : 37FF71064E573436188C1543
ST-LINK FW : V2J47S7
Board : --
Voltage : 3.28V
SWD freq : 950 KHz
Connect mode: Hot Plug
Reset mode : Software reset
Device ID : 0x467
Revision ID : Rev Z
Device name : STM32G0B0xx/B1xx/C1xx
Flash size : 128 KBytes
Device type : MCU
Device CPU : Cortex-M0+
BL Version : 0x92
Reading 32-bit memory content
Size : 128 Bytes
Address: : 0x200002C8
0x200002C8 : 00000000 00000000 00000000 0000329A
0x200002D8 : 00000000 FFFFFD49 00011073 00000064
0x200002E8 : 55AA7FFF 00640032 00C80096 0000300C
0x200002F8 : 0000256B 000025D4 00002437 0000329A
0x20000308 : 000025D4 00000000 00000000 000001A5
0x20000318 : 00000000 FFFFFFBA 00000000 00000000
0x20000328 : 00000017 000004CE 00000000 00000000
0x20000338 : 00000000 00000000 00000000 2637AB02
Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

@@ -0,0 +1,32 @@
-------------------------------------------------------------------
STM32CubeProgrammer v2.20.0
-------------------------------------------------------------------
ST-LINK SN : 37FF71064E573436188C1543
ST-LINK FW : V2J47S7
Board : --
Voltage : 3.28V
SWD freq : 950 KHz
Connect mode: Hot Plug
Reset mode : Software reset
Device ID : 0x467
Revision ID : Rev Z
Device name : STM32G0B0xx/B1xx/C1xx
Flash size : 128 KBytes
Device type : MCU
Device CPU : Cortex-M0+
BL Version : 0x92
Reading 32-bit memory content
Size : 128 Bytes
Address: : 0x200002C8
0x200002C8 : 00000000 00000000 00000000 00000BF1
0x200002D8 : 00000000 0000007B 00010FA0 00000064
0x200002E8 : 55AA7FFF 00640032 00C80096 00002008
0x200002F8 : 00000B36 00000BA6 00000A02 00000BA6
0x20000308 : 00000BA6 00000000 00000000 00000190
0x20000318 : 00000000 0000000C 00000000 00000000
0x20000328 : 00000028 00000334 000000CA 00000000
0x20000338 : 00000000 00000000 00000000 2637AB02
@@ -0,0 +1,104 @@
{
"real_mcu_snapshot_checks": [
{
"stage": "standard",
"values": [
0,
400,
0,
12,
0,
0,
40,
820
],
"valid_mask": "0xca",
"adc_mv": 8200,
"hv_tenths": 4000,
"current_tenths": 123,
"pass": true
},
{
"stage": "extended",
"values": [
0,
421,
0,
-70,
0,
0,
23,
1230
],
"valid_mask": "0xca",
"adc_mv": 12300,
"hv_tenths": 4211,
"current_tenths": -695,
"pass": true
},
{
"stage": "all_temp_invalid",
"values": [
0,
421,
0,
-70,
0,
0,
23,
1230
],
"valid_mask": "0x8a",
"adc_mv": 12300,
"hv_tenths": 4211,
"current_tenths": -695,
"pass": true
},
{
"stage": "source_timeout",
"values": [
0,
421,
0,
-70,
0,
0,
23,
1230
],
"valid_mask": "0x0",
"adc_mv": 12300,
"hv_tenths": 4211,
"current_tenths": -695,
"pass": true
},
{
"stage": "recovered",
"values": [
0,
55,
0,
0,
0,
0,
27,
1268
],
"valid_mask": "0xca",
"adc_mv": 12680,
"hv_tenths": 545,
"current_tenths": 0,
"pass": true
}
],
"task_confirm_pass": 6,
"task_cancel_pass": 6,
"pcan_status": "0x0",
"firmware_sha256": "143bb0cf190a17dd3f8a251bd49fef2af19699d873951c58cb790b35764e3212",
"hmi_sha256": "8a37e4961f90671f04e55ba94c173ae8fbfc5e30c2a3e74a2c37148157c3d16d",
"visual_review": "Inspected five HMI stages: standard, extended, invalid, timeout, recovery; six task confirmation returns inspected. Cross-page test not repeated in this run.",
"bus": "CAN1",
"bitrate": 500000,
"firmware_version": "v2.1",
"next_test": "CAN2 250000 bit/s after user cable switch"
}
File diff suppressed because it is too large Load Diff
Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

@@ -0,0 +1,32 @@
-------------------------------------------------------------------
STM32CubeProgrammer v2.20.0
-------------------------------------------------------------------
ST-LINK SN : 37FF71064E573436188C1543
ST-LINK FW : V2J47S7
Board : --
Voltage : 3.28V
SWD freq : 950 KHz
Connect mode: Hot Plug
Reset mode : Software reset
Device ID : 0x467
Revision ID : Rev Z
Device name : STM32G0B0xx/B1xx/C1xx
Flash size : 128 KBytes
Device type : MCU
Device CPU : Cortex-M0+
BL Version : 0x92
Reading 32-bit memory content
Size : 128 Bytes
Address: : 0x200002C8
0x200002C8 : 00000000 00000000 00000000 00000000
0x200002D8 : 000025D8 FFFFFD49 00001073 00000000
0x200002E8 : 00000000 00000000 00000000 00000000
0x200002F8 : 00002567 000025D8 00000000 00000000
0x20000308 : 000025D8 00000000 00000000 000001A5
0x20000318 : 00000000 FFFFFFBA 00000000 00000000
0x20000328 : 00000017 00000000 0000000A 00000000
0x20000338 : 00000000 00000000 00000000 2637AB02
Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

@@ -0,0 +1,32 @@
-------------------------------------------------------------------
STM32CubeProgrammer v2.20.0
-------------------------------------------------------------------
ST-LINK SN : 37FF71064E573436188C1543
ST-LINK FW : V2J47S7
Board : --
Voltage : 3.28V
SWD freq : 950 KHz
Connect mode: Hot Plug
Reset mode : Software reset
Device ID : 0x467
Revision ID : Rev Z
Device name : STM32G0B0xx/B1xx/C1xx
Flash size : 128 KBytes
Device type : MCU
Device CPU : Cortex-M0+
BL Version : 0x92
Reading 32-bit memory content
Size : 128 Bytes
Address: : 0x200002C8
0x200002C8 : 00000000 00000000 00000000 00000000
0x200002D8 : 0000190F FFFFFD49 00001073 00000000
0x200002E8 : 00000000 00000000 00000000 00000000
0x200002F8 : 000018A2 0000190F 00000000 00000000
0x20000308 : 0000190F 00000000 00000000 000001A5
0x20000318 : 00000000 FFFFFFBA 00000000 00000000
0x20000328 : 00000017 00000000 0000004A 00000000
0x20000338 : 00000000 00000000 00000000 2637AB02
Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

@@ -0,0 +1,175 @@
{
"results": [
{
"task": 1,
"cancel_no_can_request": true,
"confirm_can_request_correct": true,
"cancel_frames": [],
"confirm_frames": [
{
"time_s": 4.2668663000222296,
"id": 768,
"dlc": 8,
"extended": false,
"data": "01 01 00 01 53 0f 00 00"
}
],
"screenshots": [
"D:\\YMR\\AMI\\tmp\\can2-v21-bms-test-20261003\\bms_function_task1_cancel_page.png",
"D:\\YMR\\AMI\\tmp\\can2-v21-bms-test-20261003\\bms_function_task1_cancel_return.png",
"D:\\YMR\\AMI\\tmp\\can2-v21-bms-test-20261003\\bms_function_task1_confirm_page.png",
"D:\\YMR\\AMI\\tmp\\can2-v21-bms-test-20261003\\bms_function_task1_confirm_return.png"
]
},
{
"task": 2,
"cancel_no_can_request": true,
"confirm_can_request_correct": true,
"cancel_frames": [],
"confirm_frames": [
{
"time_s": 8.50375020003412,
"id": 768,
"dlc": 8,
"extended": false,
"data": "01 02 01 01 df 1f 00 00"
}
],
"screenshots": [
"D:\\YMR\\AMI\\tmp\\can2-v21-bms-test-20261003\\bms_function_task2_cancel_page.png",
"D:\\YMR\\AMI\\tmp\\can2-v21-bms-test-20261003\\bms_function_task2_cancel_return.png",
"D:\\YMR\\AMI\\tmp\\can2-v21-bms-test-20261003\\bms_function_task2_confirm_page.png",
"D:\\YMR\\AMI\\tmp\\can2-v21-bms-test-20261003\\bms_function_task2_confirm_return.png"
]
},
{
"task": 3,
"cancel_no_can_request": true,
"confirm_can_request_correct": true,
"cancel_frames": [],
"confirm_frames": [
{
"time_s": 12.753520800033584,
"id": 768,
"dlc": 8,
"extended": false,
"data": "01 03 02 01 78 30 00 00"
}
],
"screenshots": [
"D:\\YMR\\AMI\\tmp\\can2-v21-bms-test-20261003\\bms_function_task3_cancel_page.png",
"D:\\YMR\\AMI\\tmp\\can2-v21-bms-test-20261003\\bms_function_task3_cancel_return.png",
"D:\\YMR\\AMI\\tmp\\can2-v21-bms-test-20261003\\bms_function_task3_confirm_page.png",
"D:\\YMR\\AMI\\tmp\\can2-v21-bms-test-20261003\\bms_function_task3_confirm_return.png"
]
},
{
"task": 4,
"cancel_no_can_request": true,
"confirm_can_request_correct": true,
"cancel_frames": [],
"confirm_frames": [
{
"time_s": 17.00549889996182,
"id": 768,
"dlc": 8,
"extended": false,
"data": "01 04 03 01 15 41 00 00"
}
],
"screenshots": [
"D:\\YMR\\AMI\\tmp\\can2-v21-bms-test-20261003\\bms_function_task4_cancel_page.png",
"D:\\YMR\\AMI\\tmp\\can2-v21-bms-test-20261003\\bms_function_task4_cancel_return.png",
"D:\\YMR\\AMI\\tmp\\can2-v21-bms-test-20261003\\bms_function_task4_confirm_page.png",
"D:\\YMR\\AMI\\tmp\\can2-v21-bms-test-20261003\\bms_function_task4_confirm_return.png"
]
},
{
"task": 5,
"cancel_no_can_request": true,
"confirm_can_request_correct": true,
"cancel_frames": [],
"confirm_frames": [
{
"time_s": 21.254094199975953,
"id": 768,
"dlc": 8,
"extended": false,
"data": "01 05 04 01 9f 51 00 00"
}
],
"screenshots": [
"D:\\YMR\\AMI\\tmp\\can2-v21-bms-test-20261003\\bms_function_task5_cancel_page.png",
"D:\\YMR\\AMI\\tmp\\can2-v21-bms-test-20261003\\bms_function_task5_cancel_return.png",
"D:\\YMR\\AMI\\tmp\\can2-v21-bms-test-20261003\\bms_function_task5_confirm_page.png",
"D:\\YMR\\AMI\\tmp\\can2-v21-bms-test-20261003\\bms_function_task5_confirm_return.png"
]
},
{
"task": 6,
"cancel_no_can_request": true,
"confirm_can_request_correct": true,
"cancel_frames": [],
"confirm_frames": [
{
"time_s": 25.487227500067092,
"id": 768,
"dlc": 8,
"extended": false,
"data": "01 06 05 01 2c 62 00 00"
}
],
"screenshots": [
"D:\\YMR\\AMI\\tmp\\can2-v21-bms-test-20261003\\bms_function_task6_cancel_page.png",
"D:\\YMR\\AMI\\tmp\\can2-v21-bms-test-20261003\\bms_function_task6_cancel_return.png",
"D:\\YMR\\AMI\\tmp\\can2-v21-bms-test-20261003\\bms_function_task6_confirm_page.png",
"D:\\YMR\\AMI\\tmp\\can2-v21-bms-test-20261003\\bms_function_task6_confirm_return.png"
]
}
],
"rx": [
{
"time_s": 4.2668663000222296,
"id": 768,
"dlc": 8,
"extended": false,
"data": "01 01 00 01 53 0f 00 00"
},
{
"time_s": 8.50375020003412,
"id": 768,
"dlc": 8,
"extended": false,
"data": "01 02 01 01 df 1f 00 00"
},
{
"time_s": 12.753520800033584,
"id": 768,
"dlc": 8,
"extended": false,
"data": "01 03 02 01 78 30 00 00"
},
{
"time_s": 17.00549889996182,
"id": 768,
"dlc": 8,
"extended": false,
"data": "01 04 03 01 15 41 00 00"
},
{
"time_s": 21.254094199975953,
"id": 768,
"dlc": 8,
"extended": false,
"data": "01 05 04 01 9f 51 00 00"
},
{
"time_s": 25.487227500067092,
"id": 768,
"dlc": 8,
"extended": false,
"data": "01 06 05 01 2c 62 00 00"
}
],
"pcan_status": "0x0"
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

@@ -0,0 +1,32 @@
-------------------------------------------------------------------
STM32CubeProgrammer v2.20.0
-------------------------------------------------------------------
ST-LINK SN : 37FF71064E573436188C1543
ST-LINK FW : V2J47S7
Board : --
Voltage : 3.28V
SWD freq : 950 KHz
Connect mode: Hot Plug
Reset mode : Software reset
Device ID : 0x467
Revision ID : Rev Z
Device name : STM32G0B0xx/B1xx/C1xx
Flash size : 128 KBytes
Device type : MCU
Device CPU : Cortex-M0+
BL Version : 0x92
Reading 32-bit memory content
Size : 128 Bytes
Address: : 0x200002C8
0x200002C8 : 00000000 00000000 00000000 00000000
0x200002D8 : 00003F4E 00000000 00000221 00000000
0x200002E8 : 00000000 00000000 00000000 00000000
0x200002F8 : 00003EDF 00003F4E 00000000 00000000
0x20000308 : 00003F4E 00000000 00000000 00000037
0x20000318 : 00000000 00000000 00000000 00000000
0x20000328 : 0000001B 00000000 0000004A 00000000
0x20000338 : 00000000 00000000 00000000 2637AB02
Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

@@ -0,0 +1,32 @@
-------------------------------------------------------------------
STM32CubeProgrammer v2.20.0
-------------------------------------------------------------------
ST-LINK SN : 37FF71064E573436188C1543
ST-LINK FW : V2J47S7
Board : --
Voltage : 3.28V
SWD freq : 950 KHz
Connect mode: Hot Plug
Reset mode : Software reset
Device ID : 0x467
Revision ID : Rev Z
Device name : STM32G0B0xx/B1xx/C1xx
Flash size : 128 KBytes
Device type : MCU
Device CPU : Cortex-M0+
BL Version : 0x92
Reading 32-bit memory content
Size : 128 Bytes
Address: : 0x200002C8
0x200002C8 : 00000000 00000000 00000000 00000000
0x200002D8 : 000025D8 FFFFFD49 00001073 00000000
0x200002E8 : 00000000 00000000 00000000 00000000
0x200002F8 : 00002567 000025D8 00000000 00000000
0x20000308 : 000025D8 00000000 00000000 000001A5
0x20000318 : 00000000 FFFFFFBA 00000000 00000000
0x20000328 : 00000017 00000000 00000000 00000000
0x20000338 : 00000000 00000000 00000000 2637AB02
Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

@@ -0,0 +1,32 @@
-------------------------------------------------------------------
STM32CubeProgrammer v2.20.0
-------------------------------------------------------------------
ST-LINK SN : 37FF71064E573436188C1543
ST-LINK FW : V2J47S7
Board : --
Voltage : 3.28V
SWD freq : 950 KHz
Connect mode: Hot Plug
Reset mode : Software reset
Device ID : 0x467
Revision ID : Rev Z
Device name : STM32G0B0xx/B1xx/C1xx
Flash size : 128 KBytes
Device type : MCU
Device CPU : Cortex-M0+
BL Version : 0x92
Reading 32-bit memory content
Size : 128 Bytes
Address: : 0x200002C8
0x200002C8 : 00000000 00000000 00000000 00000000
0x200002D8 : 00000BA2 0000007B 00000FA0 00000000
0x200002E8 : 00000000 00000000 00000000 00000000
0x200002F8 : 00000B2F 00000BA2 00000000 00000000
0x20000308 : 00000BA2 00000000 00000000 00000190
0x20000318 : 00000000 0000000C 00000000 00000000
0x20000328 : 00000028 00000000 0000004A 00000000
0x20000338 : 00000000 00000000 00000000 2637AB02
@@ -0,0 +1,103 @@
{
"real_mcu_snapshot_checks": [
{
"stage": "standard",
"values": [
0,
400,
0,
12,
0,
0,
40,
0
],
"valid_mask": "0x4a",
"adc_mv": 0,
"hv_tenths": 4000,
"current_tenths": 123,
"pass": true
},
{
"stage": "extended",
"values": [
0,
421,
0,
-70,
0,
0,
23,
0
],
"valid_mask": "0x4a",
"adc_mv": 0,
"hv_tenths": 4211,
"current_tenths": -695,
"pass": true
},
{
"stage": "all_temp_invalid",
"values": [
0,
421,
0,
-70,
0,
0,
23,
0
],
"valid_mask": "0xa",
"adc_mv": 0,
"hv_tenths": 4211,
"current_tenths": -695,
"pass": true
},
{
"stage": "source_timeout",
"values": [
0,
421,
0,
-70,
0,
0,
23,
0
],
"valid_mask": "0x0",
"adc_mv": 0,
"hv_tenths": 4211,
"current_tenths": -695,
"pass": true
},
{
"stage": "recovered",
"values": [
0,
55,
0,
0,
0,
0,
27,
0
],
"valid_mask": "0x4a",
"adc_mv": 0,
"hv_tenths": 545,
"current_tenths": 0,
"pass": true
}
],
"task_confirm_pass": 6,
"task_cancel_pass": 6,
"pcan_status": "0x0",
"bus": "CAN2",
"bitrate": 250000,
"sdc_frames_sent": false,
"firmware_sha256": "143bb0cf190a17dd3f8a251bd49fef2af19699d873951c58cb790b35764e3212",
"hmi_sha256": "8a37e4961f90671f04e55ba94c173ae8fbfc5e30c2a3e74a2c37148157c3d16d",
"visual_review": "Screenshots inspected separately: standard, extended, invalid, timeout and recovery. Cross-page test not repeated in this run."
}
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,40 @@
{
"bms_all_temp_invalid.png": "4688d8a67d24f044576e006b999267711d5c567f145a85147e9d00eb625bc66a",
"bms_all_temp_invalid_ram.log": "ee9644c7ecf8cc2a182e71e446e02c13973623b9ae93b36cdc7a73faf8d9b73f",
"bms_extended.png": "6cdaf37f914f8e7554c20cb853d0ddf9c695a5e60ee744ff683bd29763c2204a",
"bms_extended_ram.log": "19d673e09236b9cd8413bafbf98985a084f656f6de4e9f580e7a5ca7f8bedecd",
"bms_function_task1_cancel_page.png": "6be8c52cbab2278098b430b12e58c167c5f19e4ee7f984d179429a63078353e8",
"bms_function_task1_cancel_return.png": "374d9699753b95567628a60d28e27bdb2f302ed721757a78e75d4593f03f2e77",
"bms_function_task1_confirm_page.png": "6be8c52cbab2278098b430b12e58c167c5f19e4ee7f984d179429a63078353e8",
"bms_function_task1_confirm_return.png": "79d2ce02834a602607906013a163345e90ca1fadaa4dcb7048f271c79e78c8af",
"bms_function_task2_cancel_page.png": "c64b41ecedc90f6f218c509c6adb104c8c4c0de515294d709062d697618ba72f",
"bms_function_task2_cancel_return.png": "79d2ce02834a602607906013a163345e90ca1fadaa4dcb7048f271c79e78c8af",
"bms_function_task2_confirm_page.png": "c64b41ecedc90f6f218c509c6adb104c8c4c0de515294d709062d697618ba72f",
"bms_function_task2_confirm_return.png": "ef9ea5636f896f5b911f674ad109b049523dc41d22aa831f1458666e0a34e813",
"bms_function_task3_cancel_page.png": "bade21caca05a58e1f7016b41300bcc79c58b3f035e351c1fb24f2f53112826f",
"bms_function_task3_cancel_return.png": "ef9ea5636f896f5b911f674ad109b049523dc41d22aa831f1458666e0a34e813",
"bms_function_task3_confirm_page.png": "bade21caca05a58e1f7016b41300bcc79c58b3f035e351c1fb24f2f53112826f",
"bms_function_task3_confirm_return.png": "d5f5d95f7bf388f410d2d8cbd4513239c00d52435d571968cf859f6c74ceee7b",
"bms_function_task4_cancel_page.png": "3743370404cf0a204fb06f114953b6599d764e27b0e8ba5e803d877339ab40b9",
"bms_function_task4_cancel_return.png": "d5f5d95f7bf388f410d2d8cbd4513239c00d52435d571968cf859f6c74ceee7b",
"bms_function_task4_confirm_page.png": "3743370404cf0a204fb06f114953b6599d764e27b0e8ba5e803d877339ab40b9",
"bms_function_task4_confirm_return.png": "a816ef45709a3fc7b0dbb055fcc77953d43854ced02a1d45e3946cc90c569e33",
"bms_function_task5_cancel_page.png": "585a9017870d7959d723c59a6203b5a67759789aee59c1398e670c7834a52ee0",
"bms_function_task5_cancel_return.png": "a816ef45709a3fc7b0dbb055fcc77953d43854ced02a1d45e3946cc90c569e33",
"bms_function_task5_confirm_page.png": "585a9017870d7959d723c59a6203b5a67759789aee59c1398e670c7834a52ee0",
"bms_function_task5_confirm_return.png": "f3c8f35b9ab667671e790d316307b6e5c3ba73a7a9680ade7253b694f61bcf65",
"bms_function_task6_cancel_page.png": "9b2e124bae41df48015b19bd8ac594a4b20a9be52f2dad0c658b0d32f3efe635",
"bms_function_task6_cancel_return.png": "f3c8f35b9ab667671e790d316307b6e5c3ba73a7a9680ade7253b694f61bcf65",
"bms_function_task6_confirm_page.png": "9b2e124bae41df48015b19bd8ac594a4b20a9be52f2dad0c658b0d32f3efe635",
"bms_function_task6_confirm_return.png": "06037c6812498819f62a2ae72b4f6fb7795cde718854127a0cddf78e216b602a",
"bms_function_task_results.json": "c157f28ca34c65daea37225120edb81b8bd7eccd7a9edc48dc92afd186f8aaa6",
"bms_recovered.png": "8ca53caab56ba94ab3c530e2a23250e392ae251d2360a93a7414b2f2afb5ad04",
"bms_recovered_ram.log": "18cb078db6b2e53f05e728dc307c3f05a589ffefbc73144d98d597a6dd1f8ed7",
"bms_source_timeout.png": "3bc399267bb85dc4591b6318e18b53df288aa2783f005fd58ad9a4c0429ae66c",
"bms_source_timeout_ram.log": "c4e4843c0c2f9f8aba79b41dec61547df6bbf667722440534da2ceda2523b2f3",
"bms_standard.png": "27a95ef0389ab1a3f9e44e55a2d411e5df831866bbf65b27e657206dc3907efe",
"bms_standard_ram.log": "fe2653ab399ed28513490838dcfc8192c181070621ea7573db0f6933a4182e1f",
"bms_verified.json": "fed9fa7232a01245e815174bd5867522f525eb30797ec78734fbe76511610494",
"bms_visual_results.json": "44f8fac07beed060833c0cb1b4055a25960d5c8b03884570b60933de62531da1",
"uart-diagnostic.json": "d79458ec3c2d9c2b2a81694e566af4b5357d0797b174c06e5d6a3b3b6688ad88"
}
@@ -0,0 +1,10 @@
{
"rx": [
{
"id": "0x300",
"data": "01 02 00 01 f1 c1 03 00"
}
],
"serial_bytes": 850,
"serial_hex": "2e646c2e76616c3d30ffffff646173682e646a77642e76616c3d30ffffff646173682e6d637577642e76616c3d30ffffff646173682e647477642e76616c3d3237ffffff646173682e6c766261742e76616c3d30ffffff64303d30ffffff64313d30ffffff64323d30ffffff64333d30ffffff64343d30ffffff64353d30ffffff64363d30ffffff64373d30ffffff64383d30ffffff64393d30ffffff6431303d30ffffff6431313d30ffffff6431323d30ffffff6431333d30ffffff6431343d30ffffff6431353d30ffffff646173682e73706565642e70636f3d3136393034ffffff646173682e74732e70636f3d3635353335ffffff646173682e6d63742e70636f3d3136393034ffffff646173682e646c2e70636f3d3635353335ffffff646173682e646a77642e70636f3d3136393034ffffff646173682e6d637577642e70636f3d3136393034ffffff646173682e647477642e70636f3d3635353335ffffff646173682e74732e76616c3d343231ffffff646173682e646c2e76616c3d2d3730ffffff646173682e647477642e76616c3d3237ffffff646173682e6c766261742e76616c3d30ffffff64303d30ffffff64313d30ffffff64323d30ffffff64333d30ffffff64343d30ffffff64353d30ffffff64363d30ffffff64373d30ffffff64383d30ffffff64393d30ffffff6431303d30ffffff6431313d30ffffff6431323d30ffffff6431333d30ffffff6431343d30ffffff6431353d30ffffff646173682e73706565642e70636f3d3136393034ffffff646173682e74732e70636f3d3635353335ffffff646173682e6d63742e70636f3d3136393034ffffff646173682e646c2e70636f3d3635353335ffffff646173682e646a77642e70636f3d3136393034ffffff646173682e6d637577642e70636f3d3136393034ffffff646173682e647477642e70636f3d3635353335ffffff646173682e6c766261742e70636f3d3136393034ffffff646173682e73706565642e76616c3d30ffffff646173682e74732e76616c3d343231ffffff646173682e6d63742e76616c3d30ffffff646173682e646c2e76616c3d2d3730ffffff646173682e646a77642e76616c3d30ffffff646173682e6d637577642e76616c3d30ffffff646173682e647477642e76616c3d3237ffffff"
}
+3 -1
View File
@@ -1,9 +1,11 @@
# AMI 仪表通讯交接文档
屏幕接口 1.2;MCU CAN 协议 2.0(SDC / BMS) | 2026-10-03
屏幕接口 1.2;MCU CAN 协议 2.1(CAN1 500K / CAN2 250K) | 2026-10-03
适用工程:AMI.HMI;屏幕 TJC4827X543_011,480 × 272;编辑器 USART HMI 1.68.1.3037。本文以随附的精简指令版工程为准。
v2.1 已烧录并通过 CAN1 500K(SDC)与 CAN2 250K(BMS)分别到官方 HMI 调试器的测试,含两路各六个任务确认/取消;见 [双 CAN 测试报告](CAN1_CAN2_v2.1测试报告.md)。下文的旧模拟器及 v2.0 测试描述属于历史记录,物理串口屏、真实节点和两路同时接入仍待实测。
2026-10-03 补充:dash 增加全局虚拟浮点控件 `lvbat`,两位小数,`dash.lvbat.val=1230` 显示 12.30 V,来源为 SDC ADC。当前 MCU CAN 输入见 [SDC_BMS协议.md](SDC_BMS协议.md);原整数高压电压/电流控件四舍五入为 1 V / 1 A。灰色数值表示未知或失效。SDC GPIO 尚无具名安全状态映射,当前 MCU 不生成正常/故障判断。
## 1. 接手先看这三点
+4 -2
View File
@@ -1,11 +1,13 @@
2026-10-03:屏幕数字接口1.2,MCU CAN输入2.1(SDC/BMS)。
CAN1为500 kbit/s,使用AMI.dbc;CAN2为250 kbit/s,使用AMI_CAN2_250k.dbc。每份包含10条Classic CAN报文和33个信号,报文布局相同。
v2.1源码/CubeMX/DBC位时序一致性校验及Release编译通过;新BIN尚未烧录,CAN2 250K尚未实测。
v2.1源码/CubeMX/DBC位时序一致性校验及Release编译通过;已烧录,完整15612字节Flash回读与发布BIN一致。
CAN1 500K(SDC)及CAN2 250K(仅BMS数据)分别完成MCU/USART2/COM4/官方HMI调试器的数据更新、无效、超时和恢复测试。
两路各六个任务确认及六个取消通过;十组MCU状态快照符合预期,CAN/UART接收错误均为0。新证据见docs/CAN1_CAN2_v2.1测试报告.md。
cantools 44.1.0严格解析、24个已知报文、六个任务号及计数边界、标准/扩展ID、偏置电流、无效温度和SDC布局一致性检查通过;具体复现命令见docs/AMI_CAN_DBC说明.md。
下述历史实物证据对应v2.0,两路均为500K;原BIN保留在output/firmware/AMI_Controller_v2.0_500k.bin。
HMI编译0错误0警告;v2.0固件Release编译、SWD烧录校验通过。
已实测CAN盒->实物AMI CAN1/MCU->USART2->COM4->官方HMI调试器:低压电压、高压电压/电流、最高有效温度、无效数据、超时/恢复、跨页更新、HMI重连。
六个任务确认均收到正确0x300请求,六个取消均未发送;该测试条件为CAN1持续有有效输入。
证据在docs/evidence/2026-10-03/sdc-bms;联调报告见docs/SDC_BMS联调报告.md。
未接物理串口屏或真实SDC/BMS节点,未实测CAN2、LED极性和车辆执行/安全动作;未定义电机温度、轮频到车速标定和GPIO到具名安全信号映射。
v2.1仍未接物理串口屏或真实SDC/BMS节点,未实测两路同时接入、LED极性和车辆执行/安全动作;未定义电机温度、轮频到车速标定和GPIO到具名安全信号映射。
原C示例是屏幕debug接口参考,不代表整车控制已实现。
+2 -2
View File
@@ -55,6 +55,6 @@ CubeMX 配置源为 `AMI_Controller.ioc`。重新生成时保留 USER CODE 区
2. 确认 CAN1/CAN2 收发器、终端电阻;CAN1 总线 500 kbit/s、CAN2 总线 250 kbit/s。
3. 确认屏幕是 TTL 电平并与主控共地,主控 TX 接屏 RX、主控 RX 接屏 TX。
4. 下载 `AMI.HMI` 后逐条验证仪表数值、16 路 debug 状态及 6 个任务按钮。
5. 2026-10-03 已完成 CAN1 / MCU / USART2 到 COM4 官方 HMI 调试器联调;物理屏幕、CAN2 和 LED 极性尚未实测。证据位于 [发布的 CAN 记录](../docs/evidence/2026-10-03/sdc-bms/sdc_bms_visual_results.json)。
5. 2026-10-03 已完成 v2.1 CAN1 500K 与 CAN2 250K 分别到 MCU / USART2 / COM4 / 官方 HMI 调试器的联调;物理屏幕、真实节点、两路同时接入和 LED 极性尚未实测。见 [双 CAN 测试报告](../docs/CAN1_CAN2_v2.1测试报告.md)。
此前实物证据对应两路均为 500K 的 v2.0。当前 v2.1 的 CAN2 250K BIN 已编译,尚未烧录或实物测试。
此前两路均为 500K 的 v2.0 历史证据仍保留。当前 v2.1 BIN 已烧录并完整回读比对通过,两路各六个任务确认和六个取消通过;CAN2 测试仅注入 BMS 数据,未将 SDC 改成 250K。
Binary file not shown.
+4 -3
View File
@@ -51,7 +51,7 @@ def render():
'| CAN2 | 250 kbit/s | PB0 / PB1 | [AMI_CAN2_250k.dbc](../AMI_CAN2_250k.dbc) |', '',
'DBC 的 `Baudrate` / `AMIPort` 分别标注所属总线。每份 DBC 均含 10 条报文、33 个信号;'
'同一份报文表适用于两路。CAN 工具必须按接入端口设置速率,导入 DBC 不一定自动改硬件速率。'
'例如 SDC 板保持 500 kbit/s 时接 CAN1;BMS 节点配置为 250 kbit/s 时接 CAN2。', '',
'实际接法:SDC 500 kbit/s 接 CAN1,BMS 250 kbit/s 接 CAN2。', '',
'FDCAN 时钟 64 MHz,时钟分频为 1;NominalPrescaler 为 CAN1=8、CAN2=16,'
'两路均使用 Sync=1、TimeSeg1=13、TimeSeg2=2、SJW=1。'
'速率 = 64 MHz / Prescaler / (1+13+2);采样点 = (1+13)/16 = 87.5%。', '',
@@ -150,10 +150,11 @@ def render():
'六个任务号与计数边界编码、大端偏置电流、无效温度枚举、全负温度和截短 DLC。'
'已安装并验证 cantools 44.1.0,接口参考 [cantools 官方文档](https://cantools.readthedocs.io/en/latest/)。', '',
'上述是静态及软件编解码验证,另校验两份 DBC 的速率、相同信号布局及源码 / CubeMX 位时序一致。'
'v2.1 的 CAN2 250 kbit/s 固件已编译,尚未烧录或实物验证。'
'v2.1 已完成烧录、完整 Flash 回读比对、CAN1 500K 与 CAN2 250K 到官方 HMI 调试器的'
'实物测试,详见 [双 CAN 测试报告](CAN1_CAN2_v2.1测试报告.md)。'
'之前 v2.0 的 CAN 盒 -> 实物 AMI CAN1 / MCU -> USART2 -> COM4 '
'-> 官方 HMI 调试器的实际更新和六个任务回传见 [联调报告](SDC_BMS联调报告.md)。'
'物理串口屏、CAN2 接线、真实 SDC/BMS 节点和车辆执行动作尚未实测;'
'物理串口屏、真实 SDC/BMS 节点、两路同时接入和车辆执行动作尚未实测;'
'文档生成和 DBC 解析不替代这些测试。', '',
'修改 AMI.dbc 后运行 `python scripts/export_dbc_docs.py` 更新 CAN2 DBC 和本文;'
'固件字节布局、DBC 与此文档需同时保持一致。', '',