.
betaflight 代码结构如下表所示
betaflight 体系结构 | ||||||
应用层 | CMS osd调参 | Flight fail safe gps rescue PID Mixer | ||||
抽象基础功能 | config 飞控配置信息读写 以内置flash 模拟eeprom | FC 飞控核心控制事件循环 | MSC usb-storage、fat 等文件系统交互 | MSP 管理协议 | OSD 字幕叠加 | telemetry 遥测回传相关 |
RX 接收机相关交互 a7105、cc2500、frsk、crsf等协议 以及rx 与飞控的rx_spi集成等 | sensors 加速计、adc、电池、气压、compass等传感器抽象 | blackbox 黑匣子记录 | ||||
common 通用工具 | scheduler 定时器(软) | IO 对飞控的“输入输出”,如视频、crsf、bb响、flash、gps、舵机、图传等的输入输出抽象 | ||||
硬件配置、接口抽象化 | pg parameter group 设备配置加载映射为内存的结构体 抽象映射各硬件的操作,详见 doc/ParameterGroups.md | |||||
抽象硬件 | driver 抽象具体硬件的初始化、交互,需要继续整理一下抽象,目前看主要是io.h io.c 这个抽象定义 | |||||
MCU相关 | vcp USB 虚拟串口相关 | target 定义mcu与主要外设的针脚定义 | startup 各种mcu初始化设置,设置核心频率等 | |||
硬件层 STM32 F1、F3、F4、F7、H7 | mcu | 加速度 MPU6000、6500 ICM2xxxxx SPI | 罗盘 HMC5883L i2c | 大气压计 BMP280 i2c | OSD叠加 MAX7456E SPI | bb响 PWM |
UART 接口 GPS、RX、VTX等 | ESC 4路PWM 一般跑Dshot 协议 | OLED灯带 |
这次针对BF 的移植,主要对于target、Driver、link、make 等进行修改,重点在于driver文件夹, 由于原始BF主要使用STM32 系列,从F1 到H7 都有移植,所以原始的代码已经十分复杂,AT32 的外设结构与STM32G4 比较类似,所以主要以G4 相关HAL库为蓝本进行修改移植。