ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

ArduPilot CSKY GaN DroneCAN PMU:硬件规格、硬件定义与固件升级全解析

ArduPilot CSKY GaN DroneCAN PMU:硬件规格、硬件定义与固件升级全解析 ArduPilot CSKY GaN DroneCAN PMU硬件规格、硬件定义与固件升级全解析【免费下载链接】ardupilotArduPlane, ArduCopter, ArduRover, ArduSub source项目地址: https://gitcode.com/GitHub_Trending/ar/ardupilot本文基于 ArduPilot 仓库中libraries/AP_HAL_ChibiOS/hwdef/CSKY_PMU/目录下的官方硬件定义文档展开完整覆盖 CSKY GaN DroneCAN PMU 的电气规格、接口定义、状态灯含义与固件加载方式并结合同目录的hwdef.dat、hwdef-bl.dat、defaults.parm三个配置文件逐行印证这款 200A 级 GaN 功率管理单元在 ChibiOS HAL 层的引脚分配、INA239 电流传感器接入、ADC 温度采样与 CAN 升级通道实现帮助集成商和开发者在无人机平台中正确选型、接线并刷写该 PMU。一、产品定位与核心规格CSKY_PMU 是 CSKY晨羽推出的 GaN氮化镓功率管理单元PMU在 ArduPilot 生态中作为 DroneCAN 从设备挂载负责动力电池电压/电流采集、电池温度监测与机载电源分配。官方文档 README.md 给出的完整功能规格如下项目规格处理器STM32F412100MHz1024KB Flash256KB RAM电压输入4S14SHV 高压系列连续电流200A突发电流300A 25°C 持续 1 秒最大电流传感200A电压精度±0.05V电流精度±0.7%温度精度±1°C电源 1 输出Molex5V/3A电源 2 输出XT3012V/10A转换效率97% 10A通信协议DroneCAN工作温度-25°C 105°CCAN 固件升级支持校准无需校准其中两点值得强调“无需校准Calibration: No need”意味着出厂即完成传感标定集成时无需在 Mission Planner 中配置BATTx_系列校准参数降低了交付复杂度“CAN 固件升级支持”与下方第五、六节的 bootloader 硬件定义相互印证该板支持不接触板载 USB/SWD 接口、直接通过 CAN 总线升级固件这对已成型的飞控整机尤其重要。机械与接口规格文档同时给出了接口形式与机械尺寸接线与结构设计时需直接引用接口类型接口连接器/形式电源 1 与 CAN 口Molex CLIK-Mate 2mm 6Pin电源 2 口XT30PW-F电池 IN/OUT镀锡导线Tinned Wires机械规格尺寸57.5mm × 57.5mm × 17.1mm不含线缆重量140g含线缆。从电源 1 与 CAN 复用同一个 Molex CLIK-Mate 6Pin 接口可以推断板载 CAN 收发器由 5V/3A 电源口供电整机部署时只需一条 6Pin 线即可完成“电源 通信”双功能连接这是 DroneCAN PMU 常见的紧凑设计。二、状态 LED 指示README.md 定义了状态 LED 的三种闪烁模式可用于现场快速判断设备所处阶段LED 状态含义持续快速闪烁MCU 处于 bootloader 阶段等待刷写固件快速闪烁 3 秒后常亮 1 秒等待 CAN 连接慢速闪烁1 秒间隔CAN 已成功连接这与hwdef-bl.dat中 bootloader 的引脚分配直接对应PB14 LED_BOOTLOADER OUTPUT HIGH define HAL_LED_ON 0即 bootloader 与主固件共用的 PB14 引脚被标记为LED_BOOTLOADERHAL_LED_ON 0表示低电平点亮。bootloader 阶段“快速闪烁”即由该引脚驱动进入主固件后该引脚转由 AP_Periph 的 Notify 模块接管见下文 PB14 LED_R 的定义呈现“等待 CAN / 已连接”的两种节奏。因此维修排障时观察 LED 即可区分设备卡在了 bootloader、未上 CAN 还是已正常挂载无需连接地面站。三、hwdef.dat主固件硬件定义逐段解读hwdef.dat 是 ChibiOS 构建系统chibios_pins.py处理使用的硬件描述文件它把 README 中的纸面规格翻译成了可构建的引脚与宏定义3.1 MCU 与 Flash 布局MCU STM32F4xx STM32F412Rx FLASH_RESERVE_START_KB 64 STORAGE_FLASH_PAGE 2 define HAL_STORAGE_SIZE 8192 APJ_BOARD_ID AP_HW_CSKY_PMU env AP_PERIPH 1 OSCILLATOR_HZ 8000000 FLASH_SIZE_KB 512STM32F412Rx与文档中“STM32F412 100MHz”一致FLASH_SIZE_KB 512注释写明“assume 512k flash part”即按 512KB 封装编译链接脚本而文档标称 1024KB Flash 对应的是同系列更大封装编译时按保守值处理FLASH_RESERVE_START_KB 64表明主固件从 64KB 偏移处启动前 64KB 留给 bootloader这是支持 CAN 刷写固件的前提STORAGE_FLASH_PAGE 2HAL_STORAGE_SIZE 8192将参数存储固定在第 2、3 页共 8KB避免与固件区冲突env AP_PERIPH 1是关键宏它声明该板构建的是AP_Periph 从设备固件见 Tools/AP_Periph 目录而非完整的 ArduCopter/ArduPlane 飞控主固件OSCILLATOR_HZ 8000000指定板载 8MHz 晶振作为 PLL 时钟源。3.2 串口、调试与 LEDSERIAL_ORDER USART1 PB6 USART1_TX USART1 NODMA PB7 USART1_RX USART1 NODMA define DEFAULT_SERIAL0_BAUD 57600 PA13 JTMS-SWDIO SWD PA14 JTCK-SWCLK SWDUSART1PB6/PB7保留作 57600 波特率调试串口PA13/PA14 保留 SWD 调试口——这两条通道在产测与 bootloader 阶段bootloader 波特率同样是 57600见后文都会用到。LED 分配则解释了状态灯的实现PB14 LED_R OUTPUT HIGH GPIO(0) PB15 LED_G OUTPUT HIGH GPIO(1) PB13 LED OUTPUT HIGH GPIO(2) define AP_NOTIFY_GPIO_LED_RGB_ENABLED 1 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 2PB14/PB15/PB13 构成 RGB 三色 LED通过AP_NOTIFY_GPIO_LED_RGB_ENABLED接入 ArduPilot 的 AP_Notify 灯光系统。README 中描述的“快闪/慢闪”状态模式在固件层就是 AP_Notify 的等待/连接灯光效果而 bootloader 阶段的闪烁由LED_BOOTLOADER独立控制见 hwdef-bl.dat。3.3 DroneCAN 总线与静默引脚CAN_ORDER 1 PB8 CAN1_RX CAN1 PB9 CAN1_TX CAN1 PB5 GPIO_CAN1_SILENT OUTPUT PUSHPULL SPEED_LOW LOW define CAN_APP_NODE_NAME org.csky.pmuCAN1 收发引脚为 PB8RX/PB9TX与 bootloader 中的 CAN 引脚完全一致保证 boot 前后 CAN 电气通路不变PB5 GPIO_CAN1_SILENT是一块收发器静默控制 GPIO低电平有效从源码结构看它用于在升级或初始化阶段静默 CAN 收发器避免半双工总线上干扰CAN_APP_NODE_NAME org.csky.pmu是 DroneCAN 应用节点名称地面站DroneCan GUI / Mission Planner在设备列表中会以该名称标识这块 PMU是确认“连上的就是 CSKY PMU”的依据。3.4 INA239 电流/电压传感器SPI 接入PA5 SPI1_SCK SPI1 PA6 SPI1_MISO SPI1 PA7 SPI1_MOSI SPI1 PA4 INA_CS CS SPIDEV INA23X SPI1 DEVID1 INA_CS MODE1 10*MHZ 10*MHZ define AP_PERIPH_BATTERY_ENABLED 1 define AP_BATTERY_INA239_ENABLED 1 define AP_BATTERY_INA239_SPI_DEVICE INA23X define HAL_BATT_MONITOR_DEFAULT 26这一组定义落实了文档中“电压精度 ±0.05V、电流精度 ±0.7%、最大 200A 电流传感”的实现路径板载 TI INA239SPI 接口的高侧电流监测芯片通过 SPI1PA5/PA6/PA7挂接片选 PA4SPI 速率 10MHzAP_PERIPH_BATTERY_ENABLEDAP_BATTERY_INA239_ENABLED启用 AP_Periph 的电池监测子模块HAL_BATT_MONITOR_DEFAULT 26指定该板电池监测器的默认参数组编号INA239 直接输出经过 ADC 采样的电压/电流值这与“无需校准”的规格相呼应——传感线性度由芯片与出厂标定保证而非靠地面站参数微调。3.5 ADC 电池温度采样define AP_TEMPERATURE_SENSOR_ENABLED 1 define AP_TEMPERATURE_SENSOR_MAX_INSTANCES 1 define AP_PERIPH_DEVICE_TEMPERATURE_ENABLED 1 define HAL_USE_ADC TRUE define STM32_ADC_USE_ADC1 TRUE PA3 BATT_TEMP_SENS ADC1 SCALE(1)ADC1 的 PA3 通道采集电池温度配合defaults.parm下节完成热电偶/热敏电阻解析并通过AP_PERIPH_DEVICE_TEMPERATURE_ENABLED将温度以uavcan.equipment.device.Temperature消息广播到 DroneCAN 总线。从 Tools/AP_Periph/temperature.cpp 的实现可见temperature_sensor_update()按TEMP_MSG_RATE的周期将get_temperature()的读数转为开尔文后canard_broadcast出去——这正是 README 中“温度精度 ±1°C”规格在软件侧的落地链路。3.6 一个重要的编译开关# bootloader embedding / bootloader flashing not available define AP_BOOTLOADER_FLASHING_ENABLED 0该行注释与宏表明主固件不包含嵌入式 bootloader、也不支持从主固件发起二次刷写即刷写流程是单向的——只有 bootloader 可以接收并写入新固件主固件运行期间不能自我重启进入刷写。这对运维的含义是CAN 升级必须依赖 bootloader 的自动超时回退见下节HAL_BOOTLOADER_TIMEOUT而非“主固件主动进入升级模式”。四、hwdef-bl.dat支持 CAN 升级的 Bootloader 定义hwdef-bl.dat 描述同一硬件上 bootloader 固件的构建参数它与 README 的“CAN Firmware update: Support”和状态灯“持续快速闪烁 等待刷写”一一对应MCU STM32F4xx STM32F412Rx APJ_BOARD_ID AP_HW_CSKY_PMU OSCILLATOR_HZ 8000000 env AP_PERIPH 1 FLASH_RESERVE_START_KB 0 FLASH_BOOTLOADER_LOAD_KB 64 FLASH_SIZE_KB 512与主定义共用同一个APJ_BOARD_ID AP_HW_CSKY_PMU保证 DroneCan GUI / Mission Planner 通过板级 ID 匹配到正确的固件镜像FLASH_BOOTLOADER_LOAD_KB 64与主定义的FLASH_RESERVE_START_KB 64互相咬合bootloader 位于 064KB主固件加载点在其后二者构成完整的双区 Flash 布局。PB6 USART1_TX USART1 PB7 USART1_RX USART1 PB14 LED_BOOTLOADER OUTPUT HIGH define HAL_LED_ON 0 PA13 JTMS-SWDIO SWD PA14 JTCK-SWCLK SWD PB8 CAN1_RX CAN1 PB9 CAN1_TX CAN1 PB5 GPIO_CAN1_SILENT OUTPUT PUSHPULL SPEED_LOW LOW define HAL_USE_CAN TRUE define STM32_CAN_USE_CAN1 TRUE # make bl baudrate match debug baudrate for easier debugging define BOOTLOADER_BAUDRATE 57600 define HAL_BOOTLOADER_TIMEOUT 1000 PA4 INA_CS CS几个要点bootloader 同时启用 CAN 与 UART1CAN 用于 DroneCAN 刷写协议UART157600用于调试注释“make bl baudrate match debug baudrate for easier debugging”明确了两处波特率刻意保持一致以便排障HAL_BOOTLOADER_TIMEOUT 1000表示 bootloader 阶段有秒级等待窗口——上电后若未检测到有效主固件启动条件MCU 停留在 bootloaderLED 持续快速闪烁此时即可通过 CAN 或串口下发固件末尾单独一行PA4 INA_CS CS保留了 INA239 片选引脚的电气定义保证 bootloader 阶段该引脚不会浮空驱动 SPI 总线。五、defaults.parm出厂默认参数defaults.parm 仅五行但完整定义了温度通道与上报行为TEMP1_TYPE 5 TEMP1_PIN 3 TEMP1_A0 -41.0 TEMP1_A1 50.0 TEMP_MSG_RATE 10TEMP1_TYPE 5温度传感器类型编号为 5对应 ArduPilot 温度库中的热敏电阻thermistor类型TEMP1_PIN 3与hwdef.dat中PA3 BATT_TEMP_SENS ADC1的 ADC 通道号通道 3一致说明该默认参数就是为 PA3 电池温度采样准备的TEMP1_A0 -41.0/TEMP1_A1 50.0热敏电阻换算曲线Steinhart-Hart/Beta 拟合的上下限温度系数把 ADC 读数线性映射到 -41°C 50°C 区间——注意这与整机 -25°C105°C 的工作温度区间不同参数层面只覆盖电池温度关注的低温段超上限后读数会被钳位TEMP_MSG_RATE 10每秒 10 次10Hz通过 DroneCAN 广播温度消息与 temperature.cpp 中1000U / g.temperature_msg_rate的节流逻辑对应。六、固件加载方式README 最后一节Loading Firmware给出两条官方刷写路径结合上文硬件定义可明确其各自机制DroneCan GUI 工具升级*.bin固件推荐走 CAN依赖硬件上的 CAN bootloaderhwdef-bl.dat 启用 CAN1 HAL_BOOTLOADER_TIMEOUT等待窗口操作时设备 LED 应处于“持续快速闪烁”状态否则先断开电池重新上电让 MCU 回落到 bootloader该方式无需 USB/串口线适合已成型的整机是“CAN Firmware update: Support”规格的直接体现。Mission Planner 地面站升级*.apj固件走 USB/串口*.apj是 ArduPilot 标准固件打包格式携带AP_HW_CSKY_PMU板级 ID地面站据此匹配设备依赖板上的 SWD/调试串口通路PB6/PB7 调试串口57600 波特率与 bootloader 波特率一致。无论哪条路径刷写前建议核对固件的 board ID 与APJ_BOARD_ID AP_HW_CSKY_PMU匹配避免误刷其他 CSKY 硬件例如同目录风格类似的 CSKY405 飞控板见 CSKY405/Readme.md。七、小结与集成清单将文档规格与仓库硬件定义对照后CSKY GaN DroneCAN PMU 的集成要点可归纳为集成事项依据4S14S 电池直挂无需参数校准README 规格 INA239 硬传感hwdef.dat L87-L90单条 Molex CLIK-Mate 6Pin 线完成 5V 供电 CAN 通信README 接口定义 PB8/PB9 CAN1 引脚现场排障优先看 LED快闪bootloader 待刷写、快闪3s常亮1s等 CAN、慢闪已连接README 状态灯定义 LED_BOOTLOADERhwdef-bl.dat L25-L26CAN 升级用 DroneCan GUI.binUSB 升级用 Mission Planner.apjREADME Loading Firmware 节电池温度 10Hz 经 DroneCAN 上报量程 -41°C50°C参数层defaults.parm temperature.cpp主固件区 64KB 偏移、前 64KB 为 bootloader主固件不可自发起二次刷写FLASH_RESERVE_START_KB 64/AP_BOOTLOADER_FLASHING_ENABLED 0所有硬件级事实均可在 libraries/AP_HAL_ChibiOS/hwdef/CSKY_PMU/ 目录内追溯README.md 提供规格原文hwdef.dat 与 hwdef-bl.dat 提供引脚与构建级实现defaults.parm 提供出厂参数基线三者与 README 的规格描述完全自洽。【免费下载链接】ardupilotArduPlane, ArduCopter, ArduRover, ArduSub source项目地址: https://gitcode.com/GitHub_Trending/ar/ardupilot创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表