Files
AMI/firmware/README.md
T

57 lines
3.2 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 主控固件
这是 `AMI.HMI` 配套的 STM32 HAL 固件。目标器件按 **STM32G0B1CBT6(LQFP48,128 KB Flash)** 生成;ST 的 G0B1 产品线没有 `STM32G0B1C8T6`,如果实物丝印为 `STM32G0B1CCT6` 或 `STM32G0B1CET6`,引脚及应用代码兼容,只需在 CubeMX 中切换具体料号后重新生成。
## 引脚与外设
| 封装脚 | GPIO | 功能 |
| --- | --- | --- |
| 11 | PA0 | STATUS_LED1,500 ms 翻转一次(运行心跳) |
| 12 | PA1 | STATUS_LED2,仪表/SDC 状态活动超时提示;两路择有效输入 |
| 13 | PA2 | USART2_TX → 屏幕 RX,9600 8N1 |
| 14 | PA3 | USART2_RX ← 屏幕 TX,9600 8N1 |
| 19 | PB0 | FDCAN2_RX,500 kbit/s,与 CAN1 功能相同 |
| 20 | PB1 | FDCAN2_TX,500 kbit/s,与 CAN1 功能相同 |
| 33 | PA11 | FDCAN1_RX,默认 500 kbit/s |
| 34 | PA12 | FDCAN1_TX,默认 500 kbit/s |
LED 默认按高电平点亮。如果硬件是低电平点亮,将 `Core/Inc/ami_app.h` 中 `AMI_LED_ACTIVE_LEVEL` 改为 `GPIO_PIN_RESET`。
## 数据路径
- FDCAN1、FDCAN2 使用相同的三条标准过滤器和一条扩展过滤器,接收 SDC 0x6A0..0x6A6 与 BMS 0x140 / 0x156 / 0x186040F3 / 0x186140F3。
- SDC ADC 为低压电池电压;BMS 总压、偏置电流和最高有效实际温度按源协议解码。旧 0x180 / 0x181 / 0x280 不再接收。
- 主循环通过 USART2 TX DMA 一次发送一条完整 TJC 指令,末尾为三个真实字节 `FF FF FF`。
- 仅变化后的数值排队,字段轮转和 DMA 合并最新值,避免刷新饥饿;白色为有效数值,灰色为未知/失效,ADC 和 BMS 各自计时。
- 每 5 秒重新同步全套显示状态,恢复晚启动或重连的屏幕;仍使用非阻塞 DMA 和最新值合并。
- USART2 使用 Receive-to-Idle DMA;屏幕发来的 6 字节任务帧可拆包、粘包解析。
- 合法任务帧进入 3 项有效容量的无锁小队列,再由主循环发到近期有通信的 CAN 口;两路都活跃时同时发送。
完整字节定义见 [SDC_BMS协议.md](../docs/SDC_BMS协议.md)。
## 构建
使用本机 STM32CubeCLT 1.19.0:
```powershell
$env:PATH = 'D:\STM32CubeCLT_1.19.0\CMake\bin;D:\STM32CubeCLT_1.19.0\Ninja\bin;D:\STM32CubeCLT_1.19.0\GNU-tools-for-STM32\bin;' + $env:PATH
cmake --preset Release
cmake --build --preset Release --parallel
```
ELF 输出为 `build/Release/AMI_Controller.elf`。需要 BIN 时:
```powershell
arm-none-eabi-objcopy -O binary build/Release/AMI_Controller.elf build/Release/AMI_Controller.bin
```
CubeMX 配置源为 `AMI_Controller.ioc`。重新生成时保留 USER CODE 区;`ami_app.c/.h`、`ami_protocol.h` 和根 `CMakeLists.txt` 为应用层文件,不要从工程中移除。
## 实物联调前确认
1. 核对芯片完整丝印,确认是 CB/CC/CE 中的哪一个。
2. 确认 CAN1/CAN2 收发器、终端电阻及 500 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)。