news 2026/9/14 21:59:51

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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.dathwdef-bl.datdefaults.parm三个配置文件,逐行印证这款 200A 级 GaN 功率管理单元在 ChibiOS HAL 层的引脚分配、INA239 电流传感器接入、ADC 温度采样与 CAN 升级通道实现,帮助集成商和开发者在无人机平台中正确选型、接线并刷写该 PMU。

一、产品定位与核心规格

CSKY_PMU 是 CSKY(晨羽)推出的 GaN(氮化镓)功率管理单元(PMU),在 ArduPilot 生态中作为 DroneCAN 从设备挂载,负责动力电池电压/电流采集、电池温度监测与机载电源分配。官方文档 README.md 给出的完整功能规格如下:

项目规格
处理器STM32F412,100MHz,1024KB Flash,256KB RAM
电压输入4S~14S(HV 高压系列)
连续电流200A
突发电流300A @ 25°C 持续 1 秒
最大电流传感200A
电压精度±0.05V
电流精度±0.7%
温度精度±1°C
电源 1 输出(Molex)5V/3A
电源 2 输出(XT30)12V/10A
转换效率97% @ 10A
通信协议DroneCAN
工作温度-25°C ~ 105°C
CAN 固件升级支持
校准无需校准

其中两点值得强调:

  • “无需校准(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 512
  • STM32F412Rx与文档中“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 2+HAL_STORAGE_SIZE 8192将参数存储固定在第 2、3 页(共 8KB),避免与固件区冲突;
  • env AP_PERIPH 1是关键宏:它声明该板构建的是AP_Periph 从设备固件(见 Tools/AP_Periph 目录),而非完整的 ArduCopter/ArduPlane 飞控主固件;
  • OSCILLATOR_HZ 8000000指定板载 8MHz 晶振,作为 PLL 时钟源。

3.2 串口、调试与 LED

SERIAL_ORDER USART1 PB6 USART1_TX USART1 NODMA PB7 USART1_RX USART1 NODMA define DEFAULT_SERIAL0_BAUD 57600 PA13 JTMS-SWDIO SWD PA14 JTCK-SWCLK SWD

USART1(PB6/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 2

PB14/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.pmu"
  • CAN1 收发引脚为 PB8(RX)/PB9(TX),与 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 INA239(SPI 接口的高侧电流监测芯片)通过 SPI1(PA5/PA6/PA7)挂接,片选 PA4,SPI 速率 10MHz;
  • AP_PERIPH_BATTERY_ENABLED+AP_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 位于 0~64KB,主固件加载点在其后,二者构成完整的双区 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 与 UART1:CAN 用于 DroneCAN 刷写协议,UART1(57600)用于调试,注释“make bl baudrate match debug baudrate for easier debugging”明确了两处波特率刻意保持一致以便排障;
  • HAL_BOOTLOADER_TIMEOUT 1000表示 bootloader 阶段有秒级等待窗口——上电后若未检测到有效主固件启动条件,MCU 停留在 bootloader,LED 持续快速闪烁,此时即可通过 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 10
  • TEMP1_TYPE 5:温度传感器类型编号为 5,对应 ArduPilot 温度库中的热敏电阻(thermistor)类型;
  • TEMP1_PIN 3:与hwdef.datPA3 BATT_TEMP_SENS ADC1的 ADC 通道号(通道 3)一致,说明该默认参数就是为 PA3 电池温度采样准备的;
  • TEMP1_A0 -41.0/TEMP1_A1 50.0:热敏电阻换算曲线(Steinhart-Hart/Beta 拟合)的上下限温度系数,把 ADC 读数线性映射到 -41°C ~ +50°C 区间——注意这与整机 -25°C~105°C 的工作温度区间不同,参数层面只覆盖电池温度关注的低温段,超上限后读数会被钳位;
  • TEMP_MSG_RATE 10:每秒 10 次(10Hz)通过 DroneCAN 广播温度消息,与 temperature.cpp 中1000U / g.temperature_msg_rate的节流逻辑对应。

六、固件加载方式

README 最后一节(Loading Firmware)给出两条官方刷写路径,结合上文硬件定义可明确其各自机制:

  1. DroneCan GUI 工具升级*.bin固件(推荐,走 CAN)
    • 依赖硬件上的 CAN bootloader(hwdef-bl.dat 启用 CAN1 +HAL_BOOTLOADER_TIMEOUT等待窗口);
    • 操作时设备 LED 应处于“持续快速闪烁”状态,否则先断开电池重新上电让 MCU 回落到 bootloader;
    • 该方式无需 USB/串口线,适合已成型的整机,是“CAN Firmware update: Support”规格的直接体现。
  2. 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 的集成要点可归纳为:

集成事项依据
4S~14S 电池直挂,无需参数校准README 规格 + INA239 硬传感(hwdef.dat L87-L90)
单条 Molex CLIK-Mate 6Pin 线完成 5V 供电 + CAN 通信README 接口定义 + PB8/PB9 CAN1 引脚
现场排障优先看 LED:快闪=bootloader 待刷写、快闪3s+常亮1s=等 CAN、慢闪=已连接README 状态灯定义 + LED_BOOTLOADER(hwdef-bl.dat L25-L26)
CAN 升级用 DroneCan GUI(.bin),USB 升级用 Mission Planner(.apj)README Loading Firmware 节
电池温度 10Hz 经 DroneCAN 上报,量程 -41°C~50°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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/14 21:58:51

3个步骤搞定凡科网页版登陆入口,选哪家好不再被坑

3个步骤搞定凡科网页版登陆入口,选哪家好不再被坑 改个需求建站公司拖一周,这种憋屈事谁没经历过?明明只是换个Banner图,结果对方说“排期满了”,让你等三天。这时候你心里肯定在骂:这建站公司到底哪家好?其实,很多时候不是人不行,是你没找对工具。如果你还在纠结外包费用高、沟通成本高,不妨看看凡科这类…

作者头像 李华
网站建设 2026/9/14 21:58:03

宁波美的壁挂炉维修电话|采暖异常预约上门|欧米到家客服电话

宁波壁挂炉出现不点火、热水忽冷忽热、地暖不热、反复掉压或漏水,应结合设备型号与采暖系统检查。欧米到家提供壁挂炉维修、清洗保养预约服务,常见故障、平台资质、上门流程及维修场景,帮助用户清楚报修、明白维修。壁挂炉维修不能只看故障代…

作者头像 李华
网站建设 2026/9/14 21:56:58

毫米波雷达4G版技术解析与应用实践

1. MSR01 4G版发布背景与行业意义毫米波雷达技术正在从传统汽车领域向更广泛的物联网场景渗透。这次发布的MSR01 4G版,标志着毫米波雷达设备首次实现蜂窝网络直连,解决了传统雷达设备组网复杂、数据传输延迟高的痛点。我在智能硬件行业摸爬滚打八年&…

作者头像 李华
网站建设 2026/9/14 21:56:35

基于递归最小二乘法的轮胎侧偏刚度在线估计与仿真分析

1. 项目概述与核心需求拆解1.1 为什么要估计轮胎侧偏刚度做车辆动力学控制的人,大概率都绕不开轮胎侧偏刚度这个参数。它直接决定了车辆在转向工况下的横摆响应特性——说白了,就是车子在转弯时是偏转向不足、中性转向还是转向过度,以及车身姿…

作者头像 李华
网站建设 2026/9/14 21:55:44

PCB耐CAF设计指南:从布局到叠层的工程化降险

很多工程师存在一个误区:耐 CAF 完全靠板材,设计影响不大。但大量失效案例与测试数据表明,设计因素对 CAF 失效的影响权重超过 40%,相同板材下,合理设计与不合理设计的产品,CAF 失效时间可以相差 3-5 倍。尤…

作者头像 李华
网站建设 2026/9/14 21:55:31

基于微信小程序的智能垃圾分类助手系统毕业设计项目源码

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

作者头像 李华