第2章:飞控计算机硬件架构:处理器选型与接口设计

大家好,我是你们的老朋友。今天咱们聊聊飞控计算机的硬件架构。说实话,这个题目很大,但我尽量用接地气的方式讲清楚。

飞控计算机,说白了就是无人机的大脑。它要处理传感器数据,计算控制律,还要驱动电机。选什么样的处理器,配什么样的接口,直接决定了飞控的性能和可靠性。

2.1 处理器选型:STM32、ARM Cortex、FPGA、DSP

处理器选型,我个人的经验是:没有最好的,只有最合适的。不同场景下,选择完全不同。

2.1.1 STM32:入门首选,性价比之王

STM32 系列,尤其是 STM32F4 和 STM32F7,是飞控领域最常见的处理器。为什么?

  • 成本低:一片 STM32F405 不到 20 块钱
  • 生态好:HAL 库、FreeRTOS、各种驱动,网上资料一抓一大把
  • 够用:主频 168MHz~216MHz,跑个姿态解算和 PID 控制绰绰有余

我个人的建议:如果你刚开始做飞控,或者做的是消费级无人机,STM32 绝对是最稳妥的选择。我在项目中用过 STM32F427,配合 MPU9250 和 MS5611,跑 1kHz 的控制频率,CPU 占用率才 40% 左右。

但要注意,STM32 的浮点运算能力有限。虽然 F4 系列有 FPU,但做复杂的卡尔曼滤波时,还是会有点吃力。

2.1.2 ARM Cortex-A 系列:高性能场景

当你的飞控需要跑视觉算法、SLAM 或者复杂的路径规划时,STM32 就不够用了。这时候需要上 ARM Cortex-A 系列,比如树莓派的 BCM2837 或者全志的 H3。

这类处理器的优势很明显:

  • 主频高:1GHz 以上,甚至能到 2GHz
  • 能跑 Linux:可以装 ROS、OpenCV,做高级任务
  • 内存大:512MB 甚至 1GB 的 DDR

但代价也很大:功耗高、启动慢、实时性差。我见过一个项目,用树莓派做飞控,结果因为 Linux 的调度延迟,导致电机响应慢了 10ms,飞机直接翻了。嗯,这里要注意:实时性要求高的任务,别用 Linux

2.1.3 FPGA:硬实时与并行处理

FPGA 在飞控里用得不多,但一旦用上,就是大杀器。为什么?

  • 硬实时:逻辑门级别的延迟,微秒级响应
  • 并行处理:可以同时处理多个传感器数据
  • 接口灵活:想接什么协议就接什么协议

我记得有个做工业级飞控的朋友,用 Xilinx 的 Artix-7 做了一款飞控。他同时接了 3 个 IMU、2 个 GPS、1 个气压计,所有数据在 FPGA 里做硬件同步,时间戳精度达到纳秒级。这种方案,STM32 根本做不到。

避坑指南:我曾经以为 FPGA 是万能的,结果发现开发周期太长了。一个简单的 SPI 接口,用 STM32 半小时搞定,用 FPGA 得折腾两天。所以,除非你有硬实时或超高带宽的需求,否则别碰 FPGA

2.1.4 DSP:数字信号处理的王者

DSP 在飞控里主要用于音频处理、振动分析或者复杂的滤波算法。比如 TI 的 C2000 系列,专门为电机控制优化过。

DSP 的优势:

  • MAC 运算快:一个时钟周期能完成乘加运算
  • 专门指令集:比如 FIR 滤波、FFT 都有硬件加速
  • 低延迟:中断响应时间极短

但 DSP 的通用性差,跑不了复杂的操作系统,外设也少。所以现在很多飞控都采用 ARM + DSP 双核 的方案,ARM 跑控制逻辑,DSP 做信号处理。

2.2 传感器接口:IMU、GPS、气压计

传感器是飞控的眼睛。接口选不好,数据就不可靠。我见过太多因为接口问题导致炸机的案例了。

2.2.1 IMU 接口:SPI 还是 I2C?

IMU(惯性测量单元)是飞控最核心的传感器。常见的接口有 SPI 和 I2C。

