
ArduPilot 支持 ModalAI Flight Core v1 飞控硬件特性、引脚定义与配置指南【免费下载链接】ardupilotArduPlane, ArduCopter, ArduRover, ArduSub source项目地址: https://gitcode.com/GitHub_Trending/ar/ardupilot导读本文以 ArduPilot 仓库中 ModalAI Flight Core v1 的硬件支持文档 为主线系统梳理这款美国制造的 6g 级微型飞控的硬件规格、引脚分布、串口映射、RC 输入、PWM 输出与电池监测配置。同时结合仓库内 hwdef.dat 与 hwdef-bl.dat 的源码级定义说明 ArduPilot 如何为该板卡生成固件与引导加载程序。读完本文你将掌握 Flight Core v1 在 ArduPilot 生态中的完整使用姿势包括正确的电池监控参数设置与各外设接口的对应关系。一、硬件概览面向微型无人机与 GPS-denied 导航的飞控ModalAI Flight Corev1是一款在美国本土制造的高集成度飞行控制器重量仅6g专为对重量与尺寸极度敏感的无人机平台设计。其定位有两种典型场景与 ModalAI VOXL 计算模块搭配用于避障obstacle avoidance与GPS-denied无 GPS 环境导航这也是 VOXL 生态中常见的飞控 板载计算机组合独立使用作为常规飞控板参与 ArduPilot 固件的各类机架多旋翼、固定翼等任务。在 ArduPilot 仓库中该板卡的硬件定义存放在libraries/AP_HAL_ChibiOS/hwdef/modalai_fc-v1/目录下包含固件定义文件hwdef.dat、引导加载程序定义文件hwdef-bl.dat以及本文所述的 README 说明文档。1.1 核心特性一览README 中给出的完整特性表如下特性详情重量6 gMCU216MHz、32 位 ARM M7 内核 [STM32F765II]内存256Kb FRAM铁电存储2Mbit Flash512Kbit SRAMIMU[ICM-20602]SPI1 接口[ICM-42688-P]SPI2 接口[BMI088]SPI6 接口气压计[BMP388]I2C4 接口安全元件[A71CH]I2C4 接口microSD 卡支持经测试的存储卡输入GPS/MagGPS 与磁罗盘Spektrum数传TelemetryCAN 总线PPM输出6 个 LED2xRGB 双 RGB 灯8 路 PWM 通道扩展接口3 路串口I2CGPIO注意以上外部硬件链接仅为原文档中的信息本文不展开介绍具体芯片外部网页如需了解芯片数据手册细节请以厂商公开资料为准。1.2 源码中的硬件定义佐证在 hwdef.dat 中与特性表对应的关键定义为MCU 型号MCU STM32F7xx STM32F767xx注释说明该板实际使用 F765与 F767 相同但无 TFT 接口晶振频率OSCILLATOR_HZ 1600000016MHz 外部晶振板卡 IDAPJ_BOARD_ID TARGET_HW_MODALAI_FC_V1对应 board_types.txt 中定义的41775这是引导加载程序与固件识别该板卡的唯一标识Flash 布局FLASH_RESERVE_START_KB 32、FLASH_SIZE_KB 2048即 2MB Flash 中前 32KB 预留给引导加载程序默认 GPIO 电平DEFAULTGPIO OUTPUT LOW PULLDOWN所有引脚默认输出低电平并下拉注释说明这是为避免 ESD静电放电问题。而 hwdef-bl.dat 则定义引导加载程序自身FLASH_RESERVE_START_KB 0引导程序安装于 Flash 零偏移处、FLASH_BOOTLOADER_LOAD_KB 32引导程序将固件写入 32KB 之后的位置并使用PB1 LED_BOOTLOADER、PB0 LED_ACTIVITY两个 LED 指示引导状态HAL_LED_ON 0表示低电平点亮。二、引脚分布Pinout与尺寸README 提供了板卡的引脚覆盖图Pinout overlay、尺寸图和系统框图。其中引脚覆盖图fc-overlay-top-144-dpi.jpg清晰地标出了各连接器上每个引脚的信号名称是接线时的第一手参考ModalAI_v1 板卡引脚覆盖图板卡的尺寸图flight_core_v1_imu_locations.png与flight-core-dims.png同时标注了物理尺寸与三颗 IMU 在 PCB 上的安装位置后者对振动分析与 IMU 坐标校准时非常有用。系统框图fc-dk-preliminary-datasheet.png则从整机层面展示了 MCU 与各外设IMU、气压计、FRAM、安全元件、电源管理、接口之间的连接关系ModalAI Flight Core v1 系统框图从 hwdef.dat 可以看到各外设挂载的总线定义与引脚分配SPI1 → ICM-20602PA5 SCK / PB4 MISO / PB5 MOSI片选PI9 ICM20602_CSSPI2 → ICM-42688-PPI1 SCK / PI2 MISO / PI3 MOSI片选PH5 ICM42688_CSSPI5 → FRAM铁电存储器PF7 SCK / PF8 MISO / PF11 MOSI片选PG7 FRAM_CS且标记为SPEED_VERYLOW低速访问SPI6 → BMI088引脚与设备定义在源码中被注释禁用注释明确说明原因——disabled due to lack of DMA channels因 DMA 通道不足而禁用。2.1 I2C 总线分布hwdef.dat 定义了 4 条 I2C 总线并给出了明确的I2C_ORDER总线探测顺序I2C 总线引脚用途I2C1PB8 SCL / PB7 SDAEXT_GPS_I2C外部 GPS 上的 I2CI2C2PF1 SCL / PF0 SDADISPLAY_I2C显示屏I2C3PH7 SCL / PH8 SDAEXP_I2C扩展接口I2C4PF14 SCL / PF15 SDABMP388 气压计与 A71CH 安全元件地址 0x49总线顺序为I2C_ORDER I2C4 I2C3 I2C2 I2C1并通过define HAL_I2C_INTERNAL_MASK 1将内部器件标记在 I2C4 上。气压计在源码中定义为BARO BMP388 I2C:0:0x76即挂在 I2C 总线 0内部映射为 I2C4地址 0x76 上。三、UART 映射串口分配README 明确指出引脚图中的Rn为 UARTn 的接收引脚Tn为 UARTn 的发送引脚。完整的串口映射如下SERIAL0 → USBOTG1SERIAL1 → UART7Telem1 数传SERIAL2 → UART5Telem2 数传SERIAL3 → USART1GPSSERIAL4 → UART4GPS2SERIAL5 → USART2SERIAL6 → USART6Spektrum RCINSERIAL7 → USART3SERIAL8 → USB2OTG2该映射在 hwdef.dat 中以SERIAL_ORDER OTG1 UART7 UART5 USART1 UART4 USART2 USART6 USART3 OTG2声明固件构建脚本会按此顺序将各 UART 依次编号为 SERIAL0~SERIAL8。各串口的物理引脚定义同样可以在 hwdef 中逐条核对例如USART1GPSPB15 RX / PB14 TX其中 RX 标记为NODMAUSART6Spektrum RCINPC7 RX / PC6 TX并额外挂接GPIO(74)作为 Spektrum 绑定信号控制引脚UART7Telem1PE7 RX / PE8 TX / PE9 RTS / PE10 CTS是完整的四线数传口。四、RC 输入配置Flight Core v1 的 RC 输入同时配置在PPM 输入引脚与Spektrum 串口USART6上PPM 引脚支持所有单向 RC 协议PPM、SBUS 等单线输入类协议Spektrum 端口SERIAL6适用于需要半双工串行遥测回传的协议如FPort因为这类协议需要发送方向的数据通道两个端口默认都启用 RCIN。源码层面的具体配置hwdef.dat# RC input. Support all serial protocols on both PPM and spektrum ports PI5 TIM8_CH1 TIM8 RCININT PULLDOWN LOWPPM 输入挂接在PI5TIM8_CH1上使用RCININT中断输入方式同时define HAL_GPIO_SPEKTRUM_RC 74 PH2 SPEKTRUM_PWR OUTPUT HIGH GPIO(73) define HAL_GPIO_SPEKTRUM_PWR 73 define HAL_SPEKTRUM_PWR_ENABLED 1 define DEFAULT_SERIAL6_PROTOCOL SerialProtocol_RCIN define DEFAULT_SERIAL6_BAUD 115200即 SERIAL6 默认协议为SerialProtocol_RCIN波特率 115200并启用 Spektrum 卫星接收机的供电PH2输出高电平与绑定bind支持能够自动识别 100000/115200 波特率并自动切换信号极性。五、PWM 输出Flight Core v1 在 PWM 输出连接器上提供最多8 路 PWM 输出分为两个输出组PWM 1、2、3、4 → group1PWM 5、6、7、8 → group2同一组内的通道必须使用相同的输出频率如果组内任一通道使用 DShot 协议则该组所有通道都必须使用 DShot不同组之间则可分别配置。源码中 8 路输出的定时器/通道映射hwdef.dat为PE14 TIM1_CH4 TIM1 PWM(1) GPIO(50) PA10 TIM1_CH3 TIM1 PWM(2) GPIO(51) PE11 TIM1_CH2 TIM1 PWM(3) GPIO(52) PA8 TIM1_CH1 TIM1 PWM(4) GPIO(53) PD13 TIM4_CH2 TIM4 PWM(5) GPIO(54) PD14 TIM4_CH3 TIM4 PWM(6) GPIO(55) PD12 TIM4_CH1 TIM4 PWM(7) GPIO(56) PD15 TIM4_CH4 TIM4 PWM(8) GPIO(57)可见 group1PWM 1~4共用TIM1group2PWM 5~8共用TIM4这正是同组同频要求的硬件根源。每个输出通道同时保留了 GPIO 编号便于将其复用为普通 GPIO 功能。六、电池监测Battery Monitoring这是该板卡在实际装机时最需要关注的配置点。除 ArduPilot 常规的模拟量电源监测选项外modalai 固件额外支持两种I2C 电源监测芯片INA231Flight Core v1 板载默认使用配置BATTERY_MONITOR为21LTC2946用于基于 LTC2946 的电源模块power brick配置BATTERY_MONITOR为22。硬件定义中的对应宏hwdef.datdefine HAL_BATTMON_INA2XX_BUS 1 define HAL_BATTMON_INA2XX_ADDR 0 define HAL_BATT_MONITOR_DEFAULT 21 define HAL_BATTMON_LTC2946_BUS 1 define HAL_BATTMON_LTC2946_ADDR 0x6aHAL_BATT_MONITOR_DEFAULT 21使得该板卡固件中BATTERY_MONITOR参数的默认值即为 INA231 模式HAL_BATTMON_INA2XX_BUS 1与HAL_BATTMON_LTC2946_BUS 1表示两种芯片都挂在 I2C 总线 1 上对应 I2C4内部索引LTC2946 的从机地址为 0x6a。在 ArduPilot 的 AP_BattMonitor.cpp 中可以看到HAL_BATT_MONITOR_DEFAULT会被用来设置参数默认值#ifdef HAL_BATT_MONITOR_DEFAULT _params[0]._type.set_default(int8_t(HAL_BATT_MONITOR_DEFAULT)); #endif而 AP_BattMonitor_INA2xx.cpp 中HAL_BATTMON_INA2XX_BUS与HAL_BATTMON_INA2XX_ADDR分别作为 I2C_BUS、I2C_ADDR 参数的默认值AP_GROUPINFO(I2C_BUS, 25, AP_BattMonitor_INA2XX, i2c_bus, HAL_BATTMON_INA2XX_BUS), AP_GROUPINFO(I2C_ADDR, 26, AP_BattMonitor_INA2XX, i2c_address, HAL_BATTMON_INA2XX_ADDR),这也印证了如果使用原装 Flight Core v1板载 INA231保持 BATTERY_MONITOR21 即可直接工作若换用 LTC2946 电源模块则需要手动将 BATTERY_MONITOR 改为 22。此外该板卡禁用了内部 ADC 驱动define HAL_USE_ADC FALSE、define HAL_DISABLE_ADC_DRIVER TRUE但保留了 5V 电压采样引脚PC0 VDD_5V_SENS ADC1 SCALE(2)对应ANALOG_VCC_5V_PIN 10供需要模拟量电压检测的场景使用。七、传感器与存储7.1 IMU 配置hwdef.dat 中启用了两颗 IMUSPIDEV icm42688 SPI2 DEVID1 ICM42688_CS MODE3 2*MHZ 8*MHZ SPIDEV icm20602 SPI1 DEVID2 ICM20602_CS MODE3 2*MHZ 8*MHZ IMU Invensensev3 SPI:icm42688 ROTATION_YAW_180 IMU Invensense SPI:icm20602 ROTATION_PITCH_180_YAW_90ICM-42688-P 挂 SPI2安装方向旋转ROTATION_YAW_180ICM-20602 挂 SPI1安装方向旋转ROTATION_PITCH_180_YAW_90BMI088SPI6因 DMA 通道不足被注释禁用。同时define HAL_DEFAULT_INS_FAST_SAMPLE 3开启了高速采样模式配合中断引脚PF2 IMU_1_DRDY、PH12 IMU_2_DRDY驱动传感器数据就绪信号为小尺寸高速机型提供更低的 IMU 延迟。7.2 气压计气压计为 BMP388定义BARO BMP388 I2C:0:0x76挂载于 I2C4总线 0并使用PG5 BARO_INT作为气压计中断引脚。7.3 参数存储FRAM RAMTRON板载 256Kb FRAM 被用于 ArduPilot 参数存储相关定义hwdef.datdefine HAL_STORAGE_SIZE 32768 define HAL_WITH_RAMTRON 1HAL_STORAGE_SIZE 3276832KB意味着可保存的参数存储空间显著大于常规 4KB 存储的板卡RAMTRON 通过 SPI5 访问SPIDEV ramtron SPI5 DEVID1 FRAM_CS MODE3 8*MHZ 8*MHZ掉电不丢失。7.4 microSD 与 LEDmicroSD 卡通过SDMMC2接口挂载PG9~PG12数据线、PD6 CK、PD7 CMD并启用 FATFS 文件系统define HAL_OS_FATFS_IO 1用于数据刷写日志存储。SD 卡供电使能引脚PC13 VDD_3V3_SD_CARD_EN默认输出高电平。板载两组 RGB LED 的定义PB0 LED_RED OUTPUT OPENDRAIN GPIO(90) PB1 LED_GREEN OUTPUT OPENDRAIN GPIO(91) PA7 LED_BLUE OUTPUT OPENDRAIN GPIO(92) PI0 LED_RED_2 OUTPUT OPENDRAIN LOW GPIO(93) PA2 LED_BLUE_2 OUTPUT OPENDRAIN LOW GPIO(94) PH11 LED_GREEN_2 OUTPUT OPENDRAIN LOW GPIO(95)并通过AP_NOTIFY_GPIO_LED_3_ENABLED与HAL_GPIO_A/B/C_LED_PIN将第一组三色 LED 绑定为 BoardLED用于状态指示。八、CAN 总线与安全开关CAN 总线PD0 CAN1_RX / PD1 CAN1_TX另有PI11 GPIO_CAN1_SILENT静默控制引脚可用于 DroneCAN 外设与 CAN 机架接线安全开关PE4 SAFETY_IN INPUT PULLDOWN并启用define HAL_HAVE_SAFETY_SWITCH 1同时define BOARD_SAFETY_ENABLE_DEFAULT 0表示默认不启用安全开关功能出厂默认关闭需用户显式配置SWD 调试PA13 JTMS-SWDIO与PA14 JTCK-SWCLK用于 ST-Link v2 或 Black Magic Probe 调试烧写。九、指南针CompassModalAI_v1 板载没有内置磁罗盘需要外接罗盘才能获得航向信息。为此固件启用了罗盘探测与自动方向支持define AP_COMPASS_PROBING_ENABLED 1 define HAL_COMPASS_AUTO_ROT_DEFAULT 2即启用罗盘探测probe并将外部罗盘默认自动旋转方向设置为 290° 方向自动校准。实际使用时将外接 GPS/Mag 模块或独立罗盘接入 I2C 总线并在参数中确认罗盘方向即可。十、构建与刷写指引该板卡在 ArduPilot 中对应 board 名称modalai_fc-v1所有硬件定义集中在 hwdef.dat固件与 hwdef-bl.dat引导加载程序两个文件中。构建方式遵循仓库根目录 BUILD.md 中描述的 waf 流程核心思路为使用仓库根目录的waf构建工具以--board参数指定modalai_fc-v1配置编译目标固件与引导加载程序分别基于hwdef.dat与hwdef-bl.dat生成bootloader 由Tools/AP_Bootloader项目编译对应板卡 ID 41775 见 board_types.txt刷写时可通过 SWD 调试口PA13/PA14配合 ST-Link 烧录引导加载程序之后即可通过 USBSERIAL0完成固件升级。说明具体编译命令与工具链要求以仓库内 BUILD.md 和 wscript 为准不同版本环境可能存在差异。十一、使用注意事项总结综合 README 与源码使用 ModalAI Flight Core v1 时值得记住的要点电池监测板载 INA231 对应BATTERY_MONITOR21默认LTC2946 电源模块对应BATTERY_MONITOR22PWM 分组1~4 与 5~8 两组各自同频组内不可混用 DShot 与其他协议RC 接线单向协议走 PPM 口需要遥测回传的半双工协议FPort走 SERIAL6 Spektrum 口串口规划SERIAL1/2 为数传、SERIAL3/4 为 GPS含 GPS2、SERIAL6 为 SpektrumSERIAL0/8 为 USB规划外设前先对照 UART 映射表无板载罗盘必须外接 GPS/Mag 组合模块或独立罗盘罗盘探测与自动方向已默认开启存储优势32KB 参数存储FRAM microSD 日志为调试与参数调优提供了充足空间BMI088 未启用由于 DMA 通道不足当前固件仅启用 ICM-42688-P 与 ICM-20602 两颗 IMU。通过本文的配置说明与源码级佐证你可以快速将 Flight Core v1 接入 ArduPilot 生态并完成正确的硬件配置无论是作为独立飞控还是搭配 VOXL 做避障 / GPS-denied 导航都能获得稳定可靠的飞行平台基础。【免费下载链接】ardupilotArduPlane, ArduCopter, ArduRover, ArduSub source项目地址: https://gitcode.com/GitHub_Trending/ar/ardupilot创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考