ARTICLE DETAIL

资讯详情

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

Zephyr RTOS 开发指南:SAM R21 Xplained Pro(samr21_xpro)板卡 BSP 详解与无线传感网络实战

Zephyr RTOS 开发指南:SAM R21 Xplained Pro(samr21_xpro)板卡 BSP 详解与无线传感网络实战 Zephyr RTOS 开发指南SAM R21 Xplained Prosamr21_xpro板卡 BSP 详解与无线传感网络实战【免费下载链接】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 R21 Xplained Pro 是 Atmel现 Microchip推出的紧凑型评估板核心为集成 2.4GHz IEEE802.15.4 射频收发器 AT86RF233 的 SAMR21G18A SoC。本文基于 Zephyr 仓库中该板卡的官方 BSP 文档 boards/atmel/sam0/samr21_xpro/doc/index.rst并结合板级设备树DTS、pinctrl、defconfig 与 OpenOCD 配置等源码级证据系统讲解其硬件资源、默认外设映射、无线射频编程与烧录调试全流程帮助读者快速上手用 Zephyr 开发 IEEE802.15.4 / 6LoWPAN 无线传感节点。硬件概览SAM R21 Xplained Pro 的核心是一颗SAMR21G18A SoC它把 SAMR21 ARM Cortex-M0 微控制器与 Atmel 的AT86RF2332.4GHz IEEE802.15.4 兼容射频收发器集成在同一封装内射频部分通过片内 SPI 与 GPIO 互连行为与外部挂接的 SPI 设备完全一致。板载的Atmel Embedded DebuggerEDBG提供完整的调试接口无需额外购买调试器硬件即可完成下载与调试。在 samr21_xpro.dts 中板卡的型号被声明为model SAM R21 Xplained Procompatible samr21,xpro, atmel,samr21g18a, atmel,samr21Kconfig.samr21_xpro 中的config BOARD_SAMR21_XPRO通过select SOC_SAMR21G18A完成 SoC 绑定。核心硬件参数如下主控SAMR21G18A ARM Cortex-M0主频 48 MHz晶振32.768 kHz 外部晶振用于系统时钟与低功耗 RTC存储256 KiB 片上 Flash、32 KiB RAM指示灯1 颗黄色用户 LEDLED0按键1 颗机械用户按键SW0、1 颗复位按键调试接口板载 USB 型 EDBG同时提供串口控制台无线射频片内 AT86RF2332.4GHz IEEE802.15.4支持的硬件特性根据板卡描述文件 samr21_xpro.yamlZephyr 为 samr21_xpro 板卡声明了以下受支持的外设特性特性说明adcSAM0 系列 ADC默认映射 PA6AIN6dmaDMA 控制器flash片上 Flash含 16 KiB 尾部存储分区gpio3 个 GPIO 控制器PORTA/PORTB/PORTCi2cSERCOM1 提供 I2CnetifIEEE802.15.4 网络接口AT86RF233pwmTCC0 提供 PWMrtc32.768 kHz 驱动的 RTC 计数器spiSERCOM4射频、SERCOM5扩展头uartSERCOM0默认控制台usb_device / usbdUSB 设备zephyr_udc0xpro_gpio / xpro_i2c / xpro_serial / xpro_spiXplained Pro 标准扩展头接口其中 USB 设备节点在 samr21_xpro.dts 中通过zephyr_udc0: usb0引用启用并使用usb_dc_defaultPA24G_USB_DM / PA25G_USB_DP作为引脚组。板卡的flash: 256、ram: 32单位 KiB也在该 YAML 中登记。引脚映射与 Zephyr 外设分配板卡共提供3 个 GPIO 控制器PORTA、PORTB、PORTC负责引脚复用pin muxing、输入/输出方向、上/下拉等配置。引脚复用关系集中定义在 samr21_xpro-pinctrl.dtsi 中每一组以PAxxY_SERCOMx_PADn形式的宏指定功能复用。默认 Zephyr 外设映射板级文档给出的默认外设映射如下均可在 DTS 与 pinctrl 中找到一一对应的实现SERCOM0 USART TXPA5PA5D_SERCOM0_PAD1SERCOM0 USART RXPA4PA4D_SERCOM0_PAD0SERCOM1 I2C SDAPA16PA16C_SERCOM1_PAD0SERCOM1 I2C SCLPA17PA17C_SERCOM1_PAD1SERCOM5 SPI MISOPB02PB2D_SERCOM5_PAD0SERCOM5 SPI MOSIPB22PB22D_SERCOM5_PAD2SERCOM5 SPI SCKPB23PB23D_SERCOM5_PAD3GPIO SPI CSPB03GPIO/PWM LED0PA19默认 GPIO 驱动启用 PWM 后由 TCC0 WO3 驱动在 samr21_xpro.dts 中LED0 被声明为gpios porta 19 GPIO_ACTIVE_LOW低电平点亮按键 SW0 为gpios porta 28 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)并关联INPUT_KEY_0输入事件码aliases中把led0、pwm-led0、sw0、i2c-0暴露给上层应用因此各类 sample 无需修改即可直接引用。Xplained Pro 扩展头映射板卡设备树中还声明了ext1_header与ext2_header两个atmel-xplained-pro-header节点compatible atmel-xplained-pro-header通过gpio-map把扩展头引脚映射到 SoC GPIO同时用别名ext1_spi/ext1_i2c/ext1_serial、ext2_spi/ext2_i2c把扩展头总线绑定到 SERCOM 外设EXT1 / EXT2 共用的 SPI 总线SERCOM5MOSIPB22、MISOPB02、SCKPB23EXT1 / EXT2 共用的 I2C 总线SERCOM1SDAPA16、SCLPA17EXT1 串口SERCOM0RXDPA5、TXDPA4扩展头上还映射了 ADC 输入PA6/PA7、PWM 输出PA18/PA19 对应 TCC0 WO2/WO3以及若干 GPIO。这意味着符合 Xplained Pro 标准接口的扩展板Shield可以直接插上使用。系统时钟SAMR21 的时钟方案为以32.768 kHz 外部晶振XOSC32K为时钟源配合片上 PLL 倍频生成48 MHz 系统时钟。板级 defconfig samr21_xpro_defconfig 通过两个 Kconfig 开关落实这一方案CONFIG_SOC_ATMEL_SAMD_XOSC32Ky CONFIG_SOC_ATMEL_SAMD_XOSC32K_AS_MAINy即启用 XOSC32K 外部晶振并将其作为主时钟源。同时 samr21_xpro.dts 中为cpu0声明clock-frequency 48000000RTC 节点则配置为counter-mode clock、prescaler 1024由 32.768 kHz 晶振直接驱动保证低功耗计时场景下的走时精度。串口Serial PortSAMR21G18A 共有6 个基于 SERCOM 的 USART本 BSP 将其中 2 个配置为 USART 使用。其中SERCOM0 是 Zephyr 默认控制台参数为115200 8n1物理上连接到板载 EDBG通过 USB 枚举为串口设备SERCOM01152008 数据位无校验1 停止位8n1接 EDBG设备树中chosen节点将控制台与 shell 都指向sercom0chosen { zephyr,console sercom0; zephyr,shell-uart sercom0; ... };sercom0节点配置为compatible atmel,sam0-uart、current-speed 115200、rxpo 1、txpo 0复用组为sercom0_uart_defaultPA4/PA5。defconfig 中对应启用CONFIG_CONSOLEy CONFIG_SERIALy CONFIG_UART_CONSOLEy CONFIG_UART_INTERRUPT_DRIVENyPWMSAMR21G18A 拥有3 个基于 TCC 的 PWM 单元每个最多 4 路输出周期位宽为 24 位或 16 位。板载 LED0PA19默认由 GPIO 直接驱动一旦启用CONFIG_PWM_SAM0_TCCLED0 便改由TCC0驱动从而支持呼吸灯等渐变效果。设备树中tcc0配置为compatible atmel,sam0-tcc-pwm、prescaler 4其 PWM 输出映射到pwm_defaultPA19F_TCC0_WO3。pwm-led0别名把 LED0 的 PWM 句柄暴露为pwms tcc0 3 PWM_MSEC(20)通道 3周期 20ms应用代码可通过pwm-led0别名直接操作。SPI 端口SAMR21G18A 共有6 个基于 SERCOM 的 SPI本 BSP 启用了其中两个SERCOM5通过 Xplained Pro 标准扩展头引出MISOPB02、MOSIPB22、SCKPB23供外接 SPI 设备使用同时被ext1_spi、ext2_spi别名引用SERCOM4专用于片内 AT86RF233 射频芯片见下文“无线射频”章节由于 SPI 由 SERCOM 实现节点名并非spi...因此 pre_dt_board.cmake 在构建时追加-Wno-spi_bus_bridge与-Wno-unique_unit_address_if_enabled两个 DTC 编译选项抑制相应的设备树检查告警。I2C 端口SERCOM1通过 Xplained Pro 标准扩展头引出设备树中配置为compatible atmel,sam0-i2c、clock-frequency I2C_BITRATE_FAST400 kbps Fast 模式。板级文档特别给出了一条重要经验当同时挂接 I2C 设备与逻辑分析仪时片内上拉电阻不足以维持总线稳定需要为 SDA 与 SCL 两条总线外加外部上拉电阻建议从10KΩ起步调试。此外扩展头引出的 I2CSDAPA16、SCLPA17与 EXT1/EXT2 的 TWD1/TWCK1 引脚复用相同两路扩展头共享同一条 I2C 总线。2.4GHz IEEE802.15.4 无线射频这是 SAM R21 Xplained Pro 最具特色的能力SoC 片内集成的AT86RF233通过 SPI 与若干 GPIO 引脚与 MCU 相连软件视角下与外部 SPI 射频模块完全一致。其连接关系在 samr21_xpro.dts 的sercom4节点中以atmel,rf2xx子节点完整描述项目配置器件型号AT86RF233类型2.4GHz IEEE802.15.4 射频收发器厂商Atmel挂接总线SPI_0SERCOM4MOSIPB30OUTSPI MOSIPAD2MISOPC19INSPI MISOPAD0SCLKPC18OUTSPI SCLKPAD3CSPB31OUTGPIO 片选IRQPB00INGPIO 外部中断RSTNPB15OUTGPIO 复位SLP_TRPA20OUTGPIO 休眠控制设备树中射频节点ieee802154: rf2xx0的关键配置包括spi-max-frequency 60000006 MHz SPI 时钟、irq-gpiosPB00高电平有效下拉、reset-gpiosPB15低电平有效、slptr-gpiosPA20、dig2-gpiosPB17以及一组tx-pwr-table发射功率表覆盖 -17.0 dBm 至 4.0 dBm 范围。同时chosen节点声明zephyr,ieee802154 ieee802154;把该节点注册为系统默认的 IEEE802.15.4 网络接口netif。Zephyr 提供了多个可直接在本板卡上运行的无线示例推荐从 wpan-serial 示例samples/net/wpan_serial/入手。该示例把 USB CDC-ACM 虚拟串口桥接到 IEEE802.15.4 无线接口其 prj.conf 中启用了CONFIG_NETWORKING、CONFIG_IEEE802154、CONFIG_IEEE802154_RAW_MODE以及 USB 设备栈CONFIG_USB_DEVICE_STACK_NEXT、CONFIG_CDC_ACM_SERIAL_INITIALIZE_AT_BOOTapp.overlay 则在zephyr_udc0下挂载zephyr,cdc-acm-uart节点。配合 Linux 下的 wpantund 等即可组成 802.15.4 无线网络。另一类验证方式是基于 IPv6 的 TCP 回显测试使用 sockets-echo-server 示例位于samples/net/sockets/echo_server/与同目录下的 echo client 示例分别扮演服务器与客户端借助 6LoWPAN 在 802.15.4 链路上完成 IPv6 通信验证。编程与调试烧录与运行samr21_xpro 板卡通过板载Atmel Embedded DebuggerEDBG提供调试接口其调试探针由OpenOCD支持。board.cmake 直接include(${ZEPHYR_BASE}/boards/common/openocd.board.cmake)support/openocd.cfg 中定义了完整的调试会话使用cmsis-dap接口、SWD 传输协议芯片名at91samr21g18aCPUTAPID 为0x0bc11477并在 GDB attach/detach 时自动执行reset halt/resume。构建与烧录 hello_world构建 Zephyr 内核与 hello_world 示例。在已安装 Zephyr SDK 并west初始化的环境中执行$ west build -b samr21_xpro samples/hello_world连接开发板使用 USB 线将 SAM R21 Xplained Pro 的调试 USB 口连接到主机。打开串口终端Linux 下 EDBG 枚举的串口设备通常为/dev/ttyACM0例如使用 minicom$ minicom -D /dev/ttyACM0 -o其中-o选项表示不发送调制解调器初始化字符串。连接参数如下速率115200数据位8校验无None停止位1烧录镜像$ west build -b samr21_xpro samples/hello_world -- -DCONFIG_... # 如需覆盖配置 $ west flash烧录完成后终端应输出Hello World! samr21_xpro说明内核已正常启动、串口控制台工作正常。存储分区与固件产物samr21_xpro.dts 在flash0中预留了尾部16 KiB存储分区storage_partition地址0x0003c000大小0x00004000供 FCB / LittleFS / NVS 等存储子系统使用。板级 defconfig 还启用了CONFIG_BUILD_OUTPUT_HEXy构建时会额外产出.hex格式固件便于配合烧录工具使用。参考资料与延伸阅读板级文档boards/atmel/sam0/samr21_xpro/doc/index.rst板级设备树samr21_xpro.dts、引脚复用 samr21_xpro-pinctrl.dtsi板级配置samr21_xpro_defconfig、Kconfig.samr21_xpro构建与调试board.cmake、support/openocd.cfg、pre_dt_board.cmake板卡信息samr21_xpro.yaml、board.yml无线示例wpan-serial、sockets-echo-server官方硬件资料SAM R21 Family Datasheet、SAM R21 Xplained Pro Schematic见板级文档 References 一节【免费下载链接】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),仅供参考
返回列表