ArduPilot 板级支持指南:QioTek AdeptF407 飞控硬件定义与固件烧录全解析
2026/9/15 3:09:41 网站建设 项目流程

ArduPilot 板级支持指南:QioTek AdeptF407 飞控硬件定义与固件烧录全解析

【免费下载链接】ardupilotArduPlane, ArduCopter, ArduRover, ArduSub source项目地址: https://gitcode.com/GitHub_Trending/ar/ardupilot

QioTek AdeptF407 是一款基于国产 CKS32F407 主控芯片(CKS32F407VGT6,ST 与意法半导体 F407 管脚兼容系列)的多旋翼/固定翼通用飞控,也是 ArduPilot 官方 hwdef 体系下以QioTekAdeptF407命名的支持目标。本文以仓库内 QioTekAdeptF407/README.md 为骨架,结合同一目录下的 hwdef.dat、defaults.parm 与 hwdef-bl.dat 源码级配置,系统讲解该板卡的硬件资源、全部连接器引脚定义、串口/RC/PWM/CAN/电池监控等外设的固件参数配置方法,以及 DFU 刷写与.apj升级流程。读完本文,你将能对照板卡实物完成引脚接线、按参数表配置电池与串口,并独立完成该飞控的固件加载与升级。

硬件概览与核心特性

QioTek AdeptF407 是 QioTek 公司(qiotek.io)生产的自驾仪产品,其显著特点是采用 CKS(中科芯)CKS32F407VGT6 MCU。在 ArduPilot 中,该板卡对应 APJ 板 ID1065(见 Tools/AP_Bootloader/board_types.txt 中的AP_HW_QioTekAdeptF407)。

官方 README 列出的核心特性如下:

  • MCU:CKS32F407VGT6
  • 加速度计/陀螺仪:ICM4 系列/ICM2 系列,或 ICM4 系列/ICM4 系列双 IMU 组合
  • BEC 输出:5V/3A(供自驾仪与外围硬件)
  • BEC 输出:9V/12V/3A(供相机与模拟图传)
  • 气压计:DPS310
  • OSD:AT7456E
  • 内置 IST8310 磁力计(内部 I2C)
  • 内置 RAMTRON(SPI 铁电存储)
  • FMU 上 12 路专用 PWM/捕获输入
  • 5 路 UART(USART1、USART2、USART3、UART4、USART7)
  • 2 路 I2C
  • 1 路 CAN
  • 2 路模拟电压/电流输入(电池监控)
  • 2 路模拟视频输入通道
  • 1 路模拟视频输出源切换(由 relay5 切换)
  • 4 路继电器输出控制
  • 1 颗状态 LED
  • 1 个 nARMED(未解锁指示)

与 README 略有出入的是,仓库内 hwdef.dat 中标注的 MCU 型号为CKS32F407xx,该文件还补充了更多实现细节:8MHz 外部晶振(OSCILLATOR_HZ 8000000)、1MB Flash(FLASH_SIZE_KB 1024,预留 16KB 给引导程序)、系统定时器使用 TIM5,并通过include ../include/minimize_features.inc对低 Flash 板卡裁剪了部分非核心特性以节省固件空间。

连接器引脚定义

以下连接器定义与官方 README 完全一致,接线时可对照板卡丝印逐一核对。

外部 USB

PinSignalVolt
1VCC+5V
2D+D_P
3D-D_N
4GNDGND

USB 数据引脚在 hwdef.dat 中定义为PA11 OTG_FS_DMPA12 OTG_FS_DP,同时PA9作为 VBUS 检测输入(PA9 VBUS INPUT OPENDRAIN)。

Telem1

PinSignalVolt
1VCC+5V
2TX+3.3V
3RX+3.3V
4GNDGND

Telem2

PinSignalVolt
1VCC+5V
2TX+3.3V
3RX+3.3V
4NC- -
5NC- -
6GNDGND

Telem2 在固件中默认配置为 921600 波特率(供 ESP8266 WiFi 数传模块使用),详见下文“串口映射”与 defaults.parm。

GPS1

PinSignalVolt
1VCC+5V
2TX+3.3V
3RX+3.3V
4scl2+3.3V
5sda2+3.3V
6GNDGND

GPS1 接口同时引出了 I2C2 总线(scl2/sda2),用于连接 GPS/罗盘组合模块中的外部罗盘。

UART4 与 UART5

