ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

INAV 板卡支持解析:KroozX 飞控的硬件特性、引脚映射与固件构建指南

INAV 板卡支持解析:KroozX 飞控的硬件特性、引脚映射与固件构建指南 无人机嵌入式智能硬件【免费下载链接】inavINAV: Navigation-enabled flight control software项目地址https://gitcode.com/gh_mirrors/in/inav点击查看免费下载KroozX 是 INAVNavigation-enabled flight control software官方支持的固定翼 / 多旋翼飞控板本文以 docs/boards/KroozX.md 为骨架结合仓库内KROOZX目标目录的源码与构建脚本系统梳理这块板卡的硬件配置、引脚级映射、外设接线方式以及固件编译烧录流程。读完本文你将能够根据源码理解 KroozX 每一路外设的实际引脚定义与限制并能自行编译适配该板卡的 INAV 固件。KroozX 硬件特性总览原文档 docs/boards/KroozX.md 以列表形式给出了板卡的完整规格以下逐项继承并整理类别规格MCUSTM32F4RGT6Cortex-M4F1MB Flash / 192KB RAMIMUMPU6000SPI 总线、ICM20608I2C 总线气压计MS5611VCP支持USB 虚拟串口硬件 UART5 路其中 RX6 / RX1 / TX1 带板载反相器PWM 输出10 路OSDMAX7456带双视频通道切换开关黑匣子MicroSD 卡槽SD/SDHC最大 64GB接收机PPM/SBUS接在 RX6带板载反相器无线板载 HC-12 无线收发器电压传感器支持最高 6S 输入电流传感器支持集成稳压器5V 2000mA、10V 2000mA带 LC 滤波按键无USB 供电即进入 STM DFU 引导模式蜂鸣器驱动支持RSSI 模拟/PWM 端口支持SWD 调试端口支持SWIO、SWCLK、RST 引脚该板卡定位于高集成度航模飞控把双 IMU、气压计、OSD 叠加芯片、SD 卡黑匣子、双路稳压电源、无线数传和 SBUS 反相器全部集成到一块板子上同时保留了 10 路 PWM 输出兼顾多旋翼与固定翼的使用场景。硬件核心STM32F405RGT6 与 KROOZX 构建目标KroozX 采用 STM32F4RGT6这是 Cortex-M4F 内核、1MB Flash / 192KB RAM 的 STM32F405 系列芯片。仓库中的构建配置与之完全对应目标定义文件 src/main/target/KROOZX/CMakeLists.txt 中仅有一行声明target_stm32f405xg(KROOZX HSE_MHZ 16 SKIP_RELEASES)其中HSE_MHZ 16表示板载外部高速晶振为 16MHzSKIP_RELEASES表示该目标不会进入官方发布版本需要用户自行编译。target_stm32f405xg是 cmake/stm32f4.cmake 中定义的函数它为 STM32F405 系列统一注入了编译宏STM32F40_41xxx、STM32F405xx、MCU_FLASH_SIZE1024、MCU_RAM_SIZE192并指定启动文件startup_stm32f40xx.s、链接脚本stm32_flash_f405xg和 SVD 描述STM32F405。该函数还带BOOTLOADER参数将引导加载程序代码src/bl/bl_main.c一并链接进固件——这正是USB 供电即进入 STM DFU 引导模式的固件侧基础无需物理按键插上 USB 后 DFU 引导即可被触发便于用户刷写固件。从 cmake/main.cmake 看SKIP_RELEASES属性用于把该目标从发布构建中排除因此使用 KroozX 板卡时需要手动编译而非直接下载官方 Release 固件。固件编译要点KroozX 属于 STM32F4 目标编译流程与 INAV 其他 F4 目标一致在 CMake 配置阶段指定目标名为KROOZX即可生成对应固件。具体的编译环境搭建与参数可以参考仓库中的构建文档如 Building Manual 与 Building in Linux.md此处不再赘述。传感器子系统IMU、磁力计与气压计板卡传感器的选型与接线在 src/main/target/KROOZX/target.h 中定义得十分清晰。姿态传感器 IMU原文档记录 KroozX 同时搭载两颗 IMUMPU6000挂载在 SPI1 总线上片选为PB2SPI 时钟/数据引脚复用 SPI1PA5SCK、PA6MISO、PA7MOSIICM20608挂载在 I2C 总线上。target.h 中对 MPU6000 的配置为#define MPU6000_CS_PIN PB2 #define MPU6000_SPI_BUS BUS_SPI1 #define USE_IMU_MPU6000 #define IMU_MPU6000_ALIGN CW90_DEG_FLIP其中IMU_MPU6000_ALIGN CW90_DEG_FLIP说明板载 MPU6000 的安装方向相对机体坐标系偏转了 90° 且翻转固件通过该宏在姿态解算前完成坐标系对齐。若用户更换或维修 MPU 芯片需注意保持该安装方向否则会出现姿态翻转。磁力计与气压计磁力计通过BUS_I2C1访问且USE_MAG_ALL允许自动探测多种常见罗盘芯片气压计选用 MS5611挂载在BUS_I2C3上传感器集合宏SENSORS_SET (SENSOR_ACC|SENSOR_MAG|SENSOR_BARO)表明该板默认同时启用加速度计、磁力计和气压计为 INAV 的导航功能地磁航向、气压定高提供硬件基础。对应的两条 I2C 总线引脚为I2C1PB6SCL /PB7SDA、I2C3PA8SCL /PC9SDA。串口体系5 路硬件 UART、板载反相器与无线数传KroozX 提供 5 路硬件 UART 加 1 路 USB VCPSERIAL_PORT_COUNT 6即对应5 UART 1 VCP的总端口数。各 UART 引脚定义如下均来自 target.h串口TX 引脚RX 引脚反相器UART1PA9PA10RX 反相器PB13UART3PB10PB11无UART4PC10PC11无UART5PC12PD2无UART6PC6PC7RX 反相器PB12其中 UART1 与 UART6 的接收端带有板载反相器INVERTER_PIN_UART1_RX PB13、INVERTER_PIN_UART6_RX PB12这是为直接对接 SBUS、PPM 等反向电平信号而设计的原文档明确指出PPM/SBUS 接在 RX6即 UART6 的 RXPC7配合USE_UART_INVERTER宏无需外接电平翻转电路即可直连 SBUS 接收机RX_CHANNELS_TAER表明固件默认的通道映射顺序为油门-副翼-升降-方向TAER这是大部分航模遥控器的常见设置。上电预置反相器与 OSD 切换引脚的默认状态KroozX 定义了USE_HARDWARE_PREBOOT_SETUP并在 src/main/target/KROOZX/hardware_setup.c 中实现initialisePreBootHardware()上电初始化阶段就把 UART1 的反相控制引脚 PB13 拉高即默认启用 UART1 反相并把 OSD 视频切换引脚OSD_CH_SWITCHPC5拉低。这段先于主程序的硬件预配置逻辑保证了接收机反相与视频通道状态在飞控正式运行前就是确定的避免外设上电瞬间的引脚悬空。板载无线数传 HC-12原文档记载 KroozX 板载 HC-12 无线收发器。HC-12 是典型的串口透传模块常见于 433/470MHz 频段在板卡上通过某一组 UART 与飞控交换串口数据可作为地面站远距离数传链路使用具体挂接的串口号与波特率配置以板卡硬件设计为准可在 INAV 配置界面中将其对应的 UART 口指定为 MSP 或同类型串口协议。PWM 输出10 路通道与 DShot 的引脚级限制MAX_PWM_OUTPUT_PORTS 10与文档记载的PWM outputs: 10一致。具体的 10 路电机/舵机输出由 src/main/target/KROOZX/target.c 中的timerHardware表定义输出定时器引脚用途PWM1TIM5 CH3PA2电机PWM2TIM5 CH4PA3电机PWM3TIM5 CH1PA0电机PWM4TIM5 CH2PA1电机PWM5TIM3 CH4PB1电机PWM6TIM3 CH3PB0电机PWM7TIM4 CH3PB8电机PWM8TIM4 CH4PB9电机PWM9TIM1 CH2NPB14电机PWM10TIM12 CH2PB15电机源码注释中还保留了 DShot 支持方面的宝贵提示直接关系到用户能否在这些输出上使用 DShot 协议PWM5 与 PWM3 共用定时器通道资源冲突注释明确指出 PWM5 与 PWM3 存在冲突DShot 在此路不工作PWM7 与 PWM6 冲突PWM7 与 PWM6 存在资源冲突DShot 不工作PWM8 无 DMATIM4_CH4 以及 PB9 上唯一的备用定时器 TIM11_CH1 在 F405 上都没有请求线request line因此该输出不支持 DShotPWM9 / PWM10 的历史遗留修正源码注释说明 TIM4 并不能到达 PB14/PB15 这两个焊盘旧版本中这两路输出实际上是静默失效的当前实现将 PWM9 改为 TIM1_CH2NPWM10 改为 TIM12_CH2。其中 TIM12 在 F405 上没有 DMA所以 PWM10 仅支持普通 PWM/舵机输出不支持 DShotPWM9 使用的 TIM1 通道 2 受 DMA2 Stream6 占用同样受限制。因此在 KroozX 上启用 DShot 前务必先对照上表确认所接输出引脚与上述限制建议将需要 DShot 的电机优先安排在没有冲突的通道上。LED 灯带使用 TIM8 CH1PC6注意 PC6 同时也是 UART6 的 TX 引脚串口与灯带功能存在引脚复用关系。OSDMAX7456 叠加芯片与双视频通道切换KroozX 板载 MAX7456 视频字符叠加芯片这是 FPV 领域使用最广泛的硬件 OSD 方案MAX7456 挂载在 SPI1 总线上片选PC4相关宏为USE_MAX7456、MAX7456_SPI_BUS BUS_SPI1、MAX7456_CS_PIN PC4视频通道切换引脚OSD_CH_SWITCH PC5由hardware_setup.c在上电时拉低配合板上的视频通道开关实现两路视频源如摄像头 A/B之间的硬件切换并将 OSD 字符叠加到当前通道默认功能集合DEFAULT_FEATURES中已包含FEATURE_OSD即固件默认开启 OSD 特性值得注意的是target.h 中主动#undef USE_MSP_DISPLAYPORT说明该目标明确禁用 MSP DisplayPort 类型的 OSD 方案OSD 输出完全依赖 MAX7456 硬件叠加。黑匣子记录MicroSD 卡存储KroozX 的 MicroSD 卡槽用于黑匣子Blackbox飞行日志存储SD 卡挂载在 SPI3 总线上SDCARD_SPI_BUS BUS_SPI3、片选PA15SPI3 引脚为PB3SCK /PB4MISO /PB5MOSI卡检测引脚为PC13且SDCARD_DETECT_INVERTED说明其检测电平是反向的ENABLE_BLACKBOX_LOGGING_ON_SDCARD_BY_DEFAULT使固件默认就把黑匣子日志写到 SD 卡上开箱即可记录文档标注支持 SD/SDHC最大 64GB配合 INAV 的 Blackbox 功能可对 PID、姿态、动力输出等进行高分辨率事后分析黑匣子具体使用方式可参考 Blackbox.md。电源感知与供电设计电压、电流、RSSI 与双路稳压KroozX 的模拟量采集集中在 3 个 ADC 通道上BOARD_HAS_VOLTAGE_DIVIDERUSE_ADC模拟量ADC 通道引脚VBAT 电池电压ADC_CHN_1PC3电流传感器ADC_CHN_2PC2RSSI模拟/PWMADC_CHN_3PC0电压分压电路支持最高 6S 锂电池输入文档记载 up to 6S对应默认功能集合中的FEATURE_VBAT与FEATURE_CURRENT_METER即固件默认启用电压回传与电流计板载双路稳压器输出 5V 2000mA 与 10V 2000mA后者带 LC 滤波可为图传、接收机、舵机等外设提供干净、大电流的供电RSSI 既支持模拟量采集ADC也可在对应的 IO 上接收 PWM 形式的 RSSI 信号适配不同接收机类型。指示灯、蜂鸣器、灯带与 IO 资源LEDLED0 PA14红色、LED1 PA13绿色用于显示解锁/告警/连接状态蜂鸣器BEEPER PC1且BEEPER_INVERTED说明蜂鸣器驱动为反向电平对应文档的Buzzer driver: Yes蜂鸣器用法可参考 Buzzer.md可编程 LED 灯带USE_LED_STRIPWS2811_PIN PC6支持 WS2811/WS2812 可寻址灯带通过 TIM8 CH1 输出时序如前所述PC6 与 UART6 TX 复用BLHeli 直刷接口USE_SERIAL_4WAY_BLHELI_INTERFACE使能通过飞控串口对 BLHeli 电调进行 4-way 参数读写/刷写IO 掩码TARGET_IO_PORTA/B/C 0xffff与TARGET_IO_PORTD (BIT(2))声明了三个 GPIO 端口全部参与资源管理、D 端口仅 PD2 可用这也解释了为何 UART5 的 RX 恰好使用 PD2。烧录、接线与使用注意事项DFU 刷写无按键设计KroozX 不带物理按键插上 USB 供电即自动进入 STM 的 DFU 引导模式。用户可以在 INAV Configurator 或使用 STM32 官方 DFU 工具直接烧录固件由于目标带BOOTLOADER引导代码也支持通过飞控自身的引导加载程序在线升级。DFU 相关流程可参考 Broken USB recovery.md 与 USB Flashing.md。固件自行编译由于SKIP_RELEASES标记KroozX 固件需要手动编译。在 CMake 阶段以KROOZX为目标名即可得到该板固件参考 Cmake usage.md。默认功能集合DEFAULT_FEATURES为FEATURE_TX_PROF_SEL | FEATURE_VBAT | FEATURE_CURRENT_METER | FEATURE_OSD即开箱默认启用遥控器配置档位选择、电池电压、电流计与 OSD 四项功能接收机默认类型为RX_TYPE_SERIAL串行接收机通道顺序默认 TAER。DShot 通道选择如前文所述10 路 PWM 中 PWM5/PWM7/PWM8/PWM10 存在冲突或缺失 DMA启用 DShot 前务必对照 target.c 中的注释选择可用通道。引脚复用提醒PC6 同时承担 UART6 TX 与 LED 灯带输出PA15 既是 SD 卡片选也参与 IO 资源管理配置外设时应在资源Resource视图中确认占用关系。小结KroozX 是一块外设高度集成的 STM32F405 飞控双 IMU MS5611 气压计构成导航感知基础5 路硬件 UART 配合两路板载反相器简化了 SBUS/PPM 接收机与数传的接线MAX7456 硬件 OSD 与 MicroSD 黑匣子让图传与事后分析开箱即用10 路 PWM 输出则兼顾了多旋翼与固定翼的装机需求。通过 src/main/target/KROOZX/target.h、target.c 与 hardware_setup.c 的源码对照用户可以精确掌握每一路引脚的归属与限制从而在装机、排故和自定义固件时做到心中有数。赞分享无人机嵌入式智能硬件【免费下载链接】inavINAV: Navigation-enabled flight control software项目地址https://gitcode.com/gh_mirrors/in/inav点击查看免费下载相关推荐INAV 对 NOX F4 飞控STM32F411 MPU6000的支持详解硬件规格、引脚映射与固件构建INAV 对 NOX F4 飞控STM32F411 MPU6000的支持详解硬件规格、引脚映射与固件构建 NOX F4NOX1 目标又称 F4 N无人机嵌入式智能硬件INAV 飞控板指南FOXEERF405 的硬件特性、引脚映射与目标配置全解析INAV 飞控板指南FOXEERF405 的硬件特性、引脚映射与目标配置全解析 FOXEERF405 是 Foxeer 基于 STM32F405RGT6 主控无人机嵌入式智能硬件machine-learning-for-trading 教学 CI 改造实录第 18–20 章 Notebook 质量门禁、缺陷修复与可复现运行machine learning for trading 教学 CI 改造实录第 18–20 章 Notebook 质量门禁、缺陷修复与可复现运行 导读 本文嵌入式物联网机器人自动驾驶智能硬件上一篇kotlinx.coroutines 集成模块指南Guava、SLF4J 与 Google Play Services 异步 API 的无缝互操作下一篇Rust 中的继承实现指南以 Traits 与组合Composition替代经典继承——来自 awesome-low-level-design 的 OOP 实践解析创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进