57 lines
3.2 KiB
Markdown
57 lines
3.2 KiB
Markdown
# 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)。
|