ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Zephyr 中 Ezurio BL652 DVK 开发板支持详解:硬件资源、引脚映射、烧录调试与外设验证实践

2026/9/17 6:06:32 拓冰建站 浏览量
Zephyr 中 Ezurio BL652 DVK 开发板支持详解:硬件资源、引脚映射、烧录调试与外设验证实践 Zephyr 中 Ezurio BL652 DVK 开发板支持详解硬件资源、引脚映射、烧录调试与外设验证实践【免费下载链接】zephyrPrimary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures.项目地址: https://gitcode.com/GitHub_Trending/ze/zephyr本篇围绕 Zephyr 官方板级文档 bl652_dvk.rst 展开系统讲解 Ezurio BL652 DVK 开发板Nordic nRF52832 内核在 Zephyr 中的完整支持现状从板卡硬件资源、Arduino 排针引脚映射到设备树DTS中各外设的使能与分区布局、默认内核配置再到烧录调试流程与 LED/按键/蓝牙外设验证示例帮助读者快速上手该开发板的 Zephyr 开发。一、开发板概述BL652 Development KitBL652 DVK是 Zephyr 内置支持的开发板板载 Ezurio BL652 无线模块核心为Nordic Semiconductor nRF52832ARM Cortex-M4F带 FPUSoC是一款面向 Bluetooth 5 低功耗应用的评估板。板卡在 Zephyr 中的注册标识为bl652_dvk厂商为ezurio完整板卡元信息定义在 board.ymlboard: name: bl652_dvk full_name: BL652 DVK vendor: ezurio socs: - name: nrf52832该开发板提供的硬件能力包括摘自官方板卡文档ADC模数转换器CLOCK时钟系统FLASH片上闪存GPIO通用输入输出I2CMPU内存保护单元NVIC嵌套向量中断控制器PWM脉宽调制RADIOBluetooth Low Energy 射频RTCnRF RTC 系统时钟Segger RTTRTT 控制台SPIUARTWDT看门狗定时器板卡文档中列出的 BL652 DVK 订货料号为DVK-BL652-SA与DVK-BL652-SC。DVK-BL652-SA 的包装内容如下在 bl652_dvk.yaml 中Zephyr 为该板登记的资源规格为64 KiB RAM、512 KiB Flash支持工具链为zephyr与gnuarmembGCC arm-none-eabi并在supported字段中声明了当前版本可直接使用的外设特性adc、nvs、i2c、pwm、spi、watchdog。二、SoC 选型与板级 KconfigBL652 模块虽然由 Ezurio 定义但硬件核心是 Nordic nRF52832。这一点从源码结构看非常明确bl652_dvk.dts 直接包含 Nordic 官方 SoC 设备树片段#include nordic/nrf52832_qfaa.dtsi而 Kconfig.bl652_dvk 中板级 Kconfig 选项通过select SOC_NRF52832_QFAA显式选择了 QFAA 封装256 KiB Flash / 128 KiB RAM 版本注意板卡 yaml 登记的 flash: 512 指的是 DVK 板上可用的整体闪存规划应用分区布局以设备树 partition 定义为准config BOARD_BL652_DVK select SOC_NRF52832_QFAA由于 nRF52832 的 SoC 设备树中power40000000、clock40000000、bprot40000000等节点存在唯一地址冲突pre_dt_board.cmake 在设备树预处理前追加了 DTC 编译参数-Wno-unique_unit_address_if_enabled来抑制相应告警——这是该板独有的构建细节。三、连接与 IOLED、按键与复位官方文档给出的板上可交互硬件资源及引脚如下LEDLED颜色引脚LED1蓝色P0.17LED2蓝色P0.19按键按键编号引脚/功能BUTTON1SW1P0.11BUTTON2SW2P0.15ResetSW3boot/reset上述映射与设备树完全一致。在 bl652_dvk.dts 中两个 LED 使用gpio-leds绑定、两个按键使用gpio-keys绑定leds { compatible gpio-leds; led1: led_1 { gpios gpio0 17 GPIO_ACTIVE_HIGH; label Blue LED 1; }; led2: led_2 { gpios gpio0 19 GPIO_ACTIVE_HIGH; label Blue LED 2; }; }; buttons { compatible gpio-keys; button1: button_1 { gpios gpio0 11 GPIO_PULL_UP; label Push button switch 1; zephyr,code INPUT_KEY_0; }; button2: button_2 { gpios gpio0 15 GPIO_PULL_UP; label Push button switch 2; zephyr,code INPUT_KEY_1; }; };可以看到按键配置了上拉GPIO_PULL_UP并分别映射为标准输入事件码INPUT_KEY_0/INPUT_KEY_1可直接被 Zephyr 的 input 子系统消费。此外设备树提供了一组面向示例的别名bl652_dvk.dts保证blinky、button等通用示例无需修改即可工作aliases { led0 led1; led1 led2; sw0 button1; sw1 button2; mcuboot-button0 button1; mcuboot-led0 led1; watchdog0 wdt0; bbram0 extrtc0; };四、Arduino 排针引脚映射BL652 DVK 提供 Arduino 兼容排针J30/J15/J22/J23/J31/J32/J33下表完整继承自官方文档可直接用于外接传感器与扩展模块。J33/J23 电源PIN #信号名nRF52832 功能1NCN/A2IOREF (3v3)N/A3RESETP0.21 / RESET43v3N/A55VN/A6GNDN/A7GNDN/A8VIN (12V)N/AJ31/J16 模拟输入PIN #信号名nRF52832 功能1A0P0.03 / AIN12A1P0.04 / AIN23A2P0.28 / AIN44A3P0.29 / AIN55A4P0.30 / AIN66A5P0.31 / AIN7J30/J15 数字 IOPIN #信号名nRF52832 功能1D0 (RX)P0.112D1 (TX)P0.123D2P0.134D3P0.14 / TRACEDATA[3]5D4P0.15 / TRACEDATA[2]6D5P0.16 / TRACEDATA[1]7D6P0.178D7P0.18 / TRACEDATA[3] / SWOJ32/J22 数字 IOPIN #信号名nRF52832 功能1D8P0.192D9P0.20 / TRACECLK3D10 (SS)P0.224D11 (MOSI)P0.235D12 (MISO)P0.246D13 (SCK)P0.257GNDN/A8AREFP0.02 / AIN09SDAP0.2610SCLP0.27从源码结构看这些排针引脚与 DTS 中已使能的控制器一一对应D9(SDA)/S10(SCL) 即 I2C0 的 P0.26/P0.27D10~D13 对应 SPI0 的 CS/MOSI/MISO/SCKA0~A5 覆盖 ADC 的 AIN1/AIN2/AIN4~AIN7 通道。五、设备树深度解析外设使能、总线拓扑与闪存分区5.1 系统级配置chosen 与全局参数bl652_dvk.dts 的chosen节点将控制台、Shell、MCUmgr 与蓝牙 Monitor/C2H 全部统一挂到uart0chosen { zephyr,console uart0; zephyr,shell-uart uart0; zephyr,uart-mcumgr uart0; zephyr,bt-mon-uart uart0; zephyr,bt-c2h-uart uart0; zephyr,sram sram0; zephyr,flash flash0; zephyr,code-partition slot0_partition; };其他系统级配置电源模式reg { regulator-initial-mode NRF5X_REG_MODE_DCDC; };将 SoC 调压器初始模式设为 DCDC而非 LDO降低功耗32 kHz 时钟源lfclk { k32src rc; k32src-accuracy-ppm 500; };表明板卡未焊接 32.768 kHz 晶振使用内部 RC 振荡器精度 500 ppm作为 LFCLK 时钟源——这与 defconfig 中的CONFIG_CLOCK_CONTROL_NRF_K32SRC_RCy相互印证对 BLE 广播场景是需要注意的功耗/精度权衡NRESET 引脚复用uicr { gpio-as-nreset; };将 NRESET 引脚开放为普通 GPIO 使用同时使能了gpiote、gpio0、adc。5.2 UART0115200 波特率的统一串口uart0 { status okay; compatible nordic,nrf-uart; current-speed 115200; pinctrl-0 uart0_default; pinctrl-1 uart0_sleep; pinctrl-names default, sleep; };默认波特率 115200 与文档中minicom -b 115200的监听参数一致且为控制台、Shell、MCUmgr、蓝牙 HCI monitor 共用。5.3 I2C0外挂实时时钟与未焊接的DACi2c0 { compatible nordic,nrf-twi; status okay; dac0: mcp472560 { /* MCP4725 not populated at factory */ compatible microchip,mcp4725; reg 0x60; #io-channel-cells 1; status disabled; }; extrtc0: mcp7940n6f { compatible microchip,mcp7940n; reg 0x6f; status okay; }; };设备树在此注册了两个 I2C 从设备MCP7940N 外部 RTC地址 0x6f状态为okay并通过别名bbram0 extrtc0;暴露为板级 BBRAM 设备应用可通过 Zephyr 的 RTC 驱动直接读写MCP4725 DAC地址 0x60注释明确“出厂未焊接not populated at factory”故status disabled。Kconfig.defconfig 中还留有配套逻辑仅在配置了CONFIG_DAC时才默认打开CONFIG_I2C。5.4 SPI0 与 SPI1注意互斥关系spi0 { compatible nordic,nrf-spi; /* Cannot be used together with i2c0. */ /* status okay; */ cs-gpios gpio0 22 GPIO_ACTIVE_LOW; ... }; spi1 { compatible nordic,nrf-spi; status okay; cs-gpios gpio0 12 GPIO_ACTIVE_LOW; ... };设备树注释直接指出SPI0 与 I2C0 引脚互斥二者不能同时使能因此spi0默认被注释禁用默认开启的是spi1CS 为 P0.12。若需在 P0.22~P0.25 上跑 SPI0必须先禁用 i2c0 及其上的 MCP7940N。5.5 PWM0pwm0默认status okay输出脚绑定见 5.7 节引脚定义PWM_OUT0 → P0.17可配合blinky_pwm等示例验证。5.6 闪存分区布局MCUboot 双镜像bl652_dvk.dts 在flash0下定义了标准 MCUboot 双槽分区布局这也是chosen中zephyr,code-partition slot0_partition;指向 image-0 的原因分区标签起始地址大小boot_partitionmcuboot0x000000000xC00048 KiBslot0_partitionimage-00x0000C0000x32000200 KiBslot1_partitionimage-10x0003E0000x32000200 KiBscratch_partitionimage-scratch0x000700000xA00040 KiBstorage_partitionstorage0x0007A0000x600024 KiB五个分区合计 0x80000512 KiB与 bl652_dvk.yaml 登记的flash: 512一致storage分区即 yaml 中声明的nvs特性所依赖的存储区域。5.7 引脚定义pinctrl所有外设引脚在 bl652_dvk-pinctrl.dtsi 中按default/sleep两组定义sleep组额外带low-power-enable;休眠时引脚进入低阻态以省电外设引脚选择PSEL引脚UART0TX / RX / RTS / CTSP0.06 / P0.08 / P0.05 / P0.07I2C0 (TWIM)SDA / SCLP0.26 / P0.27PWM0PWM_OUT0P0.17SPI0 (SPIM)SCK / MOSI / MISOP0.25 / P0.23 / P0.24SPI1 (SPIM)SCK / MOSI / MISOP0.16 / P0.20 / P0.14值得注意的是 UART 的 TX 落在 P0.06这与 Arduino 排针的 D1(TX)P0.12 不同说明板上的 USB 转串口桥接芯片走的是专用调试通道而非直接复用排针 D0/D1。六、默认内核配置defconfigbl652_dvk_defconfig 是该板出厂默认开启的内核特性逐项对应文档中列出的硬件能力# Enable MPU CONFIG_ARM_MPUy # Enable RTT CONFIG_USE_SEGGER_RTTy # enable GPIO CONFIG_GPIOy # enable uart driver CONFIG_SERIALy # enable console CONFIG_CONSOLEy CONFIG_UART_CONSOLEy CONFIG_RTT_CONSOLEy # 32kHz clock source CONFIG_CLOCK_CONTROL_NRF_K32SRC_RCy CONFIG_CLOCK_CONTROL_NRF_K32SRC_500PPMy要点解读ARM MPU 默认开启启用 Cortex-M 内存保护单元为 TrustZone/安全特性如 MCUboot提供基础双控制台除 UART 控制台外默认启用 Segger RTT 控制台CONFIG_RTT_CONSOLEy可通过 J-Link 的 RTT 通道观察日志——这正是文档特性列表中 “Segger RTT (RTT Console)” 的来源K32SRC RC 500ppm与设备树lfclk的 RC 时钟源选择配套保证 BLE 栈在无上晶振条件下正常工作。七、烧录与调试7.1 支持的调试烧录器板级构建脚本 board.cmake 声明了烧录/调试器参数并复用 Zephyr 公共的 Nordic 烧录支持board_runner_args(nrfjprog --softreset) board_runner_args(jlink --devicenRF52832_xxAA --speed4000) include(${ZEPHYR_BASE}/boards/common/nrfutil.board.cmake) include(${ZEPHYR_BASE}/boards/common/nrfjprog.board.cmake) include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake)即支持nrfutil / nrfjprogNordic 工具与J-LinkSegger设备型号 nRF52832_xxAASWD 速度 4000 kHz两类运行器。官方文档要求先按 Zephyr 文档中 Nordic Segger 烧录/调试章节nordic_segger安装并配置好相应软件之后即可用标准命令构建与烧录。7.2 打开串口监听输出在烧录前先用串口终端程序监听输出。文档特别提示在 BL652 DVK 上应使用 FTDI USB 转串口通道访问 UART 控制台。以 Linux 下的 minicom 为例$ minicom -D tty_device -b 115200将tty_device替换为 BL652 DVK 实际出现的串口例如 Linux 下的/dev/ttyUSB0。波特率 115200 与设备树current-speed一致。7.3 构建并烧录 hello_world以 hello_world 示例 为例官方文档给出的构建/烧录命令等效为$ west build -b bl652_dvk samples/hello_world $ west flash调试方面文档建议参照 Zephyr 中 Nordic Segger 调试章节使用 J-Link/Segger IC 调试 Nordic 系板卡配合west debug或nrfjprog完成单步调试。八、外设功能验证示例8.1 LED 与按键验证文档推荐用两个官方示例验证板卡基础 IO 正常blinky 示例循环点亮 LED1/LED2button 示例读取 SW1/SW2 按键事件。构建并烧录后即可确认 Zephyr 在该板正确运行。LED 与按键的硬件定义即第五节所述的 bl652_dvk.dts 中的gpio-leds/gpio-keys节点这也是官方文档中直接指向该文件的原因。8.2 蓝牙BLE功能验证BL652 是 Bluetooth 5 模块许多蓝牙示例可直接运行于 BL652 DVK。文档列出的三个验证示例在当前仓库中的对应路径ble_peripheral→ BLE Peripheral 示例当前仓库示例目录为peripheralEddystone 信标示例iBeacon 示例。由于chosen已将zephyr,bt-mon-uart与zephyr,bt-c2h-uart指向 uart0HCI monitor 与 C2H 通道也天然可用便于用 PC 侧工具观察空口协议行为。九、小结Ezurio BL652 DVK 在 Zephyr 中是一块“开箱即用”的 nRF52832 开发板板级定义完整board.yml/Kconfig.bl652_dvk/bl652_dvk.dts/ 默认配置共同构成标准板级支持SoC 选型锁定nrf52832QFAA外设默认值合理UART0115200多子系统共用、I2C0含 MCP7940N RTC、SPI1、PWM0、ADC 默认使能SPI0 因与 I2C0 引脚互斥默认关闭安全与低功耗基线MPU、双 MCUboot 镜像分区共 512 KiB 闪存规划、DCDC 调压器、无晶振 RC 低速时钟均已默认就位工作流标准nrfjprog / J-Link 烧录、FTDI 串口或 RTT 观察输出blinky/button验证 IOperipheral/eddystone/ibeacon验证 BLE。后续可深入的仓库文件板卡文档 bl652_dvk.rst、设备树 bl652_dvk.dts 与 bl652_dvk-pinctrl.dtsi、默认配置 bl652_dvk_defconfig、构建脚本 board.cmake以及 Zephyr 文档目录 doc/develop 中的烧录调试与构建指南。【免费下载链接】zephyrPrimary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures.项目地址: https://gitcode.com/GitHub_Trending/ze/zephyr创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考