ArduPilot Atlas Control 飞控硬件定义全解析:STM32H743 板卡的串口、电池、罗盘与 PWM 配置 ArduPilot Atlas Control 飞控硬件定义全解析STM32H743 板卡的串口、电池、罗盘与 PWM 配置【免费下载链接】ardupilotArduPlane, ArduCopter, ArduRover, ArduSub source项目地址: https://gitcode.com/GitHub_Trending/ar/ardupilot本文以 ArduPilot 仓库中 Atlas Control 飞控的硬件定义文档为核心系统讲解这块基于 STM32H743 的板卡在三重 IMU、双气压计、内置罗盘、双电源监控端口、14 路 PWM 分组、UART 映射及固件烧录等方面的硬件设计与参数配置。读完本文后你可以准确理解hwdef.dat中每类外设的引脚分配依据掌握电池监控、IMU 加热丝、GPIO 复用等关键参数的设置方法并能按 DFU 流程完成该板卡的首次固件加载与后续升级。一、硬件概览Atlas Control 的核心能力Atlas Control 是 ArduPilot 支持的 ChibiOS 平台飞控板卡其硬件定义位于 hwdef/Atlas-Control该目录包含四份关键文件README.md板卡功能、引脚定义与使用配置文档hwdef.dat主固件的硬件定义文件由chibios_hwdef.py处理hwdef-bl.datAP_Bootloader 使用的精简硬件定义defaults.parm板级默认参数文件。根据文档该板卡的主要硬件特性如下类别配置主控STM32H743 微控制器16MHz 外部晶振2048KB FlashIMU三路ICM-42688-P、ICM-20689、ICM-20689带内部加热丝温控气压计两颗 MS5611SPI 接口罗盘内置 RM3100SPI另可通过外部 I2C 扩展存储microSD 卡槽SDMMC1板载 FRAM 用于参数存储串口4 路 UART 加 USB电机/舵机14 路 PWM 输出其中 12 路支持 DShot总线4 路 I2C两路外接、2 路 CAN其他外部蜂鸣器、内置 RGB LED、舵机轨与 VCC 电压监控、两路专用电源输入、外部 USBmicro USB 与 JST GH二、hwdef.dat 硬件定义传感器总线的引脚分配hfdef.dat 的第一部分声明了 MCU 与板级标识MCU STM32H7xx STM32H743xx OSCILLATOR_HZ 16000000 APJ_BOARD_ID AP_HW_ATLAS_CONTROL FLASH_SIZE_KB 2048 FLASH_RESERVE_START_KB 128其中APJ_BOARD_ID AP_HW_ATLAS_CONTROL是烧录器识别板卡的关键标识它在 Tools/AP_Bootloader/board_types.txt 中登记为硬件 ID1227AP_Bootloader 和固件服务器正是依靠该 ID 区分不同板型。FLASH_RESERVE_START_KB 128表示主固件从 Flash 的 128KB 处开始放置前 128KB 留给 bootloader。2.1 SPI 总线与 IMU/气压计/罗盘的挂载板卡内部传感器全部通过 SPI 连接hwdef.dat中定义了三条内部 SPI 和两条外接 SPISPI1内部传感器挂载 ADIS16470可选高精度 IMU 插槽与 ICM-20689片选脚分别为PF10 ADIS16470_CS和PG6 ICM20689_CSSPI4传感器 2挂载 BMI088 加速度计/陀螺仪、MS5611_IMU 气压计、ICM-42688SPI6外部 2挂载 MS5611_BOARD 气压计、第二路 ICM-20689以及可外挂的 ICM-20649/ICM-20689SPI2板载 FRAMRamtron参数存储同时兼容旧版板上的 RM3100SPI5外部 1引出 3 个外部片选EXT1_CS1~3供外接 SPI 传感器使用。传感器设备的最终声明为SPIDEV ms5611_imu SPI4 DEVID1 MS5611_IMU_CS MODE3 20*MHZ 20*MHZ SPIDEV ms5611_board SPI6 DEVID1 MS5611_BOARD_CS MODE3 20*MHZ 20*MHZ SPIDEV icm42688 SPI4 DEVID2 ICM42688_CS MODE3 2*MHZ 8*MHZ SPIDEV icm20689 SPI1 DEVID2 ICM20689_CS MODE3 2*MHZ 8*MHZ SPIDEV icm20689_board SPI6 DEVID2 ICM20689_BOARD_CS MODE3 2*MHZ 8*MHZ SPIDEV rm3100-1 SPI1 DEVID1 RM3100_CS MODE3 1*MHZ 1*MHZ SPIDEV rm3100-2 SPI2 DEVID2 RM3100_CS MODE3 1*MHZ 1*MHZ对应文档所述“三路 IMU 两颗 MS5611 气压计”BARO MS5611 SPI:ms5611_imu BARO MS5611 SPI:ms5611_board IMU ADIS1647x SPI:adis16470 ROTATION_PITCH_180_YAW_270 ADIS_DRDY_PIN IMU Invensensev3 SPI:icm42688 ROTATION_PITCH_180_YAW_270 IMU Invensense SPI:icm20689 ROTATION_NONE IMU Invensense SPI:icm20689_board ROTATION_NONE从源码结构看hwdef.dat注释明确指出 ADIS16470 与 ICM-20689 只会在同一次构建中启用其一后期板型用 ADIS 高精度 IMU 替换一颗 ICM-20689而ROTATION_PITCH_180_YAW_270这类安装旋转参数保证了多 IMU 姿态轴系一致。define HAL_DEFAULT_INS_FAST_SAMPLE 5则设置了该板 INS 快速采样的默认值。2.2 I2C 总线布局板卡共 4 路 I2C与文档“4 I2C busesTwo external I2C ports”的表述对应PB8 I2C1_SCL I2C1 # I2C1 位于 GPS1 串口旁边 PB9 I2C1_SDA I2C1 PF1 I2C2_SCL I2C2 # I2C2 位于 GPS2 连接器 PF0 I2C2_SDA I2C2 PH7 I2C3_SCL I2C3 # I2C3 为板载 RM3100 罗盘专用 PH8 I2C3_SDA I2C3 PF14 I2C4_SCL I2C4 # I2C4 使用 BDMADMAMUX2 PF15 I2C4_SDA I2C4 I2C_ORDER I2C3 I2C1 I2C2 I2C4I2C_ORDER决定了运行时 COMPASS1 等外部传感器探测的总线顺序——板载磁计I2C3排在最前两路外部 I2C 总线随 GPS 接口引出用于外挂罗盘或传感器这也是 README 中“可通过 SDA/SCL 连接器外接罗盘”的实现基础。2.3 存储、电源使能与安全开关除传感器外hwdef.dat还定义了若干影响整机行为的宏define HAL_STORAGE_SIZE 32768 define HAL_WITH_RAMTRON 1 # 使用 Ramtron FRAM 做参数存储 define HAL_HAVE_SAFETY_SWITCH 1 # 支持独立安全开关 define HAL_OS_FATFS_IO 1 # microSD FAT 文件系统支持 define HAL_ADSB_SAGETECH_MXS_ENABLED HAL_ADSB_ENABLED # Sagetech MXS ADSB 接收机其中 FRAM 通过 SPI2 挂载SPIDEV ramtron SPI2 DEVID1 FRAM_CS参数直接写入 FRAM 而非 flash这是该板读写参数快、不损耗 Flash 的原因。SD 卡走 SDMMC1PC8~PC12、PD2支持 5V 电源使能控制PG7 VDD_5V_RC_EN、PG4 VDD_5V_PERIPH_EN、PD11 VDD_5V_HIPOWER_EN等使能引脚。三、UART 与串口映射文档给出的串口映射表是接线时的核心依据PortUART协议TX DMARX DMA0USBMAVLink2✘✘1USART2MAVLink2✔✔2USART6MAVLink2✔✔3USART1GPS✘✘4UART4GPS✘✘6UART7None✘✘7USBSLCAN✘✘注意SERIAL1 和 SERIAL2 具备 RTS/CTS 流控能力。该表与hwdef.dat中的SERIAL_ORDER严格一致SERIAL_ORDER OTG1 USART2 USART6 USART1 UART4 UART8 UART7 OTG2即 PORT0 为 OTG1USBPORT1/2 为带 DMA 的两路数传PORT3/4 为两路 GPSUSART1、UART4 均标注 NODMAPORT6 为 UART7 调试口PORT7 为第二路 USBOTG2用于 SLCAN 调试。hwdef.dat中还能看到 USART2 与 USART6 额外分配了 CTS/RTS 引脚PD3/PD4、PG15/PG8从源码结构看这正是文档中“SERIAL1/2 有流控能力”声明的底层依据。另外 UART8PE0/PE1被分配为 SBUS/DSM 口用于接双向 RC 接收机文档同时说明板载 ADSB 接收机连接在 SERIAL5 上。两路 GPS 端口还伴随引出两路外部 I2C见上一节因此 GPS 连接器上除了串口还有 SDA/SCL 信号可用于挂载 I2C 设备。四、连接器引脚定义除特别说明外板卡所有连接器均为 JST GH 1.25mm 间距。以下是文档中完整保留的各连接器引脚表。4.1 TELEM1 / TELEM2 数传口6 针PinSignalVolt1 (red)VCC5V2 (blk)TX (OUT)3.3V3 (blk)RX (IN)3.3V4 (blk)CTS3.3V5 (blk)RTS3.3V6 (blk)GNDGND4.2 ADC 口3 针PinSignalVolt1ADC INup to 3.3V2GNDGND33.3V3.3V4.3 FMU 与 IO SWD6 针外壳取下后可见拆下外壳后可见两个 SWD 连接器一个属于 FMU主 MCU另一个属于 IOMCU。靠近舵机轨的是 IO SWD两个连接器的 GND 针均位于离舵机轨最远的一端。PinSignalVolt1VCC5V2TX3.33RX3.34SWDIO3.35SWCLK3.36GNDGND主 MCU 的 SWD 引脚在hwdef.dat中为PA13 JTMS-SWDIO与PA14 JTCK-SWCLK可外接 ST-Link 或 black-magic 探针调试。4.4 CAN1 CAN24 针PinSignalVolt1 (red)VCC5V2 (blk)CAN_H12V3 (blk)CAN_L12V4 (blk)GNDGNDhwdef.dat中 CAN1 使用PI9/PB13收发CAN2 使用PB12/PB13并各有静音控制脚PH2 GPIO_CAN1_SILENT、PH3 GPIO_CAN2_SILENT用于 DroneCAN 静默功能。需要注意注释说明 CAN2 与 USB_HS 不能同时使用。4.5 POWER_A 与 POWER_C 双电源监控口各 6 针文档指出 POWER_A 是模拟analogPMU 接口POWER_C 是 DroneCAN PMU 接口POWER_APinSignalVolt1 (red)VCC5V2 (red)VCC5V3 (blk)CURRENTup to 3.3V4 (blk)VOLTAGEup to 3.3V5 (blk)GNDGND6 (blk)GNDGNDPOWER_CPinSignalVolt1 (red)VCC5V2 (red)VCC5V3 (blk)CAN_Hup to 3.3V4 (blk)CAN_Lup to 3.3V5 (blk)GNDGND6 (blk)GNDGND两个端口在hwdef.dat中各有 nVALID 状态检测脚PG1 VDD_BRICK_nVALIDPOWER_C/CAN 侧视为主电源和PG2 VDD_BRICK2_nVALIDPOWER_A 侧供 ArduPilot 的BatteryBrick监控机制判断电源在线状态。4.6 USB 口6 针PinSignalVolt1 (red)VCC5V2 (blk)D_plus3.3V3 (blk)D_minus3.3V4 (blk)GNDGND5 (blk)BUZZER电池电压驱动6 (blk)Boot/Error LEDhwdef.dat中蜂鸣器实际由PE5 TIM15_CH1GPIO 77ALARM 类型的 PWM 驱动USB 通过 OTG_FSPA11/PA12连接PH15引脚用于 USB HS/FS 端口切换。五、RC 输入与 14 路 PWM 输出5.1 RCIN 单端遥控输入RC 输入配置在舵机轨一端的 RCIN 引脚上。所有 ArduPilot 支持的单向 RC 协议包括 PPM都可以从此口输入对于 CRSF/ELRS 这类双向或半双工协议则必须改用完整的 UART即 UART8 SBUS/DSM 口。hwdef.dat对应定义为PB4 TIM3_CH1 TIM3 RCININT PULLDOWN LOW5.2 PWM 输出分组14 路 PWM 输出分为 4 组同一组内必须使用相同协议PWM 或 DShot 或 Serial LED 等输出 1~4group1支持双向 DShot输出 5~8group2支持双向 DShot输出 9~12group3支持 DShot输出 13、14group4仅 PWM无 DMAhwdef.dat中每个输出都同时给出了定时器通道、PWM 序号和 ArduPilot GPIO 编号PH10 TIM5_CH1 TIM5 PWM(1) GPIO(50) ... PH6 TIM12_CH1 TIM12 PWM(13) GPIO(62) NODMA PH9 TIM12_CH2 TIM12 PWM(14) GPIO(63) NODMAgroup4 的NODMA标记与文档“PWM only, no DMA”的描述一致这也是第 13/14 路无法跑 DShot 协议的原因。六、电池监控模拟 PMU 的默认配置板卡随机附带一个模拟电源监控模块默认配置即使用模拟监控。该模块额定支持最高 60V14S与 60A 持续电流。文档给出的默认参数为BATT_MONITOR: 4Analog Voltage and CurrentBATT_VOLT_PIN: 16BATT_CURR_PIN: 17BATT_VOLT_MULT: 18.000BATT_AMP_PERVLT: 24.000BATT_VLT_OFFSET: -0.1这些参数在源码中有两处对应hwdef.dat中的板级默认值保证烧录后即可用define HAL_BATT_MONITOR_DEFAULT 4 define HAL_BATT_VOLT_PIN 16 define HAL_BATT_CURR_PIN 17 define HAL_BATT_VOLT_SCALE 18.000 define HAL_BATT_CURR_SCALE 24.000defaults.parm 板级参数文件# setup the parameter for the ADC power module BATT_VLT_OFFSET -0.1对应的 ADC 引脚在hwdef.dat中定义PA0 BATT_VOLTAGE_SENS ADC1电压分压乘数 18与PA1 BATT_CURRENT_SENS ADC1电流采样24 A/V。板上还有PC5 VDD_5V_SENSSCALE 2、PB1 FMU_SERVORAIL_VCC_SENSSCALE 3等内部电压监控 ADC即文档所述“舵机轨与 VCC 电压监控”的实现。若改用 POWER_C 口的 DroneCAN PMU则 BATT_MONITOR 需改为 DroneCAN 类型并配置 PMU 的 CAN 节点号。七、罗盘、IMU 加热丝与 GPIO 复用7.1 罗盘Atlas Control 内置 RM3100 罗盘SPI 接口并通过外部 SDA/SCL 连接器支持 I2C 外挂罗盘。hwdef.dat中的定义为define AP_COMPASS_PROBING_ENABLED 1 # probe for RM3100 on SPI1 or SPI2 COMPASS RM3100 SPI:rm3100-2 false ROTATION_ROLL_180_YAW_90注释说明 RM3100 可能位于 SPI1 或 SPI2后期板型放在 SPI2把 SPI1 让给 ADIS1647x固件会对两条总线分别探测rm3100-1/rm3100-2两个 SPIDEV。7.2 IMU 加热丝板载 IMU 加热丝由BRD_HEAT_TARG参数控制单位为摄氏度。hwdef.dat中对应PA8 HEATER_EN OUTPUT LOW GPIO(80) define HAL_HEATER_GPIO_PIN 80 define HAL_HAVE_IMU_HEATER 1 define HAL_IMU_TEMP_DEFAULT 45 # 默认目标温度 45C即出厂默认加热目标温度为 45°C用户可在BRD_HEAT_TARG中按环境温度调整该参数为 0 时加热丝关闭。7.3 14 路输出复用为 GPIO14 路 PWM 输出均可通过把对应SERVOx_FUNCTION置为 -1 复用为 GPIO继电器、按键、RPM 测速等。文档给出的 GPIO 编号映射如下输出GPIO 编号PWM1 (M1)50PWM2 (M2)51PWM3 (M3)52PWM4 (M4)53PWM5 (M5)54PWM6 (M6)55PWM7 (M7)56PWM8 (M8)57PWM9 (M9)58PWM10 (M10)59PWM11 (M11)60PWM12 (M12)61PWM13 (M13)62PWM14 (M14)63模拟 RSSI (PF12)92上述编号与hwdef.dat中PWM(n) GPIO(nn)的声明逐一对应可直接用于SRVn_FUNCTION、RCIN_TYPE等参数中指定 GPIO 引脚模拟 RSSI 输入对应PF12 RSSI_IN ADC1。7.4 其他板级特性RGB LEDPI5/PI6/PI7三色灯GPIO 0/1/2启用 Pixracer 风格三灯状态指示AP_NOTIFY_GPIO_LED_RGB_ENABLED安全开关PE10 SAFETY_IN独立安全开关输入配合PE12 LED_SAFETY指示灯ADSB板载 Sagetech MXS ADSB 接收机连接 SERIAL5由HAL_ADSB_SAGETECH_MXS_ENABLED宏使能。八、固件烧录与 Flash 布局该板卡的固件位于 ArduPilot 固件服务器中以 “Atlas-Control” 命名的子目录。首次烧录流程为按住 boot 按钮插入 USB使板卡进入 DFU 模式用任意 DFU 烧录工具加载xxx_bl.hexbootloader 固件之后即可用 Mission Planner 直接更新主固件。这一流程与 hwdef-bl.dat 的 Flash 布局完全吻合APJ_BOARD_ID AP_HW_ATLAS_CONTROL FLASH_RESERVE_START_KB 0 # bootloader 从 0 地址安装 FLASH_BOOTLOADER_LOAD_KB 128 # bootloader 将主固件放到 128KB 处 define AP_BOOTLOADER_FLASH_FROM_SD_ENABLED 1 # 支持从 SD 卡刷固件即 bootloader 占据 Flash 前 128KB主固件从 128KB 起与hwdef.dat的FLASH_RESERVE_START_KB 128相互呼应bootloader 还定义了三个 LED 状态红/蓝/绿用于指示刷写进度并支持通过 microSD 卡直接加载固件AP_BOOTLOADER_FLASH_FROM_SD_ENABLED为无 USB 口场景提供备用升级通道。九、小结Atlas Control 的硬件定义文档与hwdef.dat形成了“文档—源码”互证的完整闭环串口映射表对应SERIAL_ORDER电池参数对应HAL_BATT_*系列宏与defaults.parmGPIO 编号表对应PWM(n) GPIO(nn)声明DFU 烧录流程对应hwdef-bl.dat的 Flash 分区。对于 ArduPilot 开发者而言这套 hwdef 文件板级 ID、传感器 SPI 挂载、FRAM 存储、加热丝、安全开关、SD 刷固件是理解 ChibiOS 平台如何描述一块完整飞控板卡的典型样本对于用户而言掌握本文的引脚表与默认参数后即可正确完成数传、GPS、PMU、DShot 电机与 GPIO 的接线和参数配置。【免费下载链接】ardupilotArduPlane, ArduCopter, ArduRover, ArduSub source项目地址: https://gitcode.com/GitHub_Trending/ar/ardupilot创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考