- 新增光泵磁力仪驱动模块,通过 USART2 中断接收 BCD 编码数据,采样率 115200bps - 重构数据包架构:引入标准包与扩展包(含光泵数据)两种类型,通过帧头魔数区分 - 新增 DataPacketWithOptic_t、CorrectedDataPacketWithOptic_t 两种扩展数据包类型 - 数据存储改为通用字节流写入(方案Y),支持任意包类型混流存储 - 将编译期配置集中到 app_config.h,包括 UART 输出、SD 存储、GPS 位置等开关 - 移除 ADC_SYNC GPIO 引脚配置,释放 PA2 用于 USART2_TX - 主循环 ProcessAdcData 改为按需选择数据包类型,光泵数据快照在 ADC 中断前完成 - 新增 USART2 错误回调处理,支持接收异常时自动恢复
50 lines
2.4 KiB
Markdown
50 lines
2.4 KiB
Markdown
# STM_ATEM_F405 项目说明
|
||
|
||
## 项目概述
|
||
STM32F405 航空电磁接收机固件,基于 STM32CubeIDE + HAL 库开发。
|
||
|
||
**核心功能:** ADC 采集(LTC2508)→ 数据校正 → SD 卡存储 / UART 输出
|
||
|
||
## 目录结构
|
||
- `Core/` — CubeMX 生成代码(main.c、外设初始化),**不要手动修改生成区域**
|
||
- `User/` — 业务逻辑(驱动、数据包、存储、GPS、配置管理等)
|
||
- `Drivers/` — HAL 驱动库(不修改)
|
||
- `Middlewares/` — FatFs、USB(不修改)
|
||
|
||
## 关键模块
|
||
| 文件 | 职责 |
|
||
|------|------|
|
||
| `ltc2508_driver` | SPI ADC 采集驱动 |
|
||
| `data_packet` | 数据包格式定义与封包 |
|
||
| `data_storage` | FatFs SD 卡文件写入 |
|
||
| `correction` | ADC 校正参数应用 |
|
||
| `app_config` | 编译期配置(UART 输出、SD 存储开关)|
|
||
| `config_manager` | 配置运行时访问层,默认值来自 `app_config.h` |
|
||
| `gps_driver` | GPS NMEA 解析(UART)|
|
||
| `rs485_driver` | RS485 通信 |
|
||
| `optic_mag_driver` | 光学磁传感器 |
|
||
| `system_monitor` | 系统状态统计与诊断 |
|
||
|
||
## 通信接口
|
||
| 接口 | 用途 | 波特率 | 备注 |
|
||
|------|------|--------|------|
|
||
| USART1 (PA9/PA10) | RS485 数据输出 | 2 000 000 | TX DMA;DE/RE 控制脚 PC7 |
|
||
| USART2 (PA3) | 光泵磁力仪接收 | 115 200 | 仅 RX,DMA 循环;PA2 已改为普通 GPIO |
|
||
| USART3 (PB10/PB11) | GPS NMEA 接收 | 115 200 | TX/RX,单字节中断接收 |
|
||
| SPI1/2/3 | LTC2508 ADC 采集 | — | 三路 SPI 同时驱动三片 ADC |
|
||
| SDIO | SD 卡(FatFs) | — | 与 USB MSC 共用,采样期间独占 |
|
||
| USB | MSC 大容量存储 | — | 供 PC 直接访问 SD 卡 |
|
||
|
||
## 开发规范
|
||
- 每次修改代码后,判断是否影响模块职责、接口用途、配置项或注意事项,若有则同步更新 CLAUDE.md 对应部分
|
||
|
||
- 业务代码只放 `User/` 目录;CubeMX 生成区域(`USER CODE BEGIN/END`)内写用户代码
|
||
- 函数命名:`模块名_功能()` 如 `DataStorage_StartRecording()`
|
||
- 全局变量加 `g_` 前缀,静态变量加 `s_` 前缀
|
||
- 不添加无意义注释;注释用中文说明 **为什么**,不说明是什么
|
||
|
||
## 注意事项
|
||
- 修改 `.ioc` 文件后重新生成代码会覆盖 `Core/` 文件,需手动恢复用户代码
|
||
- USB MSC 与 FatFs 共享 SD 卡,采样期间需卸载再挂载
|
||
- 配置在 `User/app_config.h` 中以 `#define` 编译期确定;若需恢复 CONFIG.TXT 运行时加载,在 `main.c` 挂载 SD 后重新调用 `Config_Load()` 即可
|