PinSignalVolt
1VCC+5V
2TX+3.3V
3RX+3.3V
4GNDGND

CAN1

PinSignalVolt
1VCC+5V
2CAN1_HCAN_P
3CAN1_LCAN_N
4GNDGND

IIC1

PinSignalVolt
1VCC+5V
2SDA1+3.3V
3SCL1+3.3V
4GNDGND

Safety 与蜂鸣器

PinSignalVolt
1VCC/3.3+3.3V
2VCC5+5V
3Safety+3.3V
4LED+3.3V
5Buzzer+3.3V
6GNDGND

VT 端口(模拟图传)

PinSignalVolt
1AV_OUT+5V
2S.AU ctrl.+3.3V
39V/12V9V/12V
4GNDGND

PWM11 与 PWM12

PinSignalVolt
1PWM11+3.3V
2GNDGND
3PWM12+3.3V
4GNDGND

POWER1 与 POWER2

PinSignalVolt
1VCC_IN+5V
2VCC_IN+5V
3BAT_CRRENT_ADC+6.6V
4BAT_VOLTAGE_ADC+6.3V
5GNDGND
6GNDGND

Battery Input(电源输入端)

PinSignalVolt
1Battery_VCCMAX 30V
2Battery_GNDGND

从 hwdef.dat 可以看到电池采样 ADC 的底层映射:PA3 BATT_CURRENT_SENSPA2 BATT_VOLTAGE_SENS(主电源),PC5 BATT2_CURRENT_SENSPC4 BATT2_VOLTAGE_SENS(第二电源),另有PA4 VDD_5V_SENSPC0 FMU_SERVORAIL_VCC_SENS用于电压监测。

串口(UART)映射

README 指出,引脚图中 UART 以 Rn/Tn 标记,Rn 为 UARTn 的接收脚,Tn 为发送脚。各串口的固件分配如下:

| Name | Pin | Function | | :- | :- | :- | | SERIAL0 | OTG1 | USB | | SERIAL1 | TX6/RX6 | UART1(Telem1) | | SERIAL2 | TX3/RX3 | UART2(Telem2,波特率 921600) | | SERIAL3 | TX1/RX1 | UART3(GNSS) | | SERIAL4 | TX4/RX4 | UART4(预留 GNSS2) | | SERIAL5 | TX2/RX2 | UART5(Debug) |

底层定义见 hwdef.dat 的SERIAL_ORDER OTG1 USART6 USART3 USART1 UART4 USART2,与上表一一对应:

  • USART6(Telem1):PC6/PC7,且带NODMA标记;
  • USART3(Telem2):PD8/PD9
  • USART1(GNSS):PB6/PB7
  • UART4(GNSS2 预留):PA0/PA1NODMA
  • USART2(Debug):PD5/PD6

同时在 defaults.parm 中预设SERIAL2_BAUD 921(即 921600),为 ESP8266 WiFi 数传模块做好了默认配置,用户无需手动修改即可使用该串口连接 921600 波特率的图传/数传模块。

RC 输入

RC 输入配置在 RCIN 引脚上,由 PA15 的 TIM2_CH1(TIM2)承担,位于舵机排的一端,丝印标注为 RC。该引脚支持 PPM 与 S.Bus 协议。

hwdef.dat 中的对应定义为:

PA15 TIM2_CH1 TIM2 RCININT PULLDOWN LOW

其中RCININT表示以中断方式接收串行 RC 信号,PULLDOWNLOW表明该引脚默认下拉且初始电平为低。值得注意的是,PA15 同时被注释标注为“also USART6_RX for serial RC”,说明该引脚也可复用为串行 RC 接收通道(如 SBUS 反向输入等场景),实际使用以板卡最新固件与硬件版本为准。

OSD 支持

QioTek AdeptF407 通过 MAX7456 驱动族(OSD_TYPE 1)支持屏显叠加。硬件上采用 AT7456E 芯片,其片选引脚为PE6 AT7456_CS,挂接在 SPI1 总线上(见 hwdef.dat 的SPIDEV osd SPI1 DEVID2 AT7456_CS MODE0 10*MHZ 10*MHZ)。

固件侧,hwdef.dat 在引入minimize_features.inc后显式重新开启 OSD:

undef OSD_ENABLED define OSD_ENABLED 1 define HAL_OSD_TYPE_DEFAULT 1 ROMFS_WILDCARD libraries/AP_OSD/fonts/font1.bin

