ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

ArduPilot CORVON 743V2 飞控硬件定义全解:从 hwdef.dat 到固件烧录的完整指南

ArduPilot CORVON 743V2 飞控硬件定义全解:从 hwdef.dat 到固件烧录的完整指南 ArduPilot CORVON 743V2 飞控硬件定义全解从 hwdef.dat 到固件烧录的完整指南【免费下载链接】ardupilotArduPlane, ArduCopter, ArduRover, ArduSub source项目地址: https://gitcode.com/GitHub_Trending/ar/ardupilotCORVON 743V2 是 ArduPilot 官方 ChibiOS HAL 中一块基于 STM32H743Cortex-M7 480 MHz的多轴飞行控制器硬件定义hwdef支持 10 路 DShot 电机输出其中 1-8 路双向、可回读 ESC 遥测加 2 路 PWM 舵机输出。本文以 CORVON743V2 README 为骨架结合 hwdef.dat、hwdef-bl.dat 与 defaults.parm 的源码级定义完整梳理该板型的传感器、串口、PWM、电池、日志存储、LED 与启动加载路径并给出可直接执行的构建与烧录命令读完后你能够独立完成该板型在 ArduPilot 中的定位、参数默认值解读与固件编译烧写。硬件概览CORVON 743V2 的核心硬件配置如下来源README 与 hwdef.dat 头部注释项目规格MCUSTM32H743VIH6TFBGA1002 MB Flash1 MB RAMCortex-M7 480 MHzIMUICM-42688P BMI088挂在 SPI3气压计BMP581内部 I2C2 总线地址 0x46罗盘IST8310内部 I2C2 总线地址 0x0E旋转 ROTATION_YAW_90电机输出10 路 DShot1-8 路双向支持 RPM 遥测舵机输出2 路标准 PWM无 DMA串口8 个 UART USBCANFDCAN1DroneCAN电池监测双路模拟电池电压/电流模拟输入空速AS、RSSIRS存储microSDSDMMC14 位数据总线音频/灯光无源压电蜂鸣器、GPIO RGB 灯、WS2812 串行灯输出用户 GPIOSW1-SW4 四组焊盘板型在 board_types.txt 中的板卡 ID 为AP_HW_CORVON743V2数值 1229该 ID 同时出现在 hwdef.dat 与 hwdef-bl.dat 的APJ_BOARD_ID行中是 bootloader 识别板子、下载对应固件的依据。该板型在 ArduCopter 发布说明 中被记录为“CORVON743V2 board added”。硬件定义文件 hwdef.dat 逐段解读hfdef.dat 由构建系统的chibios_hwdef.py处理生成本板的 ChibiOS 板级配置。以下按功能分块说明关键定义MCU、时钟与 Flash 分区MCU STM32H7xx STM32H743xx OSCILLATOR_HZ 8000000 MCU_CLOCKRATE_MHZ 480 FLASH_SIZE_KB 2048 FLASH_RESERVE_START_KB 128 # bootloader 占用前 128 KB define HAL_STORAGE_SIZE 32768 # 参数存储 32 KB STORAGE_FLASH_PAGE 14 # 位于 flash sector 14H7 扇区为 128 KB要点MCU_CLOCKRATE_MHZ 480标注 H743 V 版本实际运行在 480 MHz影响调度与滤波器的时间基准FLASH_RESERVE_START_KB 128表明 bootloader 占据前 128 KB固件镜像从 128 KB 偏移处开始——这与 bootloader 定义文件中的FLASH_BOOTLOADER_LOAD_KB 128严格对应两者不一致会导致固件无法被 bootloader 正确加载参数存储被放在独立的 sector 14 中刷写固件不会覆盖已保存的参数。串口顺序与默认协议SERIAL_ORDER OTG1 USART1 USART2 USART3 UART4 UART5 USART6 UART7 UART8SERIAL_ORDER决定了SERIAL0-SERIAL8到物理总线的映射与 README 的 UART 映射表一一对应端口UART默认协议连接器引脚SERIAL0USBMAVLink2USB-CPA11/PA12SERIAL1USART1MAVLink2TELEM1PA9/PA10SERIAL2USART2MSP DisplayPortDJI O4O4-AIRPA2/PA3SERIAL3USART3GPSGPSPD8/PD9SERIAL4UART4MAVLink2TELEM2PA0/PA1SERIAL5UART5None用户辅助口UART5 焊盘PB13/PB12SERIAL6USART6RCINRCINPC6/PC7SERIAL7UART7ESC telemetryUART7 焊盘PE8/PE7SERIAL8UART8MAVLink2 115200BluetoothPE1/PE0默认协议由如下 define 固化进固件出厂即生效、无需手动配置define DEFAULT_SERIAL2_PROTOCOL SerialProtocol_MSP_DisplayPort define DEFAULT_SERIAL4_PROTOCOL SerialProtocol_MAVLink2 define DEFAULT_SERIAL6_PROTOCOL SerialProtocol_RCIN define DEFAULT_SERIAL7_PROTOCOL SerialProtocol_ESCTelemetry define DEFAULT_SERIAL8_PROTOCOL SerialProtocol_MAVLink2 define DEFAULT_SERIAL8_BAUD 115两个值得注意的细节O4-AIR 连接器是 6 针排针直接插接 DJI O4 / O3 Air UnitUSART2 承载 MSP DisplayPort 链路其 SBUS 引脚被硬线连接到 USART6 的 RC 输入因此 O4 既能出 OSD 画面又能作为遥控输入其余引脚供电与地SERIAL8 是板载蓝牙模块Bluetooth Classic / SPP默认按 115200 波特率的 MAVLink2 配置——hwdef.dat 中特意注释“UART8 Bluetooth modules typically pair at 115200”因为多数蓝牙模块在配对模式下波特率锁定为 115200。I2C 总线内部与外部的划分I2C_ORDER I2C2 I2C1 PB6 I2C1_SCL I2C1 PULLUP PB7 I2C1_SDA I2C1 PULLUP PB10 I2C2_SCL I2C2 PULLUP PB11 I2C2_SDA I2C2 PULLUP define HAL_I2C_INTERNAL_MASK 1I2C2BUS 0为内部总线HAL_I2C_INTERNAL_MASK 1表示位 0即第一路 I2C为内部总线板载 BMP581 气压计与 IST8310 罗盘挂在这里I2C1 为外部总线从 GPS 连接器引出外部罗盘经 ArduPilot 常规罗盘探测流程自动识别GPS 接口的 I2C所有引脚带PULLUP标记用芯片内部上拉补充板上较弱的上拉电阻。SPI3 上的双 IMUPB3 SPI3_SCK SPI3 PB4 SPI3_MISO SPI3 PB5 SPI3_MOSI SPI3 SPIDEV icm42688p SPI3 DEVID1 ICM42688_CS MODE3 2*MHZ 16*MHZ SPIDEV bmi088_g SPI3 DEVID2 BMI088_G_CS MODE3 10*MHZ 10*MHZ SPIDEV bmi088_a SPI3 DEVID3 BMI088_A_CS MODE3 10*MHZ 10*MHZ IMU Invensensev3 SPI:icm42688p ROTATION_ROLL_180_YAW_90 IMU BMI088 SPI:bmi088_a SPI:bmi088_g ROTATION_ROLL_180_YAW_90两路 IMU 共享 SPI3各自独立片选ICM-42688P 的 CS 在 PA15BMI088 的陀螺仪与加速度计片选分别在 PD5/PD4BMI088 拆成 gyro/accel 两个设备是 SPI 上双芯片的标准做法。两颗 IMU 均配置了 DRDY数据就绪中断线PD10/PD11/PD6采样时钟分别为 2/16 MHz 与 10 MHz。硬件安装方向统一为ROTATION_ROLL_180_YAW_90即 IMU 相对机体做了翻转安装软件已自动补偿。板载罗盘与气压计define AP_COMPASS_IST8310_INTERNAL_BUS_PROBING_ENABLED 0 define AP_COMPASS_PROBING_ENABLED 1 COMPASS IST8310 I2C:ALL_EXTERNAL:0x0E true ROTATION_NONE COMPASS IST8310 I2C:ALL_INTERNAL:0x0E false ROTATION_YAW_90 BARO BMP581 I2C:0:0x46板载 IST83100x0E默认false即不启用README 明确建议用户禁用板载罗盘、改用外部罗盘以避免电源系统的电磁干扰——从源码结构看这是通过 COMPASS 行的启用位实现的而非编译期删除探测I2C:ALL_EXTERNAL:0x0E表示外部总线上 0x0E 地址的 IST8310 会被正常探测启用因此同一地址的 GPS 内置罗盘也能工作气压计 BMP581 固定在 I2C 总线 0I2C2的 0x46 地址。PWM 输出与双向 DShot 遥测12 路输出分布在四个定时器组外加一路串行 LEDPE9 TIM1_CH1 TIM1 PWM(1) GPIO(50) BIDIR PE11 TIM1_CH2 TIM1 PWM(2) GPIO(51) PE13 TIM1_CH3 TIM1 PWM(3) GPIO(52) BIDIR PE14 TIM1_CH4 TIM1 PWM(4) GPIO(53) PB0 TIM3_CH3 TIM3 PWM(5) GPIO(54) BIDIR PB1 TIM3_CH4 TIM3 PWM(6) GPIO(55) PD12 TIM4_CH1 TIM4 PWM(7) GPIO(56) BIDIR PD13 TIM4_CH2 TIM4 PWM(8) GPIO(57) PD14 TIM4_CH3 TIM4 PWM(9) GPIO(58) PD15 TIM4_CH4 TIM4 PWM(10) GPIO(59) PB14 TIM12_CH1 TIM12 PWM(11) GPIO(60) NODMA PB15 TIM12_CH2 TIM12 PWM(12) GPIO(61) NODMAPWM 1-4TIM1、5-6TIM3、7-10TIM4为电机输出DShot 协议其中 1-8 路双向PWM 9-10 只有输出方向hwdef.dat 注释解释原因是TIM4_CH4 has no DMAMUX request——TIM4 的第三、四通道没有输入捕获 DMA 请求可用因此无法回读 ESC 帧每对通道共享一路输入捕获 DMACH1/CH2、CH3/CH4 各共享一路所以每对里只有一路标记BIDIR如 CH1、CH3这对另一路仍能获得遥测PWM 11-12TIM12为舵机输出带NODMA标记意味着不支持 DShot 遥测回读只能输出标准 PWM同一定时器组内的通道必须使用相同的输出频率和 DShot 模式这是 DShot 硬件级限制。双向 DShot 在 1-8 路提供 ESC RPM 遥测配合SERIAL7 ESC telemetry的默认协议即可回读电调转速与温度。灯光GPIO RGB 与 WS2812 串行灯RGB 状态灯PE5 LED_RED OUTPUT LOW GPIO(0) PE6 LED_GREEN OUTPUT LOW GPIO(1) PE4 LED_BLUE OUTPUT LOW GPIO(2) define AP_NOTIFY_GPIO_LED_RGB_RED_PIN 0 define AP_NOTIFY_GPIO_LED_RGB_GREEN_PIN 1 define AP_NOTIFY_GPIO_LED_RGB_BLUE_PIN 2 define AP_NOTIFY_GPIO_LED_RGB_ENABLED 1三路 RGB 均为低电平点亮OUTPUT LOW由 ArduPilot 的 AP_Notify 系统接管用于上锁/解锁/故障等状态指示。WS2812 串行灯NeoPixelPA5 TIM2_CH1 TIM2 PWM(13) GPIO(62) define DEFAULT_NTF_LED_TYPES 455WS2812 数据信号走PWM 13TIM2_CH1hwdef.dat 注释说明选择 TIM2 是因为它空闲系统 tick 定时器用的是 TIM5NTF_LED_TYPES 455是位组合板载 RGB I2C 灯 NeoPixel 位同时置位出厂默认点亮接上灯条即有效果接线为LED / LED_STRIP / LED-三针LED5V、LED_STRIP数据信号、LED-地灯条 LED 数量用NTF_LED_LEN设置默认 1接多灯灯条时改成实际数量板级默认参数 defaults.parm 中固化了SERVO13_FUNCTION 120把 PWM13 默认指派给串行 LED。电池监测与模拟输入双路模拟电池PC0 BATT_VOLTAGE_SENS ADC1 SCALE(1) PC1 BATT_CURRENT_SENS ADC1 SCALE(1) PC4 BATT2_VOLTAGE_SENS ADC1 SCALE(1) PC5 BATT2_CURRENT_SENS ADC1 SCALE(1)define HAL_BATT_MONITOR_DEFAULT 4 define HAL_BATT_VOLT_PIN 10 define HAL_BATT_CURR_PIN 11 define HAL_BATT_VOLT_SCALE 21.12 define HAL_BATT_CURR_SCALE 40.2 define HAL_BATT2_MONITOR_DEFAULT 4 define HAL_BATT2_VOLT_PIN 4 define HAL_BATT2_CURR_PIN 8 define HAL_BATT2_VOLT_SCALE 21.12 define HAL_BATT2_CURR_SCALE 40.2板子提供两组独立模拟电池输入引出为BV/BI焊盘BATT1与B2V/B2I焊盘BATT2主电源输入在B/5VIN焊盘。对应的默认参数BATT_MONITOR 4模拟电压电流、BATT2_MONITOR 4BATT_VOLT_PIN 10、BATT_CURR_PIN 11BATT2_VOLT_PIN 4、BATT2_CURR_PIN 8两组换算系数均为BATT_VOLT_MULT 21.12、BATT_AMP_PERVLT 40.2。README 明确提醒电压/电流换算系数要与实际接入的电源监测模块匹配即按模块的分压电阻与电流传感器灵敏度重新计算BATT_VOLT_MULT与BATT_AMP_PERVLT这是该板型最常见的调参点。空速与 RSSIPA4 AIRSPEED_ADC ADC1 SCALE(1) PA6 RSSI_ADC_PIN ADC1 SCALE(1) define HAL_DEFAULT_AIRSPEED_PIN 18 define BOARD_RSSI_ANA_PIN 3模拟空速在AS焊盘ADC1 模拟引脚 18设置ARSPD_TYPE 2模拟空速即启用hwdef 通过HAL_DEFAULT_AIRSPEED_PIN 18预设了ARSPD_PIN从源码结构看这使模拟空速在无需手动设置引脚号的情况下即可工作模拟 RSSI 在RS焊盘模拟引脚 3设置RSSI_TYPE 1模拟 RSSI启用。GPIO 与用户焊盘电机/舵机输出与 SW 焊盘全部注册为 ArduPilot GPIO可用于继电器、PINIO 等编号对照如下与 hwdef.dat 中GPIO(n)标记一致标签GPIO标签GPIOM1-M450-53M9-M1258-61M5-M854-57M13LED_STRIP62SW170SW372SW271SW473SW1-SW4 是通用用户焊盘hwdef 中初始化为OUTPUT LOW不是专用安全开关——从注释看这是刻意的设计选择用户应将其视为普通 PINIO/继电器脚使用不要按安全按钮语义接线。microSD 存储与 Bootloader固件侧hwdef.datPC12 SDMMC1_CK SDMMC1 PD2 SDMMC1_CMD SDMMC1 PC8 SDMMC1_D0 SDMMC1 PC9 SDMMC1_D1 SDMMC1 PC10 SDMMC1_D2 SDMMC1 PC11 SDMMC1_D3 SDMMC1 define FATFS_HAL_DEVICE SDCD1 define HAL_OS_FATFS_IO 1 env BUILD_ABIN TrueSDMMC1 使用 4 位数据总线D0-D3 全引出挂载为 FAT 文件系统设备SDCD1用于机载日志LoggingBUILD_ABIN True表示该板构建时额外生成 ABIN可写入 SD 的固件镜像以支持 SD 卡刷固件路径。Bootloader 侧hwdef-bl.dathfdef-bl.dat 定义了板上 ArduPilot bootloader 的行为FLASH_RESERVE_START_KB 0FLASH_BOOTLOADER_LOAD_KB 128bootloader 位于 0 偏移固件放到 128 KB 处与固件侧的FLASH_RESERVE_START_KB 128严格配套SERIAL_ORDER OTG1 USART1bootloader 阶段仅保留 USB 与 USART1 作为恢复控制台三个 IMU 片选引脚PA15/PD5/PD4在 bootloader 中保持输出高电平注释说明是为了防止 bootloader 启动过程中误驱动 IMU 片选LED 语义与固件不同绿色 活动指示蓝色 bootloader 状态HAL_LED_ON 0表示低电平点亮支持从 microSD 卡刷固件define AP_BOOTLOADER_FLASH_FROM_SD_ENABLED 1 define FATFS_HAL_DEVICE SDCD1固件烧录与编译构建烧录该板型固件发布在 firmware.ardupilot.org 的CORVON743V2子目录下板子出厂已带 ArduPilot bootloader因此任意 ArduPilot 地面站都可直接推送*.apj固件经 USB 或串口无需外接下载器若要更新bootloader 本身需使用arducopter_with_bl.hex或对应机型等价文件通过 DFU 模式配合 STM32CubeProgrammer 刷写。本地构建README 给出的构建命令可直接使用./waf configure --board CORVON743V2 ./waf copter # or plane / rover / sub构建产物位于build/CORVON743V2/ArduCopter/apj/下waf 构建系统按板型输出其中包含.apj带 bootloader 偏移的整机镜像与*_with_bl.hexbootloader 固件合刷镜像。上机使用要点小结默认即可用出厂默认已配置好 RC 输入SERIAL6 SBUS/CRSF/ELRS、O4 OSDSERIAL2 MSP DisplayPort、ESC 遥测SERIAL7、蓝牙 MAVLinkSERIAL8、NeoPixel 灯与双路模拟电池无需手动改串口协议罗盘建议禁用板载 IST8310、在 GPS 接口外接罗盘电源模块接入监测模块后按实际电阻系数重算BATT_VOLT_MULT/BATT_AMP_PERVLTBATT2 同理DShot1-8 路可回读 ESC 遥测9-10 路仅输出同一定时器组内保持频率与 DShot 模式一致灯条接LED_STRIP三针并设置NTF_LED_LEN为灯珠数量烧录日常用地面站刷*.apjbootloader 故障恢复时走 DFU *_with_bl.hex或借助 SD 卡刷固件路径AP_BOOTLOADER_FLASH_FROM_SD_ENABLED 1。【免费下载链接】ardupilotArduPlane, ArduCopter, ArduRover, ArduSub source项目地址: https://gitcode.com/GitHub_Trending/ar/ardupilot创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表