新闻详情

新闻详情

首页 / 资讯中心 / 详情

ArduPilot JFB100 硬件定义全解析:JAE JFB-100 飞行控制板的 UART、PWM、电池监测与 GPIO 实战指南

发布时间:2026/9/14 9:44:16来源:尧图网络
ArduPilot JFB100 硬件定义全解析:JAE JFB-100 飞行控制板的 UART、PWM、电池监测与 GPIO 实战指南
ArduPilot JFB100 硬件定义全解析JAE JFB-100 飞行控制板的 UART、PWM、电池监测与 GPIO 实战指南【免费下载链接】ardupilotArduPlane, ArduCopter, ArduRover, ArduSub source项目地址: https://gitcode.com/GitHub_Trending/ar/ardupilotJFB-100 是 ArduPilot 仓库中为 JAE JFB-100 飞行控制板定义的 ChibiOS 硬件目标板board target本文以 libraries/AP_HAL_ChibiOS/hwdef/JFB100/README.md 为核心结合 hwdef.dat、hwdef-bl.dat 与 defaults.parm 的源码实现系统讲解该板的 UART 映射、RC 输入、PWM/DShot 分组、电池监测、罗盘、GPIO、I2C/CAN 总线、调试口与固件加载方式。读完本文你将能够正确理解 ArduPilot 串口/SPI/I2C 编号与 JFB-100 板载接口的对应关系并完成 RC 输入、DShot 输出、GPIO 复用与电池参数的实际配置。1. JFB-100 硬件特性概览根据 READMEJFB-100 由 JAE 销售主要硬件特性如下STM32F765 微控制器两颗 IMUICM20602 与 SCHA63TMS5611 SPI 气压计内置 I2C IST8310 罗盘磁力计microSD 卡槽6 个 UART 加 USB8 路 PWM 输出4 个 I2C 和 2 个 CAN 接口外部蜂鸣器外部安全开关safety switch舵机供电轨与 Vcc 电压监测两个专用的外部电源砖power brick输入端口hwdef.dat 中的实现与 README 完全对应例如 MCU 定义为# MCU class and specific type. It is a F765, which is the same as F767 # but without the TFT interface MCU STM32F7xx STM32F767xx从源码结构看该板复用 STM32F767xx 的 MCU 类F765 与 F767 引脚资源相同区别仅在没有 TFT 接口Flash 大小配置为 2048 KBFLASH_SIZE_KB 2048晶振为 16 MHzOSCILLATOR_HZ 16000000。双 IMU 与气压计在 SPI 设备表中定义SPIDEV ms5611 SPI4 DEVID1 MS5611_CS MODE3 20*MHZ 20*MHZ SPIDEV scha63t_g SPI1 DEVID1 SCHA63T_G_CS MODE0 10*MHZ 10*MHZ SPIDEV scha63t_a SPI1 DEVID2 SCHA63T_A_CS MODE0 10*MHZ 10*MHZ SPIDEV icm20602 SPI1 DEVID3 ICM20602_CS MODE3 2*MHZ 8*MHZ SPIDEV ramtron SPI2 DEVID1 FRAM_CS MODE3 8*MHZ 8*MHZIMU 实例化与旋转方向IMU SCHA63T SPI:scha63t_a SPI:scha63t_g ROTATION_NONE IMU Invensense SPI:icm20602 ROTATION_PITCH_180_YAW_270气压计实例化BARO MS5611 SPI:ms5611。值得注意的是 hwdef 中还预留了 SPI2 上的 RAMTRON FRAM 作为参数存储define HAL_STORAGE_SIZE 32768 define HAL_WITH_RAMTRON 12. UART 映射SERIAL0~SERIAL6 与物理接口对应关系README 给出的 UART 映射表SERIAL0 - USBSERIAL1 - UART2Telem1SERIAL2 - UART3Telem2SERIAL3 - UART1GPSSERIAL4 - UART4GPS2丝印标注 UART/I2CBSERIAL5 - UART6RCSERIAL6 - UART7备用debugTelem1 和 Telem2 两个端口带有 RTS/CTS 流控引脚其余 UART 没有。UART7 的连接器丝印标注为 debug但在 ArduPilot 中可作为通用 UART 使用。该映射由 hwdef.dat 的SERIAL_ORDER行决定串口编号按此顺序从 0 开始分配SERIAL_ORDER OTG1 USART2 USART3 USART1 UART4 USART6 UART7 OTG2逐一对应OTG1USB为 SERIAL0USART2 为 SERIAL1Telem1USART3 为 SERIAL2Telem2USART1 为 SERIAL3GPS1UART4 为 SERIAL4GPS2USART6 为 SERIAL5RCUART7 为 SERIAL6备用/debug。引脚级定义摘录# USART2 is telem1 PD6 USART2_RX USART2 PD5 USART2_TX USART2 PD3 USART2_CTS USART2 PD4 USART2_RTS USART2 # USART1 is GPS1 PB7 USART1_RX USART1 NODMA PB6 USART1_TX USART1 NODMATelem1USART2与 Telem2USART3均定义了 CTS/RTS 引脚而 GPS1/GPS2/RC/debug 口标注NODMA或未定义流控引脚与 README “只有 Telem1/Telem2 有 RTS/CTS” 的描述一致。2.1 默认 RC 输入串口配置defaults.parmdefaults.parm 为 JFB-100 提供了板级默认参数# JFB-100 board default definition SERIAL5_OPTIONS,8 SERIAL5_PROTOCOL,23其中SERIAL5_PROTOCOL取值 23对应 AP_SerialManager.h 中的SerialProtocol_RCIN协议枚举。也就是说该板出厂默认将 SERIAL5即硬件 UART6丝印 RC 口配置为 RC 输入串口。结合 README 的 RC 输入说明这个默认值让板子开箱即用把 SBUS/CRSF 接收机插到 RC 口即可接收遥控信号。若将该串口改作他用如第二路 GPS需要手动覆盖SERIAL5_PROTOCOL与SERIAL5_OPTIONS。3. RC 输入DSM/SBUS RC 端口README 指出RC 输入配置在标注为 DSM/SBUS RC 的端口上该连接器支持所有 RC 协议并配有两根线缆若要通过软件绑定software bindingSpektrum 卫星接收机必须使用 Spektrum 卫星线。hwdef.dat 中与该功能对应的硬件实现# RCInput on the PPM pin, for all protocols PI5 TIM8_CH1 TIM8 RCININT PULLUP LOW# Control of Spektrum power pin PE4 SPEKTRUM_PWR OUTPUT HIGH GPIO(73) define HAL_GPIO_SPEKTRUM_PWR 73 # Spektrum Power is Active High define HAL_SPEKTRUM_PWR_ENABLED 1可以看到 RC 输入使用 TIM8_CH1PI5作为 RCININT 中断输入另有专用 GPIOGPIO 73PE4控制 Spektrum 接收机电源且为高电平有效active high。这正是“软件绑定需使用 Spektrum 卫星线”的硬件基础只有在该供电脚有效的线缆上ArduPilot 才能通过串口向卫星接收机下发绑定数据。4. PWM 输出8 路、3 个分组与 DShot 限制README 说明 JFB-100 支持最多 8 路 PWM 输出直接挂在 STM32F765 上支持所有 PWM 协议前 4 路支持 DShot。8 路输出分 3 组PWM 1、2、3、4 在 group1PWM 5、6 在 group2PWM 7、8 在 group3同一组内的通道必须使用相同的输出频率若组内任一通道的协议设为 DShot则该组所有通道都必须用 DShot。这个分组限制直接来源于底层定时器的硬件归属hwdef.dat 中 8 路 PWM 的定时器分配# PWM AUX channels PE14 TIM1_CH4 TIM1 PWM(1) GPIO(50) PA10 TIM1_CH3 TIM1 PWM(2) GPIO(51) PE11 TIM1_CH2 TIM1 PWM(3) GPIO(52) PE9 TIM1_CH1 TIM1 PWM(4) GPIO(53) PD13 TIM4_CH2 TIM4 PWM(5) GPIO(54) PD14 TIM4_CH3 TIM4 PWM(6) GPIO(55) # we need to disable DMA on the last 2 FMU channels # as timer 12 doesnt have a TIMn_UP DMA option PH6 TIM12_CH1 TIM12 PWM(7) GPIO(56) NODMA PH9 TIM12_CH2 TIM12 PWM(8) GPIO(57) NODMA从源码结构看group1PWM1~4共用 TIM1group2PWM5~6共用 TIM4group3PWM7~8共用 TIM12——每组共享一个硬件定时器同一定时器只有一个时基因此同组通道频率必须一致DShot 帧率要求决定了“组内混用协议”不可行。同时可以看到 PWM7/8 标注NODMA原因是 TIM12 没有 TIMx_UP 对应的 DMA 通道源码注释也明确说明了这一点。5. GPIO把 PWM 5/6 复用作通用 GPIOREADME 的 GPIO 一节说明6 路 PWM 口可以当 GPIO 使用继电器、按键、RPM 等做法是把BRD_PWM_COUNT设为小于 6 的值。例如把BRD_PWM_COUNT设为 4则 PWM5 和 PWM6 可释放为 GPIO。ArduPilot 中 PIN 参数使用的 GPIO 编号为AUX1 - 50AUX2 - 51AUX3 - 52AUX4 - 53AUX5 - 54AUX6 - 55对照 hwdef.dat 的PWM(n) GPIO(m)双标识定义PWM1~6 恰好对应 GPIO 50~55PE14/PA10/PE11/PE9/PD13/PD14与 README 的编号表一一对应。因此当你设置BRD_PWM_COUNT4后可在PIN_系列参数中填入 54AUX5、55AUX6来驱动继电器或读取 RPM 信号。此外 hwdef 还预留了捕获引脚与多个复用脚如PA5 FMU_CAP1 GPIO(58)、PB10 WA4等供扩展用途。6. 电池监测两个电源监测端口与电压/电流分压系数README 说明板上有两个专用电源监测端口8 pin 连接器且正确的电池设置参数取决于所接电源砖类型。hwdef.dat 给出了完整的 ADC 通道与标定系数# analog in PA0 BATT_VOLTAGE_SENS ADC1 SCALE(1) PA1 BATT_CURRENT_SENS ADC1 SCALE(1) PA2 BATT2_VOLTAGE_SENS ADC1 SCALE(1) PA3 BATT2_CURRENT_SENS ADC1 SCALE(1) ... PB0 RSSI_IN ADC1 SCALE(1) ... PC0 VDD_5V_SENS ADC1 SCALE(2) PC1 SCALED_V3V3 ADC1 SCALE(2) # setup for supplied power brick define HAL_BATT_VOLT_SCALE 18.182 define HAL_BATT_CURR_SCALE 36.364 define HAL_BATT_VOLT_PIN 0 define HAL_BATT_CURR_PIN 1 define HAL_BATT2_VOLT_PIN 2 define HAL_BATT2_CURR_PIN 3可以看到电池 1 电压/电流分别使用 ADC Pin0PA0与 Pin1PA1电池 2 电压/电流分别使用 ADC Pin2PA2与 Pin3PA35V 与 3.3V 供电轨监测使用VDD_5V_SENSPC0与SCALED_V3V3PC1即 README 提到的“舵机轨与 Vcc 电压监测”RSSI 电压监测接在RSSI_INPB0板上还定义了硬件版本识别脚PC3 HW_REV_SENS、PC2 HW_VER_SENS以及加热片控制PA7 HEATER_EN GPIO(80)。默认电压分压系数 18.182、电流转换系数 36.364 是针对“supplied power brick”出厂配套电源砖的标定源码注释保留了旧版 PixHackV5 电源砖 18.0/24.0 的被替换值。这印证了 README 的提示更换电源砖后需要重新计算BATT_VOLT_SCAL/BATT_AMP_SCAL一类参数。7. 罗盘内置 IST8310 与外部罗盘的配合README 提示JFB-100 内置 IST8310 罗盘但由于潜在干扰问题实际使用通常搭配 GPS/罗盘组合中的外部 I2C 罗盘。hwdef.dat 中对应配置# probe external I2C compasses plus some internal IST8310 define AP_COMPASS_PROBING_ENABLED 1 define AP_COMPASS_IST8310_EXTERNAL_BUS_PROBING_ENABLED 0 define AP_COMPASS_IST8310_INTERNAL_BUS_PROBING_ENABLED 0 COMPASS IST8310 I2C:ALL_EXTERNAL:0x0E true ROTATION_ROLL_180_YAW_90 COMPASS IST8310 I2C:ALL_INTERNAL:0x0E false ROTATION_YAW_270从源码结构看探测probing机制全局开启因此接在外部 I2C 总线上的各种罗盘芯片含 GPS 组合里的 IST8310地址 0x0E会被自动发现且内置 IST8310 也以固定旋转ROTATION_YAW_270声明在内部总线上。这为“内置罗盘作备份、外部罗盘作主用”的常见部署提供了软件支持。8. I2C 总线与 CAN 总线8.1 I2C 总线编号README 给出的 I2C 编号映射内部 I2C 口ArduPilot bus 0硬件 I2C3标注 I2CA 的口ArduPilot bus 3硬件 I2C4标注 I2CB 的口ArduPilot bus 2硬件 I2C2标注 GPS 的口ArduPilot bus 1硬件 I2C1hwdef.dat 中的总线排序决定了该映射I2C_ORDER I2C3 I2C1 I2C2 I2C4即 I2C3 排第一位成为 bus 0I2C1GPS 口为 bus 1I2C2I2CB为 bus 2I2C4I2CA为 bus 3。四条总线的物理引脚分别为 PB8/PB9I2C1、PF1/PF0I2C2、PH7/PH8I2C3、PF14/PF15I2C4。配置COMPASS_BUS、GPS_BUS等参数时应使用 ArduPilot 编号0~3而非硬件编号。8.2 CAN 总线README 说明 JFB-100 有两路独立 CAN 总线。hwdef.dat 中的引脚与静音silent控制脚# CAN bus PI9 CAN1_RX CAN1 PH13 CAN1_TX CAN1 PB12 CAN2_RX CAN2 PB13 CAN2_TX CAN2 PH2 GPIO_CAN1_SILENT OUTPUT PUSHPULL SPEED_LOW LOW GPIO(70) PH3 GPIO_CAN2_SILENT OUTPUT PUSHPULL SPEED_LOW LOW GPIO(71) PH4 GPIO_CAN3_SILENT OUTPUT PUSHPULL SPEED_LOW LOW GPIO(72)三路 GPIO 静音脚CAN1/CAN2/CAN3用于在总线空闲时将收发器置于高阻态便于总线检测与故障定位。9. 模拟输入ADC总表README 列出 7 路模拟输入结合 hwdef.dat 的完整 ADC 表如下ADC Pin0 - 电池电压PA0 BATT_VOLTAGE_SENSADC Pin1 - 电池电流传感器PA1 BATT_CURRENT_SENSADC Pin2 - 电池电压 2PA2 BATT2_VOLTAGE_SENSADC Pin3 - 电池电流传感器 2PA3 BATT2_CURRENT_SENSADC Pin4 - ADC 口 pin 2PC4 SPARE1_ADC1ADC Pin14 - ADC 口 pin 3PA4 SPARE2_ADC1ADC Pin10 - ADC 5V 监测PC0 VDD_5V_SENSADC Pin11 - ADC 3.3V 监测PC1 SCALED_V3V3ADC Pin103 - RSSI 电压监测PB0 RSSI_IN其中前四路服务两个电源监测端口其余为板载 5V/3.3V 供电轨监测、RSSI 与两路用户 ADC。注意 README 的编号体系中“Pin103”属于 RSSIGPIO/引脚命名空间而 0~14 属于 ADC 通道命名空间二者不要混淆。10. 调试SWD与固件加载10.1 SWD 调试README 说明 JFB-100 支持在 debug 口进行 SWD 调试。hwdef.dat 中的定义# these are the pins for SWD debugging with a STlinkv2 or black-magic probe PA13 JTMS-SWDIO SWD PA14 JTCK-SWCLK SWD即标准 SWDIOPA13/SWCLKPA14可直接接 STlinkv2 或 Black Magic Probe。10.2 预装 Bootloader 与 .apj 固件README 指出该板出厂预装 ArduPilot 兼容 bootloader可用任意 ArduPilot 兼容地面站刷入*.apj固件。对应的硬件定义见 hwdef-bl.datAPJ_BOARD_ID AP_HW_JFB100 FLASH_SIZE_KB 2048 # bootloader is installed at zero offset FLASH_RESERVE_START_KB 0 # the location where the bootloader will put the firmware FLASH_BOOTLOADER_LOAD_KB 32bootloader 从 Flash 0 偏移开始存放应用固件被放置在 32 KB 偏移处而正式固件hwdef.dat中FLASH_RESERVE_START_KB 32表示应用固件区从 32 KB 开始、保留前 32 KB 给 bootloader两处定义严格互补。bootloader 阶段只启用 USBOTG1、USART2Telem1和 UART7debug三条串口SERIAL_ORDER OTG1 USART2 UART7因此通过 USB 或 Telem1 口均可完成刷写。板级 ID 注册在 Tools/AP_Bootloader/board_types.txt 中AP_HW_JFB100对应数值 1084该 ID 会被编译进固件头供 bootloader 校验。11. 构建与使用前提JFB-100 作为 ChibiOS 目标板参与 ArduPilot 构建。从 Tools/ardupilotwaf/chibios.py 的构建逻辑看正式固件构建时generate_hwdef_h()会以libraries/AP_HAL_ChibiOS/hwdef/JFB100/hwdef.dat作为输入调用hwdef/scripts/chibios_hwdef.py生成hwdef.h构建 bootloaderAP_Bootloader时会把输入替换为同目录下的hwdef-bl.dat。因此在仓库根目录下使用标准 waf 流程并指定--board JFB100即可生成该板的 ArduCopter/ArduPlane 等固件具体车型子命令遵循 ArduPilot 常规构建方式如waf copter、waf plane。适用前提与限制该目标板基于 STM32F7 系列、2 MB Flash 构建工具链与依赖需满足 ArduPilot ChibiOS 构建的一般要求defaults.parm中的SERIAL5_PROTOCOL23RCIN意味着该板默认把 RC 串口占用为遥控输入改变用途时需显式修改串口参数更换电源砖后第 6 节所述的电池分压/电流系数需要按新硬件重新标定DShot 受“同组同频率”的定时器分组约束规划电调输出时需遵守第 4 节的分组规则。12. 小结JFB-100 在 ArduPilot 中的完整硬件画像由四个文件构成README 描述面向用户的功能与接线约定hwdef.dat定义引脚、定时器、总线与传感器实例hwdef-bl.dat定义 bootloader 布局defaults.parm提供板级默认串口参数。理解SERIAL_ORDER、I2C_ORDER这类排序行与PWM(n)/GPIO(m)双标识是正确配置该板的关键ArduPilot 用户参数中出现的串口号、I2C 总线号、PIN 编号都可以在 libraries/AP_HAL_ChibiOS/hwdef/JFB100/hwdef.dat 中找到其物理引脚出处。【免费下载链接】ardupilotArduPlane, ArduCopter, ArduRover, ArduSub source项目地址: https://gitcode.com/GitHub_Trending/ar/ardupilot创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Vitest Test Projects 完全指南:用 projects 配置管理 Monorepo 与多环境测试 2026/9/14 10:23:27

