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

50 lines
2.4 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.

# 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 DMADE/RE 控制脚 PC7 |
| USART2 (PA3) | 光泵磁力仪接收 | 115 200 | 仅 RXDMA 循环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()` 即可