接口 速度 抗干扰 适用场景
SPI 10MHz+ 高性能飞控
I2C 400kHz 低成本飞控

我个人强烈建议:IMU 一定要用 SPI。为什么?

  • SPI 是全双工,读写速度快
  • I2C 容易受干扰,尤其在电机转动时
  • SPI 可以接多个设备,片选控制简单

我曾经在一个项目中用了 I2C 接口的 MPU6050,结果电机一启动,数据就跳变。后来换成 SPI 接口的 ICM-20948,问题立刻解决。嗯,这就是血的教训。

2.2.2 GPS 接口:UART 是标配

GPS 模块几乎都用 UART 接口。常见的协议是 NMEA 0183 或者 u-blox 的 UBX 协议。

这里有个细节:GPS 的波特率。默认一般是 9600bps,但我会改成 115200bps。为什么?因为 GPS 数据量大,9600 容易丢包。尤其是做 RTK 定位时,数据量更大。

小技巧:GPS 模块的 PPS 引脚一定要接。这个引脚每秒输出一个脉冲,可以用来做时间同步。我在做双目视觉飞控时,就是靠 PPS 把摄像头和 GPS 的时间对齐的。

2.2.3 气压计接口:I2C 为主

气压计,比如 MS5611、BMP280,基本都是 I2C 接口。为什么不用 SPI?因为气压计数据更新率低(10~100Hz),I2C 的速度完全够用。

但要注意:气压计对温度敏感。我建议把气压计放在远离发热元件的地方,或者做温度补偿。我在项目中遇到过,气压计紧挨着电源芯片,结果高度数据漂了 5 米。

2.3 执行机构接口:PWM、SBUS、CAN

执行机构就是电机和舵机。接口选错了,飞机就失控了。

2.3.1 PWM:最传统,也最可靠

PWM 是飞控控制电机的标准方式。50Hz 的周期,1~2ms 的脉宽,对应 0~100% 的油门。

但 PWM 有个缺点:占用的定时器资源多。一个定时器只能输出 4 路 PWM,四轴就需要 4 路,八轴就需要 8 路。STM32 的定时器有限,所以很多飞控会用 PPM 编码 或者 SBUS 来减少资源占用。

2.3.2 SBUS:串行遥控信号

SBUS 是 Futaba 推出的串行协议,用一根线就能传输 16 个通道的数据。波特率 100kbps,8 位数据位,2 位停止位,偶校验。

我建议:接收机尽量用 SBUS。为什么?

  • 接线简单:一根信号线就够了
  • 延迟低:SBUS 的帧周期是 9ms,比 PWM 的 20ms 快一倍
  • 通道多:16 个通道,足够用了

避坑指南:我曾经在 SBUS 的解析上栽过跟头。SBUS 的信号是反相的,需要用硬件反相器或者软件取反。我第一次做的时候没注意,结果遥控器信号全是乱的。嗯,后来老老实实加了个 74HC04 反相器。

2.3.3 CAN 总线:工业级的选择

CAN 总线在工业无人机和车规级飞控中很常见。为什么?

  • 可靠性高:差分信号,抗干扰能力强
  • 距离远:40 米内没问题
  • 多节点:一条总线可以挂几十个设备

CAN 的波特率一般用 1Mbps,数据帧 8 个字节。我做过一个项目,用 CAN 总线连接 4 个电调,每个电调反馈转速、温度、电流。这样飞控就能实时监控每个电机的状态,比 PWM 单向通信强太多了。

但 CAN 的缺点是:开发复杂。需要配置过滤器、掩码,还要处理总线仲裁。如果你只是做简单的四轴,用 PWM 就够了。但如果是做物流无人机或者载人飞行器,我强烈建议上 CAN。

小结

好了,这一章的内容就到这里。总结一下:

  • 处理器选型:STM32 入门,ARM Cortex-A 做高级任务,FPGA 做硬实时,DSP 做信号处理
  • 传感器接口:IMU 用 SPI,GPS 用 UART,气压计用 I2C
  • 执行机构接口:PWM 简单可靠,SBUS 延迟低,CAN 适合工业级

下一章,我会讲飞控的软件架构,包括实时操作系统、任务调度和通信协议。咱们下期见。