Vitest Test Projects 完全指南:用 projects 配置管理 Monorepo 与多环境测试

Vitest Test Projects 完全指南:用 projects 配置管理 Monorepo 与多环境测试 【免费下载链接】vitest Next generation testing framework powered by Vite. 项目地址: https://gitcode.com/GitHub_Trending/vi/vitest Vitest 的 Test Projects(…

阅读更多 →
MCP Toolbox for Databases 实战:cloud-sql-postgres-create-instance 工具通过预设一键创建 Cloud SQL PostgreSQL 实例 2026/9/14 10:23:27

MCP Toolbox for Databases 实战:cloud-sql-postgres-create-instance 工具通过预设一键创建 Cloud SQL PostgreSQL 实例

MCP Toolbox for Databases 实战:cloud-sql-postgres-create-instance 工具通过预设一键创建 Cloud SQL PostgreSQL 实例 【免费下载链接】mcp-toolbox MCP Toolbox for Databases is an open source MCP server for databases. 项目地址: https://gitcode.com/GitHub_Trendi…

阅读更多 →
@coze-project-ide/core 插件化 IDE 内核解析:Coze Studio 前端架构核心指南 2026/9/14 10:23:27

@coze-project-ide/core 插件化 IDE 内核解析:Coze Studio 前端架构核心指南

