Zephyr 移植指南:SAM R34 Xplained Pro(samr34_xpro)评估板支持与 LoRa 开发实战 📅 发布时间:2026/9/16 0:00:16 👁 浏览次数: Zephyr 移植指南SAM R34 Xplained Prosamr34_xpro评估板支持与 LoRa 开发实战【免费下载链接】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/zephyrSAM R34 Xplained Pro型号 DM320111是 Microchip 推出的一款面向低功耗 LoRa 物联网应用的原型评估套件其核心是集成 SAML21 微控制器裸片与 Semtech SX1276 LoRa 射频裸片的 SiPSystem-in-Package封装芯片 SAMR34/SAMR35。本文基于 Zephyr RTOS 仓库中 boards/atmel/sam0/samr34_xpro/doc/index.rst 的板级文档展开系统讲解该板卡在 Zephyr 中的硬件资源、默认外设映射、引脚功能、系统时钟配置、串口调试、PWM 与 SPI含内部 LoRa 无线电的使用方式以及基于 EDBG 的构建、烧录与调试完整流程。读完本文你将能够独立完成 hello_world 的运行验证并据此上手 LoRa 收发应用的开发。板卡概览与核心特性SAM R34 Xplained Pro 评估套件面向 SAM R34 Cortex-M0 处理器微控制器的评估与原型设计。套件板载 Atmel Embedded DebuggerEDBG可提供完整的调试接口而无需任何额外硬件。从硬件结构看SAMR34 与 SAMR35 均为 SiP 封装器件内部同时封装了SAML21 裸片与Semtech SX1276 LoRa 射频裸片因此单颗芯片即可完成MCU Sub-GHz 无线收发的完整链路。这一点在设备树中得到了直接印证dts/arm/atmel/samr34.dtsi 中定义了sx12760节点其compatible semtech,sx1276挂接在 SERCOM4 这个专用 SPI 总线上。主要硬件规格SAMR34J18 ARM Cortex-M0 处理器主频 48 MHz32.768 kHz 晶振256 KiB Flash、32 KiB SRAM、8 KiB 低功耗 SRAMLow Power SRAM一颗黄色用户 LEDLED0一颗机械用户按键SW0一颗复位按键板载基于 USB 的 EDBG 单元提供串口控制台板卡标识信息定义于 boards/atmel/sam0/samr34_xpro/board.yml其socs字段指明所支持的 SoC 为samr34j18b对应的 Kconfig 入口 boards/atmel/sam0/samr34_xpro/Kconfig.samr34_xpro 通过select SOC_SAMR34J18B完成 SoC 选型。SoC 侧则在 soc/atmel/sam0/samr34/soc.h 中根据CONFIG_SOC_SAMR34J18B引入对应的 CMSIS 头文件samr34j18b.h。支持的 Zephyr 功能板级文档通过.. zephyr:board-supported-hw::指令自动生成支持功能列表。结合仓库源码该板卡在设备树中启用的外设包括功能类别设备树节点说明串口UART 控制台sercom0默认 Zephyr console / shellI2Csercom1默认使能Fast 模式SPIsercom5连接 EXT1 / EXT3 扩展接口SPILoRa 专用sercom4连接内部 SX1276 射频裸片LoRa 无线电lorasx12760Semtech SX1276PWMtcc0驱动 LED0启用CONFIG_PWM_SAM0_TCC时ADCadc默认使能RTCrtc时钟计数模式USB 设备usb0别名zephyr_udc0设备控制器GPIOporta/portb/portc等3 个 GPIO 控制器从 samr34_xpro.dts 可以看到chosen节点将zephyr,console与zephyr,shell-uart均指向sercom0意味着默认串口既是打印控制台也是 shell 通道aliases中则提供了led0、pwm-led0、sw0三个别名方便上层 sample 直接引用。用户 LED 与按键的设备树描述LED 与按键在 samr34_xpro.dts 中定义如下led0gpio-leds节点gpios porta 19 GPIO_ACTIVE_LOW即PA19 低电平点亮pwm_led0pwm-leds节点pwms tcc0 3 PWM_MSEC(20)即 TCC0 的 WO3 通道输出周期 20 ms 的 PWMuser_buttongpio-keys节点gpios porta 28 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)即PA28 上拉、低电平有效并映射为INPUT_KEY_0输入事件。引脚映射SAM R34 Xplined Pro 评估板拥有 3 个 GPIO 控制器负责引脚复用pin muxing、输入/输出、上拉等操作。详细电气规格可参考 SAM R34 系列数据手册与原理图。默认 Zephyr 外设引脚映射板级文档给出了 Zephyr BSP 默认配置下的完整引脚映射表这也是开发者接线与排查问题时的第一手依据功能信号引脚SERCOM0 UARTTXPA04SERCOM0 UARTRXPA05SERCOM1 I2CSDAPA16SERCOM1 I2CSCLPA17SERCOM4 SPIMISOPC19SERCOM4 SPIMOSIPB30SERCOM4 SPISCKPC18SERCOM4 SPIGPIO CSPB31SERCOM5 SPIMISOPB02SERCOM5 SPIMOSIPB22SERCOM5 SPISCKPB23SERCOM5 SPIGPIO CS0PA23SERCOM5 SPIGPIO CS1PA14USBDPPA25USBDMPA24GPIO/PWMLED0PA19上述映射在源码中由 samr34_xpro-pinctrl.dtsi 的 pinmux 定义逐一落实例如sercom0_defaultPA4D_SERCOM0_PAD0PA5D_SERCOM0_PAD1对应 UART TX/RXsercom1_defaultPA16C_SERCOM1_PAD0PA17C_SERCOM1_PAD1对应 I2C SDA/SCLsercom5_defaultPB2D_SERCOM5_PAD0PB22D_SERCOM5_PAD2PB23D_SERCOM5_PAD3对应 SPI MISO/MOSI/SCKtcc0_defaultPA19F_TCC0_WO3对应 PWM 输出usb0_defaultPA24G_USB_DMPA25G_USB_DP。需要留意的是SPI 设备树中的dipoData In Pinout与dopoData Out Pinout组合决定了 MISO/MOSI 在 SERCOM PAD 上的排布方式若要修改 SPI 引脚必须同步调整 pinctrl 与这两个参数。系统时钟配置SAMR34 MCU 使用32.768 kHz 外部晶振XOSC32K作为时钟源配合片上 PLL 生成48 MHz 系统时钟。这一配置在板级 defconfig 中有明确体现samr34_xpro_defconfig 中同时开启CONFIG_SOC_ATMEL_SAML_XOSC32Ky CONFIG_SOC_ATMEL_SAML_XOSC32K_AS_MAINy前者启用外部 32.768 kHz 晶振后者将其作为主时钟源。设备树中cpu0的clock-frequency 48000000见 samr34_xpro.dts与实际频率保持一致。SoC 侧 soc/atmel/sam0/samr34/soc.h 定义了各时钟域频率常量其中SOC_ATMEL_SAM0_XOSC32K_FREQ_HZ 32768、SOC_ATMEL_SAM0_OSC16M_FREQ_HZ 16000000、SOC_ATMEL_SAM0_GCLK3_FREQ_HZ 24000000等可供驱动与上层代码引用。串口Serial PortSAMR34 MCU 拥有 6 个基于 SERCOM 的 USART本 BSP 将其中一个配置为 USARTSERCOM0 即默认的 Zephyr 控制台SERCOM0115200 baud8 数据位、无校验、1 停止位8n1连接到板载 Atmel Embedded DebuggerEDBG设备树配置见 samr34_xpro.dtscompatible atmel,sam0-uart、current-speed 115200并指定rxpo 1、txpo 0即 RX 使用 PAD1、TX 使用 PAD0。对应的板级 defconfig 开启串口控制台链路CONFIG_CONSOLEy CONFIG_SERIALy CONFIG_UART_CONSOLEy CONFIG_UART_INTERRUPT_DRIVENy同时CONFIG_BUILD_OUTPUT_HEXy会额外生成 hex 格式的固件镜像方便通过 EDBG 等工具烧录。PWM 输出SAMR34 MCU 拥有 3 个基于 TCC 的 PWM 单元每个最多 4 路输出周期位宽为 24 位或 16 位。若启用CONFIG_PWM_SAM0_TCC则 LED0 改由TCC0驱动而非 GPIO。对应设备树配置samr34_xpro.dtstcc0 { status okay; compatible atmel,sam0-tcc-pwm; /* Gives a maximum period of 1.4s */ prescaler 4; #pwm-cells 2; pinctrl-0 tcc0_default; pinctrl-names default; };prescaler 4与 48 MHz 主时钟配合可给出最长约 1.4 秒的 PWM 周期结合 pinctrl 中PA19F_TCC0_WO3的复用配置TCC0 的 WO3 通道输出到 PA19LED0。应用侧只需按pwm-led0别名使用 PWM API 即可实现 LED 呼吸灯等效果。SPI 端口与内部 LoRa 无线电SAMR34 MCU 拥有 6 个基于 SERCOM 的 SPI本 BSP 将其中两个配置为 SPISERCOM4连接内部 LoRa 无线电SX1276SERCOM5连接 EXT1 与 EXT3 扩展接口SERCOM4 与 SX1276SoC 级设备树 dts/arm/atmel/samr34.dtsi 对 SERCOM4 做了完整描述compatible atmel,sam0-spidipo 0、dopo 1片选cs-gpios portb 31 GPIO_ACTIVE_LOW并在其上挂载 LoRa 节点lora: sx12760 { compatible semtech,sx1276; reg 0; reset-gpios portb 15 GPIO_ACTIVE_LOW; /* nRST */ dio-gpios portb 16 ..., /* DIO0 */ porta 11 ..., /* DIO1 */ porta 12 ..., /* DIO2 */ portb 17 ..., /* DIO3 */ porta 10 ..., /* DIO4 */ portb 0 ...; /* DIO5 */ spi-max-frequency DT_FREQ_M(10); };节点完整声明了 SX1276 的复位引脚PB15与 6 根 DIO 中断线DIO0–DIO5SPI 时钟最高 10 MHz。对应的 LoRa 驱动实现位于 drivers/lora/loramac-node/sx127x.c。板级设备树 samr34_xpro.dts 进一步启用 SERCOM4 与 LoRa 节点并配置射频相关 GPIOsercom4 { status okay; }; lora { status okay; tcxo-power-gpios porta 9 GPIO_ACTIVE_HIGH; /* TCXO_PWR */ tcxo-power-startup-delay-ms 5; rfi-enable-gpios porta 13 GPIO_ACTIVE_HIGH; /* BAND_SEL */ rfo-enable-gpios porta 13 GPIO_ACTIVE_HIGH; /* BAND_SEL */ };其中 PA09 控制 TCXO 供电、PA13BAND_SEL控制射频收发通道选择TCXO 启动延迟设置为 5 ms。这意味着 Zephyr 的 LoRa 驱动drivers/lora目录下的 SX1276 相关实现可以直接接管内部无线电进行 Sub-GHz 通信。SERCOM5 外部 SPISERCOM5 配置samr34_xpro.dtssercom5 { status okay; compatible atmel,sam0-spi; dipo 0; dopo 1; #address-cells 1; #size-cells 0; pinctrl-0 sercom5_default; pinctrl-names default; };该 SPI 总线引出至 EXT1/EXT3 扩展座配合 GPIO CS0PA23、CS1PA14即可挂接外部 SPI 外设。I2C、ADC、RTC 与 USB除上述主要外设外BSP 还默认启用了以下功能I2CSERCOM1samr34_xpro.dts 中clock-frequency I2C_BITRATE_FAST400 kHz Fast 模式ADCadc直接status okayRTCcounter-mode clock、prescaler 1024并绑定osc32kctrl的时钟源samr34_xpro.dtsUSB 设备zephyr_udc0: usb0使能并配置usb0_defaultpinctrlDP/DM 位于 PA25/PA24samr34_xpro.dts。编程与调试Programming and DebuggingSAM R34 Xplained Pro 板载Atmel Embedded DebuggerEDBG为 SAMR34 芯片提供调试接口并得到 OpenOCD 支持。构建系统通过 board.cmake 引入通用的 OpenOCD 烧录/调试流程include(${ZEPHYR_BASE}/boards/common/openocd.board.cmake)配套的 OpenOCD 配置位于 support/openocd.cfg其中通过source [find interface/cmsis-dap.cfg]使用板载 CMSIS-DAP 调试器transport select swd选择 SWD 调试协议set CHIPNAME at91samr34j18、set CPUTAPID 0x0bc11477指定目标芯片与 JTAG IDreset_config trst_and_srst separate配置复位方式注册了gdb-attachattach 时复位并暂停、强制硬件断点与gdb-detachdetach 时恢复运行事件便于 GDB 调试。烧录与运行 hello_world完整操作流程如下第 1 步构建 Zephyr 内核与 hello_world 示例应用west build -b samr34_xpro samples/hello_world第 2 步连接板卡使用 USB 调试口将 SAM R34 Xplained Pro 连接到主机。第 3 步打开串口监视器在 Linux 下串口设备通常为/dev/ttyACM0参数为 115200/8/N/1。例如使用 picocom$ picocom -b 115200 /dev/ttyACM0串口参数速查波特率Speed115200数据位Data8 bits校验ParityNone停止位Stop bits1第 4 步烧录镜像west flash烧录完成后串口终端应输出Hello World! samr34_xpro构建与烧录命令的等价形式west命令本质上是 Zephyr 构建系统的封装。上述命令与以下等价操作一致以仓库根目录为 Zephyr 源码根# 仅构建等同于 west build 的 --goals build cmake -B build -DBOARDsamr34_xpro -S samples/hello_world cmake --build build # 构建并烧录等同于 west flash经 OpenOCD EDBG west build -b samr34_xpro samples/hello_world west flash烧录过程中 west 会调用 board.cmake 指定的 OpenOCD 流程借助板载 EDBG 的 CMSIS-DAP 接口完成镜像写入。开发建议与注意事项LoRa 应用开发由于 SX1276 已通过 SERCOM4 挂入设备树并启用可直接在应用层使用 Zephyr 的 LoRa APIdrivers/lora子系统开发 Sub-GHz 通信无需外部射频模块射频通道选择BAND_SEL由 PA13 控制编译与运行时请确认符合所在地区的频率法规。低功耗特性SAMR34 内置 8 KiB 低功耗 SRAM配合 XOSC32K 作为主时钟源适合电池供电的周期上报类 LoRa 节点RTC 已配置为时钟计数模式可作为低功耗唤醒的定时基准。引脚复用修改任何 SERCOM 引脚变更都需要同时修改 samr34_xpro-pinctrl.dtsi 中的 pinmux 定义以及设备树中对应的rxpo/txpoUART或dipo/dopoSPI参数二者必须匹配才能正常工作。调试方式EDBG 同时提供串口控制台与 SWD 调试能力串口SERCOM0位于 EDBG 侧调试时可通过 OpenOCD/GDB 使用 support/openocd.cfg 中定义的 attach/detach 行为进行断点调试。参考资料本文内容以 boards/atmel/sam0/samr34_xpro/doc/index.rst 为基础结合仓库内以下文件进行源码级印证板级设备树samr34_xpro.dts引脚复用定义samr34_xpro-pinctrl.dtsi板级 Kconfig 默认配置samr34_xpro_defconfigSoC 级设备树含 SX1276 节点dts/arm/atmel/samr34.dtsiSoC 时钟与头文件选择soc/atmel/sam0/samr34/soc.hOpenOCD 调试配置support/openocd.cfg板卡元数据board.yml【免费下载链接】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),仅供参考