ArduPilot ARK PI6X 飞控硬件定义解析:引脚、串口映射与传感器配置全解
【免费下载链接】ardupilotArduPlane, ArduCopter, ArduRover, ArduSub source项目地址: https://gitcode.com/GitHub_Trending/ar/ardupilot
本文以 ArduPilot 仓库中libraries/AP_HAL_ChibiOS/hwdef/ARK_PI6X/目录下的硬件定义文档与配套hwdef.dat、common.inc文件为核心,系统讲解 ARK PI6X 飞控的处理器与传感器配置、全部接口的引脚定义、UART 映射与 RC 协议选项、PWM/DShot 输出分组以及 INA226 电池监测的实现方式。读完本文,你可以完整掌握该板的硬件接线关系,并能通过 ChibiOS 硬件定义文件逐项核对每个引脚的实际用途与默认参数。
一、硬件概述
ARK PI6X 是 ARK Electronics 推出的一款支持 Raspberry Pi 协处理器的飞控,其硬件规格如下:
处理器
- STM32H743 32 位处理器,主频 480MHz
- 2MB Flash、1MB RAM
- 配备 DF40HC 连接器,用于外接 RPI 协处理器(必需),兼容 Pi CM4 与 CM5
这与硬件定义文件一致:common.inc 中声明MCU STM32H7xx STM32H743xx、FLASH_SIZE_KB 2048,晶振频率为 16MHz,板级固件标识为TARGET_HW_ARK_PI6X(即烧录固件时选择的 board ID)。
传感器
- 2 x Invensense ICM-42688P IMU(带加热电阻)
- Bosch BMP390 气压计
- ST IIS2MDC 磁力计(板载罗盘)
- INA226 电压/电流监测芯片
- 蜂鸣器
电源
- 输入电压 5.5V ~ 25.2V(2S ~ 6S)
- 5V 输出 2A:主系统 300mA,传感器加热 200mA
尺寸
- 板尺寸 91.5mm x 56mm,重量 41g
硬件接口一览
| 接口 | 信号 | 连接器 |
|---|---|---|
| Micro SD | 存储卡 | SD 卡槽 |
| PWM + UART4 | 8 路 PWM(支持双向 DSHOT)+ UART4 RX/TX | JST-GH 11 Pin |
| RC | 5V 输出、UART | JST-GH 4 Pin |
| TELEM1 | 5V 输出、带流控的 UART | JST-GH 6 Pin |
| GPS | 5V 输出、USART1、I2C1 | JST-GH 6 Pin |
| CAN | 5V 输出、CAN1 | JST-GH 4 Pin |
| DEBUG | 3.3V 输出、USART3、SWD | JST-SH |
二、硬件定义文件结构
该板的完整硬件描述由两个文件组成:
- hwdef.dat:被 ChibiOS 构建脚本处理后生成,包含串口顺序、PWM 通道、SPI/I2C 总线、传感器地址、电源使能与 LED 等全部定义;
- common.inc:被
hwdef.dat通过include common.inc引入,声明 MCU 型号、Flash 大小、USB、SWD、调试串口、各 UART 的引脚复用以及 SD 卡 SDMMC2 总线。
从 hwdef.dat 中的存储与启动配置还能看到几个值得注意的实现细节:
FLASH_RESERVE_START_KB 128:前 128KB Flash 预留给 Bootloader;HAL_STORAGE_SIZE 32768+STORAGE_FLASH_PAGE 14:H743 共 16 个 128KB 页,最后 2 页用作 flash storage(参数存储);USE_ALT_RAM_MAP 1:为兼容 PX4 风格的 bootloader 而启用另一套 RAM 布局;ENABLE_DFU_BOOT 1:支持通过 DFU 重启方式安装 bootloader(若以--secure-bl编译则会禁用 DFU);HAL_OS_FATFS_IO 1:启用 FAT 文件系统支持,依赖通过 SDMMC 定义的 microSD 卡。
三、接口引脚定义(Pinout)
以下引脚表完整来自官方硬件文档,是所有外接设备接线的基本依据。
PWM + UART4 — JST-GH 11 Pin
| 引脚 | 信号名 | 电平 |
|---|---|---|
| 1 | FMU_CH1_EXT | 3.3V |
| 2 | FMU_CH2_EXT | 3.3V |
| 3 | FMU_CH3_EXT | 3.3V |
| 4 | FMU_CH4_EXT | 3.3V |
| 5 | FMU_CH5_EXT | 3.3V |
| 6 | FMU_CH6_EXT | 3.3V |
| 7 | FMU_CH7_EXT | 3.3V |
| 8 | FMU_CH8_EXT | 3.3V |
| 9 | UART4_TX_EXT | 3.3V |
| 10 | UART4_RX_EXT | 3.3V |
| 11 | GND | GND |
RC — JST-GH 4 Pin
| 引脚 | 信号名 | 电平 |
|---|---|---|
| 1 | 5.0V | 5.0V |
| 2 | USART6_RX_IN_EXT | 3.3V |
| 3 | USART6_TX_OUTPUT_EXT | 3.3V |
| 4 | GND | GND |
CAN — JST-GH 4 Pin
| 引脚 | 信号名 | 电平 |
|---|---|---|
| 1 | 5.0V | 5.0V |
| 2 | CAN1_P | 5.0V |
| 3 | CAN1_N | 5.0V |
| 4 | GND | GND |
GPS — JST-GH 6 Pin
| 引脚 | 信号名 | 电平 |
|---|---|---|
| 1 | 5.0V | 5.0V |
| 2 | USART1_TX_GPS1_EXT | 3.3V |
| 3 | USART1_RX_GPS1_EXT | 3.3V |
| 4 | I2C1_SCL_GPS1_EXT | 3.3V |
| 5 | I2C1_SDA_GPS1_EXT | 3.3V |
| 6 | GND | GND |
TELEM1 — JST-GH 6 Pin
| 引脚 | 信号名 | 电平 |
|---|---|---|
| 1 | 5.0V | 5.0V |
| 2 | UART7_TX_TELEM1_EXT | 3.3V |
| 3 | UART7_RX_TELEM1_EXT | 3.3V |
| 4 | UART7_CTS_TELEM1_EXT | 3.3V |
| 5 | UART7_RTS_TELEM1_EXT | 3.3V |
| 6 | GND | GND |
飞控 Debug — JST-SH 10 Pin
| 引脚 | 信号名 | 电平 |
|---|---|---|
| 1 | 3V3_FMU | 3.3V |
| 2 | USART3_TX_DEBUG | 3.3V |
| 3 | USART3_RX_DEBUG | 3.3V |
| 4 | FMU_SWDIO | 3.3V |
| 5 | FMU_SWCLK | 3.3V |
| 6 | SPI6_SCK_EXTERNAL1 | 3.3V |
| 7 | NFC_GPIO | 3.3V |
| 8 | PD15 | 3.3V |
| 9 | FMU_NRST | 3.3V |
| 10 | GND | GND |
四、UART 映射与串口复用
ARK PI6X 的串口映射如下(标记Internal的端口直接连接 Raspberry Pi):
| 串口 | 功能 | 说明 |
|---|---|---|
| SERIAL0 | USB | 内部连接到 RPI,通过 RPI 配置飞控 |
| SERIAL1 | UART7(Telem1) | 外部遥测口 |
| SERIAL2 | UART5 | 内部连接(对应 Pi 的 /dev/ttyAMA4) |
| SERIAL3 | USART1(GPS1) | GPS 串口 |
| SERIAL4 | UART4(ESC Telem) | 电调遥测 |
| SERIAL5 | USART6(RC Input) | RC 输入 |
这一顺序与 hwdef.dat 中的定义完全对应:
SERIAL_ORDER OTG1 UART7 UART5 USART1 UART4 USART6即 SERIAL0=OTG1(USB)、SERIAL1=UART7、SERIAL2=UART5、SERIAL3=USART1、SERIAL4=UART4、SERIAL5=USART6。
几个值得注意的实现细节:
- 除 UART4 外所有 UART 均支持 DMA。在 hwdef.dat 中 UART4 的两个引脚被显式标记为
NODMA(PH13 UART4_TX UART4 NODMA、PH14 UART4_RX UART4 NODMA),这与文档说明一致。 - 任何串口都可以通过修改其 protocol 参数重新分配用途,例如把某个空闲串口改为 GPS、TELEM2、MAVLINK 等协议。
- SERIAL4 的默认协议是 ESC 遥测:
define DEFAULT_SERIAL4_PROTOCOL SerialProtocol_ESCTelemetry,波特率 115200;SERIAL5 的默认协议是 RCIN:define DEFAULT_SERIAL5_PROTOCOL SerialProtocol_RCIN。 - SERIAL2(UART5)在板内直连 Pi:从 common.inc 的注释可以看到其 RTS/CTS/TX/RX 接到 Pi 的
/dev/ttyAMA4,用于与协处理器的高带宽内部通信。
五、RC 输入配置
RC 输入配置在 RX6(USART6_RX)引脚上,支持除 PPM 之外的所有 RC 协议。默认参数为SERIAL5_PROTOCOL = 23(RCin),即出厂即可直接接收 SBUS 等单向信号。按协议不同,接线与参数要求如下:
- SBUS / DSM / SRXL:仅连接 RX6 引脚即可;
- FPort:需要连接 TX6,并设置
SERIAL5_OPTIONS = 7(启用 FPort 遥测); - CRSF:除 RX6 外还需要连接 TX6,且自动提供遥测通道;
- SRXL2:需要连接 TX6,自动提供遥测,并设置
SERIAL5_OPTIONS = 4。
对应源码依据:common.inc 中 RC 口复用为PC6 USART6_TX USART6与PC7 USART6_RX USART6,TX6 的存在正是 FPort/CRSF/SRXL2 等带遥测协议能够工作的硬件前提。
六、PWM 输出与 DShot 配置
该板 8 路输出全部支持 PWM 和 DShot,其中电机 1~4 默认配置为双向 DShot(Bidirectional-DSHOT)。所有输出按以下三个定时器组划分,同一组内的输出必须同为 PWM 或同为 DShot:
| 电机 | 组 | 定时器 |
|---|---|---|
| 1 ~ 4 | Group1 | TIM5 |
| 5 ~ 6 | Group2 | TIM4 |
| 7 ~ 8 | Group3 | TIM12 |
从 hwdef.dat 的 PWM 定义可以看到对应的引脚与标志位:
PI0 TIM5_CH4 TIM5 PWM(1) GPIO(50) BIDIR PH12 TIM5_CH3 TIM5 PWM(2) GPIO(51) PH11 TIM5_CH2 TIM5 PWM(3) GPIO(52) BIDIR PH10 TIM5_CH1 TIM5 PWM(4) GPIO(53) PD13 TIM4_CH2 TIM4 PWM(5) GPIO(54) PD14 TIM4_CH3 TIM4 PWM(6) GPIO(55) # we need to disable DMA on the last 2 FMU channels # as timer 12 doesn't have a TIMn_UP DMA option PH6 TIM12_CH1 TIM12 PWM(7) GPIO(56) NODMA PH9 TIM12_CH2 TIM12 PWM(8) GPIO(57) NODMA两处实现细节值得注意:
- BIDIR 标志出现在 PWM1 与 PWM3 上,即 TIM5 的两个通道具备双向 DShot 能力,与文档“Motors 1-4 为 Bidirectional-DSHOT”的描述相呼应(TIM5 承载电机 1~4);
- TIM12 的两个通道被显式
NODMA,源码注释解释了原因:TIM12 没有 TIMn_UP 的 DMA 选项,因此必须禁用 DMA。
另外,蜂鸣器使用独立的 TIM14_CH1(PF9,GPIO(77) ALARM)驱动,与 8 路电调输出互不干扰。
七、电池监测(INA226)
板载 INA226 数字功率监测芯片,最高支持 6S 锂聚合物电池(与 25.2V 输入上限一致)。默认电池参数为:
BATT_MONITOR = 21(INA226)
源码侧的完整定义位于 hwdef.dat:
# I2C3 internal (INA226 power monitor) PA8 I2C3_SCL I2C3 PH8 I2C3_SDA I2C3 # INA226 battery monitor define HAL_BATTMON_INA2XX_BUS 1 define HAL_BATTMON_INA2XX_ADDR 0 define HAL_BATT_MONITOR_DEFAULT 21即 INA226 挂在内置 I2C3 总线上(地址 0x00,BUS 1),并且HAL_BATT_MONITOR_DEFAULT 21保证了首次开机无需手工设置即可自动识别为 INA226 电池监控。I2C 总线顺序为I2C_ORDER I2C1 I2C3 I2C4,其中 I2C3/I2C4 为内部总线(HAL_I2C_INTERNAL_MASK 6)。
八、罗盘、气压计与 IMU 配置
板载罗盘
板载罗盘为 ST IIS2MDC。由于电源干扰,实际使用中常常禁用该内置罗盘而改用远置罗盘。从 hwdef.dat 可以看到其配置:
COMPASS IIS2MDC I2C:2:0x1E false ROTATION_YAW_180 define AP_COMPASS_PROBING_ENABLED 1 define AP_COMPASS_IIS2MDC_ENABLED 1罗盘位于内部 I2C4(总线序号 2)、地址 0x1E,安装朝向为 ROTATION_YAW_180,并启用了罗盘探测机制。
气压计
BMP390 气压计同样位于 I2C4 上,BARO BMP388 I2C:2:0x76—— 即使用 BMP388 驱动读取地址 0x76 的设备(BMP390 与 BMP388 寄存器兼容,从源码结构看复用了同一驱动)。
双 IMU 与加热控制
两颗 ICM-42688P IMU 分别通过 SPI1 与 SPI2 连接,均工作在 16MHz SPI 时钟、2MHz 数据速率,并各自带片选与 DRDY(数据就绪)中断引脚:
# SPI2 - ICM42688 PI1 SPI2_SCK SPI2 ... SPIDEV icm42688_1 SPI1 DEVID1 IMU1_CS MODE3 2*MHZ 16*MHZ SPIDEV icm42688_2 SPI2 DEVID1 IMU2_CS MODE3 2*MHZ 16*MHZ IMU Invensensev3 SPI:icm42688_1 ROTATION_ROLL_180_YAW_135 IMU Invensensev3 SPI:icm42688_2 ROTATION_ROLL_180_YAW_45两颗 IMU 在 PCB 上的安装朝向不同(分别为 ROTATION_ROLL_180_YAW_135 与 ROTATION_ROLL_180_YAW_45),硬件定义中已按实际贴片方向写入旋转参数,软件无需再手动校正。
IMU 加热(heater)由 PB10 的HEATER_EN引脚控制,默认参数为:
define HAL_HAVE_IMU_HEATER 1 define HAL_IMU_TEMP_DEFAULT 45 define HAL_IMUHEAT_P_DEFAULT 50 define HAL_IMUHEAT_I_DEFAULT 0.07即默认目标温度 45°C,PID 参数 P=50、I=0.07,用于在低温环境下稳定 IMU 噪声性能。
九、其他板级硬件特性
- Micro SD 存储:通过 SDMMC2 总线接入(CK/CMD/D0~D3 共 6 根信号线,见 common.inc),并启用 FAT 文件系统(
HAL_OS_FATFS_IO 1),供电使能脚为 PC13(VDD_3V3_SD_CARD_EN); - RGB 指示灯:PE3/PE4/PE5 分别驱动红/绿/蓝 LED(GPIO 90/91/92,开漏输出高电平点亮),用于飞行状态与解锁指示(
AP_NOTIFY_GPIO_LED_RGB_*); - 解锁指示:PE6 的
nARMED引脚在解锁时拉高,可外接指示灯; - 电压采样:ADC1 上配置了 SCALED1~SCALED4 四路模拟输入及 5V 电压分压采样(
VDD_5V_SENS); - 电源管理:PG10 为 5V 高功率负载使能脚(
nVDD_5V_HIPOWER_EN),PF13 为其过流/失效反馈,PG1~PG3 为三路电压砖的 nVALID 检测输入; - 默认 GPIO 行为:
DEFAULTGPIO OUTPUT LOW PULLDOWN,上电时所有未使用引脚默认拉低,避免 ESD 问题。
十、固件烧录方式
ARK PI6X 支持两种固件烧录途径:
- SWD 直接烧录:使用 10 针 DEBUG 口(含 SWDIO/SWCLK/RESET)连接调试器;
- USB 烧录:USB 接口直接连接在 Raspberry Pi 上,可从 Pi 端运行 ArduPilot 仓库 Tools/scripts 目录下的
uploader.py刷机脚本,也可以使用 ARK 官方 ARK-OS 提供的配套软件工具。
由于该板依赖 RPI 协处理器工作(DF40HC 接口为必需项),日常升级固件更推荐使用 USB 途径,无需打开外壳操作 SWD。
小结
ARK PI6X 的硬件定义完整体现在 hwdef.dat 与 common.inc 两个文件中:串口顺序、DMA 能力、IMU 朝向、传感器 I2C 地址与电池监控默认值均与官方 README 的引脚表一一对应。对于开发者而言,接线时以本文第三节的引脚表为准,配置时以第四、五节的串口映射与 RC 协议选项为准;需要核对某个引脚的实际用途或默认参数时,直接查阅这两个硬件定义文件即可得到权威答案。
【免费下载链接】ardupilotArduPlane, ArduCopter, ArduRover, ArduSub source项目地址: https://gitcode.com/GitHub_Trending/ar/ardupilot
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考