RIOT 板卡支持解析Microchip SAM R34 Xplained ProSAMR34J18 LoRa SiP评估板【免费下载链接】RIOTRIOT - The friendly OS for IoT项目地址: https://gitcode.com/GitHub_Trending/riot/RIOT本篇技术指南以 RIOT 仓库中samr34-xpro板卡支持包为主线讲解 Microchip SAM R34 Xplained Pro 评估板的硬件构成、MCU 与外设规格并结合板级源码逐项剖析其 LoRa 射频接线、外设时钟/串口/SPI/I2C/ADC/USB 配置、LED 与按键的 SAUL 注册以及片外 NOR Flash 与 littlefs2 文件系统的挂载方式。读完本文你将掌握如何在 RIOT 中为该板卡启用网络、传感器与存储功能并能读懂一块 SAM0 系 LoRa 板卡的完整移植与配置脉络。概述一颗芯片内封装的 LoRa 节点SAMR34 Xplained Pro是 Microchip 出品的一款紧凑型评估板核心是一颗SAMR34J18 SoC。这颗 SoC 将SAML21 ARM Cortex-M0 微控制器与Semtech SX1276 868/915 MHz LoRa 兼容射频封装在同一个 SiPSystem-in-Package中是典型的低功耗 Sub-GHz 无线节点方案。在编程资源上MCU 提供40 KB RAM其中 32 KiB 主 RAM 8 KiB 电池备份 RAM与256 KB Flash足以承载 RIOT 内核、网络协议栈与 LoRa 驱动。该板卡对应的板级支持目录为 boards/samr34-xpro其官方描述与板卡命名规范定义见 boards/samr34-xpro/doc.md。硬件评估板与 WLR089 模块的兼容关系除SAMR34 Xplained Pro本体外Microchip 还推出了面向已通过无线电认证的 WLR089 模块的WLR089 Xplained Pro评估板。两块板在 RIOT 中共用同一套samr34-xpro板卡支持也就是说在编译时指定BOARDsamr34-xpro即可同时覆盖这两种硬件形态。WLR089 模块本身是 LoRa SiP 的模块化封装便于直接集成进最终产品。板卡的关键特征可归纳为板上集成 Semtech SX1276 收发器工作于 868/915 MHz Sub-GHz 频段射频前端带 32 MHz TCXO温度补偿晶振由 GPIO 单独供电控制板载一颗 AT25DF041B SPI NOR Flash4 Mbit用于数据存储或文件系统通过板载 EDBG 调试器提供虚拟串口与编程下载能力。MCU 规格一览下表完整摘录自板卡文档描述了 SAMR34J18B 的核心规格参数规格MCUSAMR34J18B内核家族ARM Cortex-M0厂商Atmel现属 MicrochipRAM32 KiB 8 KiB 电池备份 RAMFlash256 KiB主频最高 48 MHzFPU无定时器6 个3x TC支持 8/16/32 位3x TCC16 位ADC1 个 12 位8 通道UART最多 5 个与 SPI、I2C 复用引脚SPI最多 5 个引脚与 UART 复用I2C最多 5 个引脚与 UART 复用工作电压1.8V – 3.6V该表与源码一致CPU saml21、CPU_MODEL samr34j18b见 boards/samr34-xpro/Makefile.features对应 SoC 层实现在 cpu/saml21在 Kconfig 侧boards/samr34-xpro/Kconfig 通过config BOARD_SAMR34_XPRO勾选CPU_MODEL_SAMR34J18B保证make menuconfig配置流程与 Makefile 体系保持一致。RIOT 板卡支持结构feature 与依赖声明RIOT 的板卡支持遵循“Makefile 声明能力 源码提供实现”的约定。samr34-xpro的 feature 声明boards/samr34-xpro/Makefile.features列出了板卡对外提供的外设与功能CPU saml21 CPU_MODEL samr34j18b FEATURES_PROVIDED periph_adc FEATURES_PROVIDED periph_i2c FEATURES_PROVIDED periph_rtc FEATURES_PROVIDED periph_rtt FEATURES_PROVIDED periph_spi FEATURES_PROVIDED periph_timer FEATURES_PROVIDED periph_uart FEATURES_PROVIDED periph_usbdev FEATURES_PROVIDED netif FEATURES_PROVIDED riotboot FEATURES_PROVIDED tinyusb_deviceperiph_*系列表示 RIOT 外设驱动抽象periph API在该板上可用netif表示存在网络接口抽象由 SX1276 的 netdev 驱动提供riotboot表示支持 RIOT 的引导加载器方案便于远程固件升级tinyusb_device表示可启用 TinyUSB 设备栈USB CDC/DFU 等。依赖注入则集中在 boards/samr34-xpro/Makefile.dep一旦应用使用netdev_defaultRIOT 的默认网络模块集合板卡自动把sx1276驱动纳入编译使用saul_default时自动引入saul_gpioLED/按键的传感器抽象注册使用mtd时引入mtd_spi_nor片外 NOR Flash 驱动使用vfs_default时引入littlefs2与mtd即默认启用板载 Flash 上的文件系统。外设配置源码解析periph_conf.h板级外设的具体引脚、时钟与通道映射全部定义在 boards/samr34-xpro/include/periph_conf.h 中下面逐项展开。时钟与电源CLOCK_CORECLOCK定义为MHZ(48)即系统主频 48 MHzGCLK 参考速度USE_VREG_BUCK置 1启用片内 DC/DC 降压转换器——该板已焊接所需电感可显著降低运行功耗。定时器Timer板卡将 TC0、TC2 配置为两个 32 位定时器通道组供 RIOTperiph_timer使用每组 2 个通道中断分别映射到isr_tc0、isr_tc2。这与文档所述“3x TC8/16/32 位”的硬件能力一致板级按需暴露其中的两个。UART板卡声明了两个串口实例实例SERCOM引脚用途UART_0SERCOM0TXPA4, RXPA5EDBG 虚拟串口默认控制台UART_1SERCOM3TXPA16, RXPA17EXT1 扩展口两个实例均支持硬件流控模块periph_uart_hw_fc未接线时置为GPIO_UNDEF。注意 PA16/PA17 同时被 I2CSERCOM1复用这正是文档中“UART/SPI/I2C 引脚复用”的体现使用时需避免冲突。SPI板卡提供两路 SPISPI_DEV(0)SERCOM4内部专用直连 SX1276 LoRa 收发器MISOPC19、MOSIPB30、SCKPC18MUX 为 FSPI_DEV(1)SERCOM5EXT1/EXT3 扩展口与板载 NOR Flash 共用MISOPB2、MOSIPB22、SCKPB23。其中 SPI_DEV(0) 在使能 DMA 时启用 SERCOM4 的 DMAC 收发触发可减轻 CPU 负载SPI_DEV(1) 的 DMA 触发被显式禁用。I2CI2C 使用 SERCOM1SCLPA17、SDAPA16速率为I2C_SPEED_NORMAL100 kbit/sMUX 为 C。该总线可供 EXT1 扩展口上的传感器使用。RTC / RTTRTC 配置为使用外部 32.768 kHz 晶振EXTERNAL_OSC32_SOURCE1保证低功耗下时间基准的精度RTT实时定时器频率为 32768 HzRTT_FREQUENCY与 RTC 共用同一时基。ADCADC 使用默认 256 分频ADC_PRESCALER、内部参考电压INTVCC22 倍内部 VCC 参考并暴露两个输入通道PA06 与 PA07对应板载 A1/A2 位置可接电位器等模拟信号。这与文档“1x 12 位 ADC”的规格吻合。USBUSB 设备控制器通过 PA24DM、PA25DP引出MUX 为 GGCLK 使用 48 MHz 时钟源。结合 feature 中的tinyusb_device可构建 USB CDC虚拟串口、USB DFU固件升级等应用。LoRa 射频SX1276 的板级接线与初始化SX1276 的板级参数集中在 boards/samr34-xpro/include/board.h与 drivers/sx127x 驱动的参数结构严格对应#define SX127X_PARAM_SPI SPI_DEV(0) /** internal SPI */ #define SX127X_PARAM_SPI_NSS GPIO_PIN(1, 31) /** D10 */ #define SX127X_PARAM_RESET GPIO_PIN(1, 15) /** A0 */ #define SX127X_PARAM_DIO0 GPIO_PIN(1, 16) /** D2 */ #define SX127X_PARAM_DIO1 GPIO_PIN(0, 11) /** D3 */ #define SX127X_PARAM_DIO2 GPIO_PIN(0, 12) /** D4 */ #define SX127X_PARAM_DIO3 GPIO_PIN(1, 17) /** D5 */ #define SX127X_PARAM_PASELECT SX127X_PA_RFO /** no boost */NSS、RESET、DIO0–DIO3 分别接至 Arduino 兼容排针的 D10/A0/D2–D5方便对照丝印PASELECT选择SX127X_PA_RFO不使用 PA_BOOST 高功率路径对应低功耗 RFO 输出另有TCXO_PWR_PINPA9用于为射频 32 MHz TCXO 供电TX_OUTPUT_SEL_PINPA13用于频段选择BAND_SEL。这两路控制脚的初始化实现在 boards/samr34-xpro/board.c 的board_init()中使能 TCXO 供电并将 BAND_SEL 写成与SX127X_PARAM_PASELECT相反的电平以匹配射频前端选型。也就是说只要编译进sx1276模块板卡上电初始化阶段就会自动完成 LoRa 射频的板级供电与选频配置。LED、按键与 SAUL 注册板载资源在 boards/samr34-xpro/include/board.h 中定义资源引脚说明LED0PA18绿色 LED低电平点亮LED1PA19橙色 LED低电平点亮BTN0PA28SW0 按键上拉输入GPIO_IN_PULED 通过 PORT 寄存器组的 OUTCLR/OUTSET/OUTTGL 直接操作提供LED0_ON/OFF/TOGGLE、LED1_ON/OFF/TOGGLE宏。在使能saul_default时boards/samr34-xpro/include/gpio_params.h 会把LED(green)、LED(orange)与Button(SW0)注册为 SAUL 设备LED 带SAUL_GPIO_INVERTED | SAUL_GPIO_INIT_CLEAR标志从而可以通过 SAUL 命令行接口或 CoAP 传感器接口直接读写这些 GPIO。片外 NOR Flash 与文件系统板载 AT25DF041B4 Mbit SPI NOR Flash的驱动配置同样位于 boards/samr34-xpro/board.c挂在SPI_DEV(1)SERCOM5上片选 CSPA22SPI 模式 0时钟 16 MHz页大小 256 字节、每扇区 16 页支持 4K/32K/64K 扇区擦除SPI_NOR_F_SECT_4K | SPI_NOR_F_SECT_32K | SPI_NOR_F_SECT_64K擦除等待时间参数按数据手册填写通过MTD_XFA_ADD(_nor_dev, 0)注册为 RIOT MTD内存技术设备0 号设备即MTD_0若应用启用了vfs_default还会通过VFS_AUTO_MOUNT(littlefs2, VFS_MTD(_nor_dev), ...)自动把littlefs2 文件系统挂载为默认 NVM 存储——这意味着日志、配置或用户数据可以直接以文件方式读写无需额外初始化代码。编译与使用要点在任意 RIOT 应用目录下指定该板卡即可交叉编译make BOARDsamr34-xpro # 编译 make BOARDsamr34-xpro flash # 通过板载调试器烧写 make BOARDsamr34-xpro term # 打开串口终端虚拟串口结合上文依赖链不同应用场景会自动带上对应模块LoRa 网络应用使用netdev_default即自动包含sx1276驱动可配合gnrc_netif等网络层使用传感器/执行器应用使用saul_default即自动注册板上 LED 与按键存储应用使用mtd/vfs_default即自动启用 NOR Flash 与 littlefs2 文件系统USB 应用利用tinyusb_device实现 CDC/DFU 等功能。若需在菜单式配置界面中确认或调整模块可运行make BOARDsamr34-xpro menuconfig此时 Kconfig 中BOARD_SAMR34_XPRO会正确选择CPU_MODEL_SAMR34J18B及对应外设选项。小结samr34-xpro是 RIOT 中一条完整、自洽的 LoRa 板卡支持示例从 Makefile 的 feature/依赖声明到periph_conf.h的外设映射再到board.c中的射频供电与 NOR Flash 注册每一层都能在源码中找到明确对应。理解这块板卡的配置方式也就掌握了 SAM0 系saml21/samd21 等板卡与 LoRa SiP 集成的通用套路可以直接参考 boards/samr34-xpro 目录中的文件结构移植到自定义硬件。【免费下载链接】RIOTRIOT - The friendly OS for IoT项目地址: https://gitcode.com/GitHub_Trending/riot/RIOT创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考