恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
Pixhawk1 飞控硬件详解:接口布局、外设映射与 ChibiOS 固件配置指南
首页
资讯中心
/
Pixhawk1 飞控硬件详解:接口布局、外设映射与 ChibiOS 固件配置指南
Pixhawk1 飞控硬件详解:接口布局、外设映射与 ChibiOS 固件配置指南
发布时间:2026/9/14 22:29:35
Pixhawk1 飞控硬件详解接口布局、外设映射与 ChibiOS 固件配置指南【免费下载链接】ardupilotArduPlane, ArduCopter, ArduRover, ArduSub source项目地址: https://gitcode.com/GitHub_Trending/ar/ardupilot导读Pixhawk1 是 ArduPilot 生态中最经典的 FMUv3 架构飞控最初由 3DR 生产如今多家厂商仍在销售布局一致的同规格板卡。本文以仓库内 Pixhawk1/README.md 为核心骨架结合 hwdef.dat 与 fmuv3.inc 源码级配置完整梳理该板卡的硬件特性、UART/连接器针脚定义、PWM 输出分组、GPIO 复用、模拟输入以及固件加载方式并深入解析 ArduPilot ChibiOS 硬件定义文件hwdef背后的实现原理帮助开发者完成从硬件接线到固件编译的完整落地。Pixhawk1 板卡概览与核心特性Pixhawk1 是 FMUv3 硬件标准的参考实现之一其硬件定义文件位于 libraries/AP_HAL_ChibiOS/hwdef/Pixhawk1/包含三个核心文件README.md—— 板卡接口与使用说明本文主体hwdef.dat—— 供chibios_hwdef.py处理的主硬件定义hwdef-bl.dat—— 引导加载程序bootloader硬件定义该板卡的核心硬件特性如下类别规格主控 MCUSTM32F427Cortex-M42MB FlashIMUMPU6000SPI LSM303D/L3GD20 组合气压计MS5611SPI磁力计板载 SPI LSM303D存储microSD 卡槽串口5 路 UART USBPWM 输出14 路8 MAIN 6 AUX总线I2C、CAN、外部 SPI其他Spektrum 卫星接收机接口、外部蜂鸣器、RGB LED、外部安全开关、电压监测从源码结构看Pixhawk1 的硬件定义基于 fmuv3include ../fmuv3/fmuv3.inc与 Pixhawk2 Cube、XUAV2.1 等板卡共享同一套 FMUv3 外设配置骨架。板卡在启动时由引导加载程序向地面站报告板卡 IDTARGET_HW_CUBE_F4ID 9见 Tools/AP_Bootloader/board_types.txt用于校验固件与硬件是否匹配。硬件架构与传感器组合双 IMU 设计Pixhawk1 采用双 IMU 冗余设计两者均通过 SPI 连接主控见 hwdef.datIMU Invensense SPI:mpu6000 ROTATION_ROLL_180 IMU LSM9DS0 SPI:lsm9ds0_g SPI:lsm9ds0_am ROTATION_ROLL_180 ROTATION_ROLL_180_YAW_270 ROTATION_PITCH_180MPU6000使用单路 SPI 片选MPU_CS安装方向旋转为ROTATION_ROLL_180LSM9DS0即 LSM303D加速度计/磁力计与 L3GD20陀螺仪的组合占用两个 SPIDEV 端点lsm9ds0_g用于陀螺仪、lsm9ds0_am用于加速度计/磁力计气压计与磁力计探测BARO MS5611 SPI:ms5611 COMPASS HMC5843 SPI:hmc5843 false ROTATION_PITCH_180 COMPASS LSM303D SPI:lsm9ds0_am ROTATION_NONE define AP_COMPASS_PROBING_ENABLED 1气压计使用 MS5611磁力计同时声明了 HMC5843 与 LSM303D 两种驱动以便上电探测。需要说明的是hwdef 中列出的传感器可以多于板卡实际焊接的器件驱动代码会在启动时逐个探测哪些设备真正响应。由于板载 LSM303D 磁力计易受电机电流干扰实际使用中通常搭配 GPS/罗盘一体模块上的外部 I2C 磁力计见下文罗盘一节。Pinout 与连接器针脚定义Pixhawk1 板卡引脚分布如图所示源自仓库内 PixhawkLabeled.jpgUART 映射Pixhawk1 的串口映射定义于 fmuv3.inc 中的SERIAL_ORDERSERIAL_ORDER OTG1 USART2 USART3 UART4 UART8 UART7对应到 ArduPilot 参数体系即为SERIALn 参数物理端口底层外设典型用途SERIAL0USBOTG1控制台/主 MAVLinkSERIAL1UART2Telem1数传 1SERIAL2UART3Telem2数传 2SERIAL3UART4GPS主 GPSSERIAL4UART8GPS2备用 GPSSERIAL5UART7spare备用 UART注意区分Telem1/Telem2 端口带有 RTS/CTS 流控引脚硬件定义见USART2_CTS/RTS、USART3_CTS/RTS其余 UART 无流控。GPS2/spare 端口标签 serial5在同一个 6 针连接器上引出两路 UART——该 spare 口最初用作调试控制台如今调试输出已迁移到 USB因此这个端口可自由用于任意 UART 协议。各连接器针脚定义原始 Pixhawk1 使用 DF13 连接器共 14 个端口。以下表格完整列出各端口的电气定义TELEM1 / TELEM2 端口Pin信号电压1 (红)VCC5V2 (黑)TX (OUT)3.3V3 (黑)RX (IN)3.3V4 (黑)CTS3.3V5 (黑)RTS3.3V6 (黑)GNDGNDGPS 端口Pin信号电压1 (红)VCC5V2 (黑)TX (OUT)3.3V3 (黑)RX (IN)3.3V4 (黑)CAN2 TX3.3V5 (黑)CAN2 RX3.3V6 (黑)GNDGNDSERIAL 4/5 端口Pin信号电压1 (红)VCC5V2 (黑)TX (#4)3.3V3 (黑)RX (#4)3.3V4 (黑)TX (#5)3.3V5 (黑)RX (#5)3.3V6 (黑)GNDGNDADC 6.6V 端口Pin信号电压1 (红)VCC5V2 (黑)ADC IN最高 6.6V3 (黑)GNDGNDADC 3.3V 端口Pin信号电压1 (红)VCC5V2 (黑)ADC IN最高 3.3V3 (黑)GNDGND4 (黑)ADC IN最高 3.3V5 (黑)GNDGNDI2C 端口Pin信号电压1 (红)VCC5V2 (黑)SCL3.3V上拉3 (黑)SDA3.3V上拉4 (黑)GNDGNDCAN 端口Pin信号电压1 (红)VCC5V2 (黑)CAN_H12V3 (黑)CAN_L12V4 (黑)GNDGNDSPI 端口Pin信号电压1 (红)VCC5V2 (黑)SPI_SCK3.3V3 (黑)SPI_MISO3.3V4 (黑)SPI_MOSI3.3V5 (黑)!SPI_NSS3.3V6 (黑)!GPIO3.3V7 (黑)GNDGNDPOWER 端口Pin信号电压1 (红)VCC5V2 (黑)VCC5V3 (黑)CURRENT最高 3.3V4 (黑)VOLTAGE最高 3.3V5 (黑)GNDGND6 (黑)GNDGNDSWITCH安全开关端口Pin信号电压1 (红)VCC3.3V2 (黑)!IO_LED_SAFETYGND3 (黑)SAFETYGNDRC 输入RC 输入配置在伺服排线一端的 RCIN 引脚上图中标记为 PPM支持所有主流 RC 协议。此外板卡还提供一路专用Spektrum 卫星接收机端口该端口支持软件电源控制可实现对 Spektrum 卫星接收机的绑定操作。在 fmuv3.inc 中RC 相关外设与 GPIO、蜂鸣器一起定义在 IO 协处理器IOMCU一侧RC 解码由 STM32F100 IO 控制器完成后再通过 USART6 与主控通信。PWM 输出MAIN 与 AUX 的分工Pixhawk1 支持最多14 路 PWM 输出分为两组硬件架构完全不同前 8 路标签 MAIN即 MAIN1~MAIN8由专用 STM32F100 IO 协处理器IOMCU控制。支持所有 PWM 输出格式但不支持 DShot。IOMCU 通过 USART6 与主控 STM32F427 通信见 fmuv3.inc 的IOMCU_UART USART6。后 6 路标签 AUX1~AUX6直接连接 STM32F427 主控支持所有 PWM 协议以及 DShot。输出分组与速率约束8 路 MAIN 输出分为 3 组PWM 1、2 → group1PWM 3、4 → group2PWM 5、6、7、8 → group36 路 AUX 输出分为 2 组PWM 1、2、3、4 → group1PWM 5、6 → group2同一组内的通道必须使用相同的输出速率若组内任一通道使用 DShot则整组通道都必须使用 DShot。这一约束源于定时器共享机制同一组 PWM 由同一个定时器TIM产生而定时器只能以单一更新频率运行。在 fmuv3.inc 中可以找到 AUX 通道的底层定时器分配PE14 TIM1_CH4 TIM1 PWM(1) GPIO(50) PE13 TIM1_CH3 TIM1 PWM(2) GPIO(51) PE11 TIM1_CH2 TIM1 PWM(3) GPIO(52) PE9 TIM1_CH1 TIM1 PWM(4) GPIO(53) PD13 TIM4_CH2 TIM4 PWM(5) GPIO(54) PD14 TIM4_CH3 TIM4 PWM(6) GPIO(55)AUX1~AUX4 共用 TIM1AUX5~AUX6 共用 TIM4与 README 中的分组说明完全对应。DShot 支持Pixhawk1 的 hwdef.dat 显式启用了 IOMCU 的 DShot 支持ROMFS io_firmware_dshot.bin Tools/IO_Firmware/iofirmware_dshot_lowpolh.bin define HAL_WITH_IO_MCU_DSHOT 1引导时主控会把 DShot 版 IO 固件写入 ROMFSio_firmware_dshot.bin并自动刷写到 IOMCU使 MAIN 输出侧也能获得 DShot 能力尽管板卡官方标注 MAIN 不支持 DShot实际能力取决于刷写的 IO 固件版本。电池监测板卡在 6 针 DF13 连接器上提供专用电源监测端口POWER 端口。正确的电池参数设置取决于所连接的电源模块power brick型号。在 fmuv3.inc 中板卡默认的电压/电流缩放系数为define HAL_BATT_VOLT_PIN 2 define HAL_BATT_CURR_PIN 3 define HAL_BATT_VOLT_SCALE 10.1 define HAL_BATT_CURR_SCALE 17.0电压检测接 ADC Pin2默认分压系数 10.1对应典型 10:1 分压的电源模块电流检测接 ADC Pin3默认霍尔传感器系数 17.0 A/V实际使用时需根据所接电源模块的型号在BATT_VOLT_MULT、BATT_CURR_AMP_PERVOLT等参数中修正。底层电压/电流采样引脚定义见 fmuv3.incPA2 BATT_VOLTAGE_SENS ADC1 SCALE(1) PA3 BATT_CURRENT_SENS ADC1 SCALE(1)罗盘CompassPixhawk1 板载一颗LSM303D SPI 磁力计SPIDEV 条目lsm9ds0_am。但由于板上干扰电机电流、电源走线等实际使用时通常不使用板载罗盘而是搭配 GPS/罗盘一体模块中的外部 I2C 磁力计。从 hwdef.dat 可见磁力计探测同时声明了板载 SPI 的 HMC5843 与 LSM303D并开启AP_COMPASS_PROBING_ENABLED以探测外部罗盘。外部罗盘通常挂接在 I2C 总线上fmuv3.inc 中的I2C_ORDER I2C2 I2C1将外部 I2C 总线排为 bus 1、内部总线排为 bus 0这是从 PX4 时代延续下来的约定保证用户在迁移固件时无需重新做罗盘标定。GPIO 复用与引脚编号6 路 AUX 输出端口可复用为 GPIO用于继电器、按键、转速计等。复用方法是通过BRD_PWM_COUNT参数限制 PWM 输出数量例如将BRD_PWM_COUNT设为 4则 AUX5、AUX6 释放为 GPIO。ArduPilot 的PIN变量如继电器RELAY_PIN、按键BTN_PIN中 GPIO 编号如下端口GPIO 编号AUX150AUX251AUX352AUX453AUX554AUX655从源码可见GPIO 编号与 PWM 通道在 fmuv3.inc 中成对声明PWM(1) GPIO(50)等编号从 50 起始以与 PX4 时代的约定保持一致。此外板卡还提供两个通用输出EXTERN_GPIO1GPIO 1与EXTERN_GPIO2GPIO 2见 fmuv3.inc。模拟输入ADC通道Pixhawk1 在 FMU 上有6 路模拟输入外加 IO 协处理器上的伺服排线电压与 RSSI 监测ADC 引脚功能ADC Pin2电池电压ADC Pin3电池电流传感器ADC Pin4Vdd 5V 电源检测ADC Pin13ADC 3.3V 端口 pin1ADC Pin14ADC 3.3V 端口 pin2ADC Pin15ADC 6.6V 端口ADC Pin103RSSI 电压监测对应的底层引脚定义fmuv3.inc包括BATT_VOLTAGE_SENSPA2、BATT_CURRENT_SENSPA3、VDD_5V_SENSPA4、AUX_POWERPC3、AUX_ADC2PC4、PRESSURE_SENSPC5气压计模拟口现已很少使用。加载固件Pixhawk1 出厂预装 ArduPilot 兼容引导加载程序可通过任意 ArduPilot 兼容地面站如 Mission Planner、QGroundControl加载*.apj格式固件文件。*.apj即ArduPilot JSON 固件格式APJ引导程序通过APJ_BOARD_ID此处为TARGET_HW_CUBE_F4ID 9校验固件与板卡的匹配性见 fmuv3.inc。Pixhawk1 的引导加载程序配置 hwdef-bl.dat 直接 include fmuv3 的引导配置include ../fmuv3/hwdef-bl.dat无需任何额外改动这也是 FMUv3 系列板卡高度统一的表现。深入hwdef 硬件定义文件的构建机制对于想基于 Pixhawk1 移植新板卡的开发者fmuv3.inc 本身就是一份极佳的教学参考其中注释详尽说明了 hwdef 语法MCU 声明MCU STM32F4xx STM32F427xx同时指定 ChibiOS 的 MCU 类型与硬件数据库STM32F427xx.py该数据库位于libraries/AP_HAL_ChibiOS/hwdef/script/目录包含每个引脚的复用功能表alternate function table与 DMA 通道表晶振与定时器OSCILLATOR_HZ 24000000定义 24MHz 晶振STM32_ST_USE_TIMER 5指定 ChibiOS 系统定时器使用 TIM5Flash 大小FLASH_SIZE_KB 2048用于生成链接脚本Pixhawk1 的 1MB 变体 Pixhawk1-1M/hwdef.dat 则覆盖为FLASH_SIZE_KB 1024并引入minimize_features.inc裁剪功能以适配更小的 Flash引脚定义语法格式为P端口引脚 标签 外设类型 [修饰符]例如PA2 BATT_VOLTAGE_SENS ADC1 SCALE(1)外设类型必须是UARTn/USARTn/OTGn/SPIn/I2Cn/ADCn/TIMn/SWD/SDIO/INPUT/OUTPUT/CS之一修饰符包括引脚速率SPEED_HIGH等、上下拉PULLUP、输出类型OPENDRAIN与默认电平SPI 设备表SPIDEV 名称 总线 DEVID 片选 模式 低速 高速定义全部可访问的 SPI 设备。DEVID 值与设备名特意与 PX4 端口保持一致使用户迁移到 ChibiOS 后无需重新进行加速度计与罗盘标定存储与文件系统define HAL_STORAGE_SIZE 16384指定参数存储区大小HAL_WITH_RAMTRON 1允许在检测到 FRAM 芯片SPIDEV ramtron时使用其存储参数HAL_OS_FATFS_IO 1启用 microSD 的 FAT 文件系统支持构建流程提示新增或修改 hwdef 后可用chibios_hwdef.py手动生成hwdef.h检查结果。生成的头文件格式良好、可读性强官方强烈建议在新板卡移植时仔细阅读生成的hwdef.h以确认配置符合预期。板卡固件的实际编译请参考仓库根目录的 BUILD.md例如使用./waf configure --board Pixhawk1后执行./waf copter或 plane、rover 等目标进行构建。衍生变体与选型建议同一硬件体系在仓库中还衍生出多个变体目录便于按需选型Pixhawk1-1Mhwdef.dat面向 1MB Flash 版本的板卡裁剪了部分功能并在编译期通过BOARD_CHECK_F427_USE_2M宏防止误刷到 2MB 板卡Pixhawk1-bdshot / Pixhawk1-1M-bdshotDShot 增强版配置hwdef.dat基于fmuv3-bdshot.inc针对需要全部 8 路 MAIN 输出支持 DShot 的电调场景选择建议常规多旋翼/固定翼用途直接使用标准 Pixhawk1 固件即可若需在 MAIN 输出侧使用 DShot 电调请选择 bdshot 变体固件1MB Flash 的老批次板卡务必使用 Pixhawk1-1M 固件否则编译期会直接报错提示BOARD_CHECK_F427_USE_1M宏会抛出 ERROR: 1M flash use Pixhawk1-1M。结语Pixhawk1 作为 FMUv3 架构的标杆板卡其价值不仅在于成熟稳定的硬件设计更在于 ArduPilot 仓库中以 hwdef.dat fmuv3.inc 方式沉淀下来的、完整可读的硬件描述体系。无论是接线调试、参数配置还是基于此板卡进行新硬件移植本文梳理的接口定义、外设映射与构建机制都能作为直接可用的技术参考。【免费下载链接】ardupilotArduPlane, ArduCopter, ArduRover, ArduSub source项目地址: https://gitcode.com/GitHub_Trending/ar/ardupilot创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考