HAL_OSD_TYPE_DEFAULT 1即对应 README 所述 OSD_TYPE 1(MAX7456 驱动)。OSD 字库文件font1.bin通过ROMFS_WILDCARD打包进固件,确保板卡在没有外部字库存储的情况下也能直接显示叠加信息。

PWM 输出

QioTek AdeptF407 最多支持 12 路 PWM 输出。全部 14 个 PWM 引脚排布规则为:顶排 GND、中排 5V、底排信号。

12 路 PWM 分为 3 组:

  • PWM 1 和 4 在 group1
  • PWM 4 和 8 在 group2
  • PWM 9 和 12 在 group3

同一组内的通道必须使用相同的输出速率;若组内任一通道使用 DShot,则该组所有通道都必须使用 DShot。

hwdef.dat 给出了三组 PWM 的定时器分配,这正解释了分组规则的硬件来源:

  • TIM3:PWM(1)~PWM(4),引脚 PA6/PA7/PB0/PB1;
  • TIM1:PWM(5)~PWM(8),引脚 PE9/PE11/PE13/PE14;
  • TIM4:PWM(9)~PWM(12),引脚 PD12/PD13/PD14/PD15。

每个 PWM 输出同时分配了对应的 GPIO 编号(GPIO(50)~GPIO(61)),这些 GPIO 编号与 defaults.parm 中的继电器引脚定义相互关联。由于 DShot 与速率限制是按定时器(即按组)生效的,接线时应把相同类型的电调(如普通 PWM 或 DShot 数字电调)规划在同一组内。

CAN 端口

CAN 端口默认禁用。启用方式为将参数CAN_P1_Driver设为 1(即使用 DroneCAN 协议)。

硬件上,CAN1 引脚为PD0 CAN1_RXPD1 CAN1_TX(见 hwdef.dat)。启用后即可挂接 DroneCAN 外设(如 CAN 电调、CAN GPS、CAN 空速计等),同时板卡预留的 GPIO(EXTERN_GPIO1~6,见 hwdef.dat 第 142-147 行)也可配合继电器用于扩展控制。

电池监控(Battery Monitoring)

板卡提供两个 6 针电源监测端口。正确的电池参数取决于所连接电源模块(power brick)的类型。对于配套电源模块,官方推荐的参数如下:

| 参数 | 数值 | | :- | :- | | BATT_VOLT_PIN | 2 | | BATT_CURR_PIN | 3 | | BATT_VOLT_MULT | 20.000 | | BATT_AMP_PERVLT | 60.000 | | BATT2_VOLT_PIN | 14 | | BATT2_CURR_PIN | 15 | | BATT2_VOLT_MULT | 20.000 | | BATT2_AMP_PERVLT | 60.000 |

以上参数同样预设在 defaults.parm 中,固件刷写后即为默认值。

板卡还内置了分压电路,可通过焊盘切换,让 power2 支持最高 6S 电池电压监测(共享电池电压监测)。若想使用 power1 上的内置电压监测,可手动将参数互换:

  • BATT_VOLT_PIN改为 14,BATT_CURR_PIN改为 15;
  • BATT2_VOLT_PIN改为 2,BATT2_CURR_PIN改为 3。

参数中的引脚编号对应 hwdef.dat 的 ADC 通道顺序:PA2/PA3 为 power1 的电压/电流采样(对应引脚 2/3),PC4/PC5 为 power2 的电压/电流采样(对应引脚 14/15),电压/电流采样均带SCALE(2)分压系数。

内置 BEC 说明:内置 5V BEC 的启动电压为 2S(2 串锂电);9V/12V BEC 的启动电压分别为 3S/4S。即电池电压低于对应 S 数时相应 BEC 不工作,装机时需确认供电电压满足 BEC 启动条件。

指南针(Compass)

QioTek AdeptF407 内置 QMC5883 罗盘。由于可能存在内部干扰,该板通常配合外部 I2C 罗盘(GPS/罗盘组合模块的一部分)使用。

从源码看,hwdef.dat 实际声明了两枚内部罗盘候选:

COMPASS IST8310 I2C:0:0x0E false ROTATION_ROLL_180 COMPASS QMC5883L I2C:0:0x0D false ROTATION_ROLL_180 define AP_COMPASS_PROBING_ENABLED 1 define HAL_I2C_INTERNAL_MASK 1

