HPMicro Betaflight v0.1.0发布
betaflight介绍
Betaflight是用于多旋翼和固定翼飞行器的飞行控制器软件 (固件)。
飞行控制器本质上是一台计算机,它读取传感器 (陀螺仪,加速度计,GPS等),计算要采取的所需动作,将命令发送到ESC以控制电机,产生推力,并保持四轴飞行器在空中。它还可以控制其他外围设备 (VTX控制,无线电链路遥测,led)。
Betaflight是在飞行控制器上运行的软件,用于执行所有这些操作
Betaflight不断更新新功能和改进。它的主要重点是高性能飞行 (自由式/赛车四轴飞行器),但它也支持其他类型的飞机 (固定翼,三翼/六角/八轴飞行器等)。最近,重点一直在扩大,以支持更先进的GPS救援能力
Betaflight已成为飞行控制器的事实标准,几乎每个飞行控制器都有一个Betaflight目标
有关betaflight的发展历程,可以参考betaflight的wiki:https://www.betaflight.com/docs/wiki/getting-started
先楫betaflight支持包
先楫半导体基于hpm_sdk v1.10.0对betaflight v4.5.2进行了适配。为使用先楫芯片快速搭建fpv竞速平台提供了支持。同时先楫提供了开源的flight controller线路板的原理图和layout文件供参考。
原理图和layout文件链接如下:
https://github.com/hpmicro/betaflight/releases/tag/v0.1.0
betaflight工程仓库链接如下:
github: https://github.com/hpmicro/betaflight/
gitee: https://gitee.com/hpmicro/betaflight/releases/tag/v0.1.0
主要硬件资源:

betaflight已经适配的特性/功能:
- Dshot电调数字通讯协议
- 支持dshot300/600/1200
- 支持dshot300/600的双向通讯
- 基于SDIO的sd卡黑盒子记录功能
- 基于SPI/I2C的IMU通讯
- SPI通讯支持dma和polling方式
- 典型通信频率8K,最高32K
- 支持双IMU通讯和姿态计算
- 支持模拟OSD
- 支持USB虚拟串口通信
- 支持UART通信
- 支持电池电压/电流检测
- 支持GPS功能
- 支持CRSF串行协议接收机
- 支持LED灯带
- 内部Flash保存配置参数
工程创建和编译:
- 下载工程源码
git clone https://github.com/hpmicro/betaflight.git cd betaflight git submodule init git submodule update - 创建工程
在windows环境下,下载使用sdk_env创建工程是最方便的git clone https://github.com/hpmicro/sdk_env.git打开sdk_env工具,在advance子界面配置HPM_SDK_BASE为betaflight目录下的hpm_sdk目录,并勾选hpm6754evk开发板,勾选Enable User Application Path,选择betaflight目录,单击Generate按键产生工程,然后打开SES工程。

Linux环境下创建工程请参考hpm_sdk中的文档,betaflight工程的CMakeLists.txt在betaflight/src/目录下。 - 工程配置和编译
由上一步产生的工程是一个标准的segger工程,按照一般segger工程进行编译和下载即可。
需要注意的是,为了关键代码的运行效率,在产生工程时,默认对部分目录下的源码文件配置了优化等级和指定代码段section名称的操作。用户可以在segger ide中对文件配置进行二次修改,但是ide中的配置修改不会在重新生成工程后生效,如果需要修改产生工程时的默认配置,可以修改文件betaflight\src\main\CMakeLists.txt末尾的sdk_ses_set_code_placement和sdk_ses_set_optimization_level语句。
对于gcc命令行用户,本工程未做针对性优化,爱好者可以自行对代码进行优化。 - 性能指标:
在典型环境下,即IMU@8k采样率,4路dhsot600电调(未使用回传),外接CRSF接收机,外接IRC协议图传,采样电池电压的情况下:

各任务运行情况如下:

在开启dshot回传后


- 开源pcb资源分配一览
板载资源:
| 模块 | 数量 | 使用外设 | 引脚 |
|---|---|---|---|
| SD卡插槽 | 1 | SDIO0 | PE18 PE21 PE22 PE23 PE26 PE27 PE28 |
| 板载IMU1 | 1 | SPI0 | PZ2 PZ3 PZ4 PZ5 PZ7(INT) |
| 板载IMU2 | 1 | SPI1 | PE15(INT) PE3 PE4 PD30 PD31 |
| 板载OSD | 1 | SPI2 | PA26 PA27 PA31 PB0 |
| 板载灯带 | 0 | ||
| 板载wifi | 0 | ||
| 板载蓝牙 | 0 | ||
| 板载接收机 | 0 |
接插件/焊盘定义:
Receiever
| 名称 | 功能 | 使用外设 | 引脚 |
|---|---|---|---|
| GND | |||
| TX5 | 数据发送 | UART5 | PD7 |
| RX5 | 数据接收 | UART5 | PD6 |
| ADC0 | RSSI测量 | ADC0 channel 0 | PE14 |
| 3.3V | |||
| 5V |
GPS
| 名称 | 使用外设 | 引脚 |
|---|---|---|
| GND | ||
| TX7 | UART7 | PE31 |
| RX7 | UART7 | PE30 |
| 3.3V | ||
| 5V |
PWM
| 名称 | 使用外设 | 引脚 |
|---|---|---|
| MOTOR0 | PWM1 CH4 | PA25 |
| MOTOR1 | PWM1 CH5 | PA24 |
| MOTOR2 | PWM1 CH6 | PA20 |
| MOTOR3 | PWM1 CH7 | PA19 |
CAMERA
| 名称 | 功能 |
|---|---|
| GND | |
| OUT | 接外部图传 |
| GND | |
| IN | 接外部摄像头 |
LED Strip
| 名称 | 功能 | 使用外设 | 引脚 |
|---|---|---|---|
| GND | |||
| NC | |||
| PY4 | 灯带 | SPI3 MOSI | PY4 (使用时JTAG不可用) |
| 3.3V |
ADC
| 名称 | 功能 | 使用外设 | 引脚 |
|---|---|---|---|
| GND | |||
| GND | |||
| ADC0.P3 | 电池电压测量 | ADC0 CH3 | PE16 |
| ADC0.P2 | 电流测量 | ADC0 CH2 | PE17 |
| 5V | |||
| 5V |