coze-project-ide/core 插件化 IDE 内核解析:Coze Studio 前端架构核心指南 【免费下载链接】coze-studio An AI agent development platform with all-in-one visual tools, simplifying agent creation, debugging, and deployment like never before. Coze your …

阅读更多 →
Bend 报 Failed to launch kernels (error code invalid argument) 错误怎么排查? 2026/9/14 10:23:27

Bend 报 Failed to launch kernels (error code invalid argument) 错误怎么排查?

Bend 报 Failed to launch kernels (error code invalid argument) 错误怎么排查? 【免费下载链接】Bend A massively parallel, high-level programming language 项目地址: https://gitcode.com/GitHub_Trending/be/Bend 在 Bend 中用 CUDA 解释器把程序跑…

阅读更多 →
手搓教程:AI时代不可替代的教学设计力 2026/9/14 10:23:27

手搓教程:AI时代不可替代的教学设计力

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
Keep 告警降噪指南:如何把一堆重复告警压成一个事件 2026/9/14 10:20:27

Keep 告警降噪指南:如何把一堆重复告警压成一个事件

Keep 告警降噪指南:如何把一堆重复告警压成一个事件 【免费下载链接】keep The open-source AIOps and alert management platform 项目地址: https://gitcode.com/GitHub_Trending/kee/keep 凌晨两点,手机第 17 次弹出同一个 "Pod restart" 告警,手头的四个监…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