- 新增光泵磁力仪驱动模块,通过 USART2 中断接收 BCD 编码数据,采样率 115200bps - 重构数据包架构:引入标准包与扩展包(含光泵数据)两种类型,通过帧头魔数区分 - 新增 DataPacketWithOptic_t、CorrectedDataPacketWithOptic_t 两种扩展数据包类型 - 数据存储改为通用字节流写入(方案Y),支持任意包类型混流存储 - 将编译期配置集中到 app_config.h,包括 UART 输出、SD 存储、GPS 位置等开关 - 移除 ADC_SYNC GPIO 引脚配置,释放 PA2 用于 USART2_TX - 主循环 ProcessAdcData 改为按需选择数据包类型,光泵数据快照在 ADC 中断前完成 - 新增 USART2 错误回调处理,支持接收异常时自动恢复
2.4 KiB
2.4 KiB
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()即可