1. Pixhawk硬件架构概览
做飞控开发这么多年,我经常被问到同一个问题:“Pixhawk到底强在哪?” 其实答案就藏在它的硬件架构里。今天咱们就来拆开看看,FMUv2/v3/v5这些板子到底是怎么设计的。
1.1 主处理器与协处理器的分工
Pixhawk系列的核心,说白了就是“一个大脑管飞行,一个小脑管安全”。
- 主处理器(FMU):负责传感器融合、姿态控制、导航算法。STM32F4/F7/H7系列,主频从168MHz到480MHz不等。
- 协处理器(IO):专门处理PWM输出、RC输入、安全开关。用的是STM32F1系列,独立于主芯片运行。
我个人习惯把主处理器比作“飞行员”,协处理器是“副驾驶”。飞行员负责复杂决策,副驾驶盯着仪表盘,万一飞行员宕机了,副驾驶还能把飞机拉回安全状态。
关键点:主处理器和协处理器之间通过UART通信。主芯片发送控制指令,协芯片负责生成精确的PWM波形。这种分离设计,让主芯片可以专心跑算法,不用被PWM中断频繁打断。
我的经验:在FMUv5上调试时,我遇到过主芯片负载过高导致PWM抖动的问题。后来把PWM生成任务全扔给协处理器,问题就解决了。嗯,这就是分工的意义。
1.2 处理器选型对比
不同版本的Pixhawk,用的芯片也不一样。我整理了一张表,方便你对比:
| 版本 | 主处理器 | 协处理器 | 主频 | RAM | Flash |
|---|---|---|---|---|---|
| FMUv2 | STM32F427 | STM32F103 | 168 MHz | 256 KB | 2 MB |
| FMUv3 | STM32F427 | STM32F103 | 168 MHz | 256 KB | 2 MB |
| FMUv5 | STM32F765 | STM32F100 | 216 MHz | 512 KB | 2 MB |
你可能会问:“FMUv2和v3看起来一模一样,区别在哪?” 其实v3只是把Flash从1MB升级到了2MB,其他完全一样。我当年做v2开发时,最头疼的就是Flash不够用,加个日志功能就得删掉点别的。v3出来时我第一个升级了。
1.3 外设总线拓扑结构
Pixhawk的外设连接,就像城市的交通网络。不同的设备走不同的路,有的走高速(SPI),有的走小巷子(I2C)。
SPI总线
- 用途:连接IMU(加速度计、陀螺仪)、气压计、外部Flash
- 特点:高速、全双工,适合传感器数据流
- 典型设备:MPU9250、MS5611、BMP280
我个人习惯把SPI比作“高速公路”。数据量大、实时性要求高的传感器,都走SPI。我曾经在项目中遇到过SPI时钟线干扰的问题,导致IMU数据偶尔跳变。后来把SPI时钟频率从10MHz降到5MHz,问题就消失了。嗯,有时候慢一点反而更稳。
I2C总线
- 用途:连接外部传感器、LED、I2C扩展板
- 特点:双线制、地址寻址,适合低速设备
- 典型设备:OLED屏幕、磁力计(HMC5883L)
I2C就像“社区小路”,设备多但速度慢。你想想看,一条I2C总线上挂七八个设备,每个都要轮询,效率肯定上不去。所以我建议:IMU这类高频传感器别走I2C,走SPI。
UART总线
- 用途:GPS、数传、RC接收机、协处理器通信
- 特点:异步、点对点,适合长距离
- 典型设备:Ublox GPS、Holybro数传、SBUS接收机
UART是“电话线”,一对一通信。Pixhawk上通常有5-6个UART口,每个都可以独立配置。我记得有一次调试GPS,发现数据老是丢包,查了半天原来是UART波特率没对上。嗯,这种低级错误我犯过一次就记住了。
CAN总线
- 用途:连接电调、外部传感器、扩展板
- 特点:差分信号、多主通信、抗干扰强
- 典型设备:CAN ESC、UAVCAN传感器
CAN总线是“工业专线”,抗干扰能力强,适合在电机附近使用。我做过一个六旋翼项目,电机启动时UART通信经常被干扰,换成CAN总线后问题就解决了。
避坑指南:我曾经在FMUv2上同时使用SPI和I2C访问同一个传感器,结果导致总线冲突。后来才意识到,同一个传感器只能通过一种总线访问,不能混用。
1.4 总线拓扑结构图
下面这张图是我画的Pixhawk总线拓扑结构,你可以直观地看到各个外设是怎么连接的:
1.5 实际开发中的注意事项
了解了架构,咱们聊聊实际开发中容易踩的坑:
- SPI片选信号:每个SPI设备都需要独立的片选引脚。我见过有人把两个设备接到同一个片选上,结果两个设备同时响应,数据全乱了。
- I2C上拉电阻:I2C总线需要外部上拉电阻。Pixhawk板子上已经焊好了,但如果你自己扩展外设,记得加上4.7kΩ的上拉电阻。
- UART电平匹配:Pixhawk的UART是3.3V电平,如果你接5V的设备(比如某些GPS模块),需要加电平转换芯片。
- CAN终端电阻:CAN总线两端需要120Ω终端电阻。我遇到过CAN通信不稳定,查了半天发现是忘了焊终端电阻。
我的建议:刚开始做Pixhawk外设开发时,先拿FMUv2练手。它便宜、资料多、社区活跃。等把SPI和I2C调通了,再上FMUv5体验DMA和高速外设。
好了,这一章咱们把Pixhawk的硬件架构捋了一遍。从主协处理器分工,到四条总线的特点,再到实际开发中的注意事项。下一章我会带你深入SPI总线,手把手教你写一个IMU驱动。