ARTICLE DETAIL

资讯详情

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

Zephyr 板级支持实战:基于 Apollo3 Blue 与 SX1262 的 RAK11720 WisBlock LoRa/BLE 模块

Zephyr 板级支持实战:基于 Apollo3 Blue 与 SX1262 的 RAK11720 WisBlock LoRa/BLE 模块 Zephyr 板级支持实战基于 Apollo3 Blue 与 SX1262 的 RAK11720 WisBlock LoRa/BLE 模块【免费下载链接】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 仓库中 RAK11720 板级文档 为主体结合仓库内的设备树、Kconfig 与构建脚本系统讲解 RAK11720 WisBlock Core 模块的硬件特性、Zephyr 板级支持实现以及从零构建、烧录hello_world并观察串口输出的完整流程。读完本文你将掌握该板卡的资源布局UART/SPI/I2C/GPIO/LoRa/BLE、分区规划与 J-Link 烧录要点能够在自己的 WisBlock 项目上快速落地 Zephyr 应用。模块概览RAK11720 是什么RAK11720 是 RAK WisBlock 生态中的一款 WisBlock Core 模块型号名rak11720厂商rakwireless其核心组成是Ambiq Apollo3 Blue SoCAMA3B1KK-KBR-B0超低功耗 MCU集成蓝牙 5 低功耗控制器Semtech SX1262 LoRa 收发器低功耗、远距离 LoRa 无线通信。根据 板级文档 的描述AMA3B1KK-KBR-B0 内置的 BLE 收发器增强了模块的通信能力而 RAK11720 stamp 模块与 RAK3172 模块采用相同的外形与封装footprint这意味着开发者可以基于既有 RAK3172 设计直接升级到 RAK11720 以获得 BLE 能力无需重新设计 PCB——这是该模块最具工程价值的特性之一。在使用方式上官方推荐通过WisBlock 模块化系统快速上手以 WisBlock Base 板RAK19007作为供电与编程/调试载体将RAK11722内置 RAK11720 的 WisBlock Core 模块插接到 Base 板上即可开始开发。硬件规格以下硬件要点完整摘录并整理自 板级文档Apollo3 Blue SoC最高96 MHz工作频率ARM Cortex-M4F内核每核16 KB2 路组相联/直接映射 Cache最多1 MBFlash代码/数据最多384 KB低漏电/低功耗 RAM代码/数据集成Bluetooth 5 低功耗控制器Semtech SX1262低功耗、高覆盖 LoRa 收发器用于 LoRa 天线与 BLE 天线的iPEX 连接器RAK19007 WisBlock Base 板上的2 颗用户 LED供电方式Micro USB、3.7V 可充电电池、或 5V 太阳能板端口这些参数与仓库中的板级定义完全对应rak11720.yaml 声明arch: arm、ram: 384KB、flash: 976KB并将 SoC 指向apollo3_blue。板级支持的文件构成在 Zephyr 仓库中RAK11720 的完整板级支持位于 boards/rakwireless/rak11720/由以下文件协作完成文件作用rak11720.yaml板卡元数据架构、RAM/Flash 容量、工具链、受支持外设board.yml板卡注册信息vendor、SoC 名称Kconfig.rak11720板级 Kconfig 入口选择SOC_APOLLO3_BLUEKconfig.defconfig板级默认 Kconfig系统时钟等rak11720_defconfig默认使能串口控制台rak11720.dts设备树外设实例、引脚分配、Flash 分区rak11720_apollo3-pinctrl.dtsi引脚复用pinctrl定义board.cmake烧录器runner配置Kconfig 与默认配置Kconfig.rak11720 定义板卡符号BOARD_RAK11720并select SOC_APOLLO3_BLUE将板卡与 Ambiq Apollo3 Blue SoC 绑定。Kconfig.defconfig 中给出了一个值得注意的时钟细节config SYS_CLOCK_HW_CYCLES_PER_SEC default 32768 if AMBIQ_STIMER_TIMER即当使用 Ambiq 的 STIMER 作为系统时钟源时硬件时钟周期频率为32768 Hz32.768 kHz 低速晶振这与设备树中stimer0 { clk-source 3; };的配置相呼应也体现了该平台面向低功耗场景的典型时钟设计。rak11720_defconfig 默认开启CONFIG_CONSOLEy CONFIG_UART_CONSOLEy CONFIG_SERIALy CONFIG_UART_INTERRUPT_DRIVENy这套组合保证了开箱即可通过 UART0 输出控制台信息hello_world的打印依赖于此。支持的 Zephyr 功能特性rak11720.yaml 中supported字段声明了该板卡支持的外设子系统uart串口watchdog看门狗counter计数器gpio通用 IOspi串行外设接口i2cI2C 总线loraLoRa 无线同时testing.ignore_tags包含net表明该板卡的测试矩阵不会运行网络net类测试。在工具链方面支持zephyr与gnuarmemb两种工具链。从源码结构看这些特性在设备树中均有对应实现详见下一节例如 LoRa 对应iom1下挂载的semtech,sx1262节点counter 对应多个被使能的 timer 实例。设备树深入外设资源是如何布局的rak11720.dts 是理解该板卡资源布局的关键。它通过#include ambiq/ambiq_apollo3_blue.dtsi引入 SoC 级设备树并覆盖了以下内容chosen 与别名chosen节点将 Zephyr 子系统绑定到具体外设控制台与 shell、mcumgr、uart-pipe 均指向uart0内存与 Flashzephyr,itcm tcm、zephyr,sram sram0、zephyr,flash flash0蓝牙控制器zephyr,bt-hci bt_hci_apollo指向 Apollo3 Blue 集成 BLE 控制器OTA 代码分区zephyr,code-partition slot0_partitionaliases则提供了watchdog0、led0/led1、lora0、mcuboot-led0等通用别名方便应用层与 Bootloader 引用。用户 LED两颗 LED 定义在gpio-leds节点中均位于gpio32_63控制器上且为高电平有效别名GPIO标签led0蓝gpio32_63 pin 13Blue LEDled1绿gpio32_63 pin 12Green LED这正好对应文档中提到的 RAK19007 Base 板上的 2 颗用户 LED。通信外设UART、SPI、I2CUART0current-speed 115200使用uart0_defaultpinctrl。其引脚在 rak11720_apollo3-pinctrl.dtsi 中定义为TXP39、RXP40。SPIiom0提供spi0CS 为 gpio0_31 pin1iom1提供spi1CS 为 gpio0_31 pin11初始时钟频率均为 1 MHz。I2Ciom2上挂载i2c2标准速率100 kHz。pinctrl 文件中同时定义了 i2c0~i2c5、spi0~spi5 等更完整的引脚组供扩展使用例如连接 WisBlock 传感器板。LoRa 射频Semtech SX1262LoRa 收发器作为spi1总线上的子节点出现lora0compatiblesemtech,sx1262关键配置包括reset-gpiosgpio0_31 pin 17低电平有效busy-gpiosgpio0_31 pin 16dio1-gpiosgpio0_31 pin 15antenna-enable-gpiosgpio0_31 pin 18低电平有效dio2-tx-enable启用 DIO2 作为 TX 使能dio3-tcxo-voltage SX126X_DIO3_TCXO_3V3DIO3 输出 3.3V 为外部 TCXO 供电tcxo-power-startup-delay-ms 5TCXO 上电稳定延时 5 msspi-max-frequency DT_FREQ_M(1)SPI 时钟 1 MHz以上参数对实际 LoRa 通信的射频指标与稳定性有直接影响——TCXO 供电电压与启动延时若配置不当可能导致晶振起振异常。Zephyr 的 LoRa 驱动会据此完成 SX1262 的初始化时序。定时器与计数器设备树使能了timer0、timer1、timer2、timer4~timer7共 7 个定时器实例作为 counter 使用counter0~counter6为应用提供丰富的定时/计数资源。Flash 分区布局rak11720.dts 在flash0上定义了完整的可引导分区1 MB Flash 的划分分区地址大小用途internal_bootloader0x000000000xc000 (48 KB)内部引导程序mcuboot0x0000c0000xc000 (48 KB)MCUboot 引导加载器slot0image-00x000180000x72000 (456 KB)主应用镜像slot1image-10x0008a0000x72000 (456 KB)升级镜像storage0x000fc0000x4000 (16 KB)设置/存储区位于 Flash 末尾这一布局支持MCUboot 双槽位 A/B 升级为基于 RAK11720 的 LPWAN 设备远程固件升级FOTA预留了标准化的存储结构。其中storage_partition的注释明确说明其在 1024 KB Flash 末尾保留了 16 KB。蓝牙与引脚复用bleif节点被使能对应 Apollo3 Blue 的 BLE 接口控制器其引脚SCKP30、MISOP31、MOSIP32、CSNP33、STATUSP35、IRQP41在 pinctrl 的bleif_default中定义——这是板载 BLE 射频栈与 SoC 之间的硬件通道。构建与烧录环境准备烧录依赖SEGGER J-Link 软件J-Link OB 调试器以及 Python 的pylink模块二者需提前安装在宿主机上。board.cmake 中已配置好 J-Link runner 参数board_runner_args(jlink --deviceAMA3B1KK-KBR --ifaceswd --speed1000)即使用 J-Link 通过SWD 接口、以1000 kHz速度连接目标芯片AMA3B1KK-KBR并引入boards/common/jlink.board.cmake。板级文档同时说明该板应连接 Segger Embedded DebuggerJ-Link OB它提供了对 Apollo3 Blue 芯片的调试接口。编译并烧录 hello_world文档以samples/hello_world为例演示完整流程。首先用 USB 线将设备J-Link OB 的 USB 口连接至宿主机然后执行west build -b rak11720 samples/hello_world west flash其中-b rak11720指定目标板卡west flash会调用上文中配置好的 J-Link runner 完成烧录。关于该示例应用的源码可参考 samples/hello_world/src/main.c。串口输出验证烧录完成后使用 minicom、putty 等串口终端工具连接对应串口参数为波特率115200数据位8校验None停止位1复位板卡后串口应输出Hello World! rak11720/apollo3_blue输出中的rak11720/apollo3_blue是板卡标识与 SoC 型号的组合既验证了应用已正常运行也确认了 UART 控制台链路UART0 的 P39/P40 引脚、115200 波特率配置工作正常。调试与注意事项小结烧录接口通过 J-Link OB 的 USB 口连接宿主机runner 使用 SWD 协议目标设备号AMA3B1KK-KBR。控制台默认绑定 UART0115200-8-N-1并在rak11720_defconfig中开启串口控制台应用无需额外配置即可输出日志。升级能力Flash 已按 MCUboot 双槽位布局划分zephyr,code-partition指向slot0_partition为后续引入安全固件升级留好接口。低功耗设计系统时钟在 STIMER 模式下为 32.768 kHz配合 Apollo3 Blue 的 384 KB 低功耗 RAM 与 96 MHz Cortex-M4F适合电池供电的远距离传感与 LPWAN 场景。如需深入了解该板卡的完整定义可继续阅读仓库中的 rak11720.dts、rak11720_apollo3-pinctrl.dtsi 以及 rak11720.yaml它们共同构成了 RAK11720 在 Zephyr 中的完整板级支撑。【免费下载链接】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),仅供参考
返回列表