即内部 I2C 总线(I2C1)上同时探测 IST8310(地址 0x0E)与 QMC5883L(地址 0x0D)两型磁力计,安装方向均为ROTATION_ROLL_180HAL_I2C_INTERNAL_MASK 1标记 I2C1 为内部总线,因此 GPS1 接口引出的 scl2/sda2(I2C2)天然适合外接 GPS/罗盘组合模块,减少内部磁干扰对航向的影响。README 提到的内置型号以实际硬件批次为准(IST8310 或 QMC5883 均可能被探测到)。

其他板载资源与存储

除上述功能外,hwdef 文件还揭示了 README 未展开的板载资源:

  • 数据存储:SPI2 总线上挂载 FRAM(铁电存储),PC13 FRAM_CS片选,SPEED_VERYLOW低速访问;固件侧define HAL_WITH_RAMTRON 1启用 RAMTRON 参数存储,HAL_STORAGE_SIZE 16384(16KB 参数区)。对应 README 所述“内置 RAMTRON(SPI)”。
  • SD 卡:SDIO 接口(PC8~PC12、PD2),并define HAL_OS_FATFS_IO 1启用 FAT 文件系统,用于数据记录(DataFlash 日志)与黑匣子存储。
  • 传感器冗余:SPI1 上定义了 3 个 IMU 片选(IMU1_CS/IMU2_CS/IMU3_CS)与 2 个气压计片选(Baro1_CS/Baro2_CS)。hwdef 中实际启用两枚Invensensev3(SPI:imu1、SPI:imu2,均为ROTATION_NONE)与一枚Invensense(SPI:imu2,ROTATION_PITCH_180),气压计启用 DPS280(SPI:baro1),另一枚 baro2 被注释关闭。这与 README 所述“ICM4 系列/ICM2 系列或 ICM4/ICM4 组合”的 IMU 选型一致。
  • 状态指示:RGB LED(PE10 红、PE12 绿、PE15 蓝,AP_NOTIFY_GPIO_LED_RGB_ENABLED 1)与安全开关 LED(PB15);安全开关输入PB12 SAFETY_IN INPUT PULLDOWN,蜂鸣器由 TIM12_CH1(PB14)驱动。
  • 继电器/GPIO:PE7~PE3、PE1、PE0 定义为 EXTERN_GPIO1~6 输出,对应 defaults.parm 中的 RELAY1_PIN~RELAY6_PIN 1~6。

固件加载与升级

首次烧录(DFU 模式):按住 bootloader 按钮的同时插入 USB 进入 DFU 模式,然后使用任意 DFU 烧录工具加载with_bl.hex固件。

后续升级(.apj 文件):AdeptF407 出厂预装 ArduPilot 兼容引导程序,后续升级一律使用*.apj固件文件(如通过 Mission Planner、QGroundControl 或地面站的固件升级功能上传),无需再进入 DFU。

引导程序侧的硬件定义见 hwdef-bl.dat:FLASH_RESERVE_START_KB 0表示引导程序自身占满 Flash 起始区,FLASH_BOOTLOADER_LOAD_KB 16表示引导程序将用户固件加载到 16KB 偏移处——这与主固件FLASH_RESERVE_START_KB 16(保留 16KB 给 bootloader)正好衔接。引导程序阶段启用 USART6 作为调试串口(BOOTLOADER_DEBUG SD6),并点亮 PE15/PE12 两颗 LED 指示启动与活动状态。

总结

QioTek AdeptF407 是一款资源均衡的 CKS32F407 飞控:12 路分组 PWM、5 路串口、内置 OSD/RAMTRON/双磁力计探测、双路电池监控与 CAN 扩展能力,配合 ArduPilot hwdef 体系的 hwdef.dat 与 defaults.parm 即可实现开箱即用的默认配置。装机时请重点核对:PWM 分组速率约束、Telem2 的 921600 波特率预设、电池参数与所用电源模块是否匹配、内置罗盘与外部罗盘的选择,以及首次 DFU 烧录with_bl.hex、后续升级用.apj的固件管理流程。对于需要深入了解板级定义的开发者,建议进一步研读 ArduPilot 中 ChibiOS hwdef 的解析工具(Tools/ardupilotwaf/chibios.py)与板 ID 注册表(Tools/AP_Bootloader/board_types.txt),以掌握从硬件定义到可烧录固件的完整构建链路。

【免费下载链接】ardupilotArduPlane, ArduCopter, ArduRover, ArduSub source项目地址: https://gitcode.com/GitHub_Trending/ar/ardupilot

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询