尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

RIOT cc2650-launchpad 板级支持详解:TI CC2650 LaunchPad 的构建、烧录与外设配置

RIOT cc2650-launchpad 板级支持详解:TI CC2650 LaunchPad 的构建、烧录与外设配置 RIOT cc2650-launchpad 板级支持详解TI CC2650 LaunchPad 的构建、烧录与外设配置【免费下载链接】RIOTRIOT - The friendly OS for IoT项目地址: https://gitcode.com/GitHub_Trending/riot/RIOT本篇基于 RIOT 仓库中 boards/cc2650-launchpad/doc.md 的原始板级文档展开完整覆盖 TI SimpleLink CC2650 LaunchPadLAUNCHXL-CC2650开发套件在 RIOT 中的硬件规格、构建系统集成、外设映射与烧录调试全流程。读完后你将能够独立完成该开发板的编译、通过板载 XDS110 调试器烧录固件并在应用代码中使用其 LED、按键与串口等外设。一、开发板概述CC2650 SoC 与双核架构TI CC2650 LaunchPadLAUNCHXL-CC2650是 Texas Instruments 面向 CC2650 SoC 的开发套件。CC2650 的架构特点是一颗ARM Cortex-M3主核负责应用逻辑一颗专用Cortex-M0协处理器负责控制片上射频802.15.4无线电即原文档所述 dedicated Cortex-M0 to control the radio。原文档给出的硬件规格表如下可直接作为选型参考项目规格MCUCC2650核心家族ARM Cortex-M3厂商Texas InstrumentsRAM20KiBFlash128KiB主频48MHzFPU无定时器4ADC1 路 12-bitUART1SPI2I2C1供电 Vcc1.8V – 3.8V原文档还引用了 TI 官方的 Datasheet、Reference Manual 以及《CC2650 Quick Start Guide》默认板级引脚图出处。这些为 TI 站外文档本文不重复链接需要完整引脚默认值时查阅该 Quick Start Guide 即可。二、RIOT 构建系统中的板级集成cc2650-launchpad 在 RIOT 中通过标准 board 模块目录组织关键文件与职责如下2.1 模块声明Makefile.featuresMakefile.features 定义了该板依赖的 CPU 与提供的外设特性CPU cc26x0_cc13x0 CPU_MODEL cc26x0f128 # Put defined MCU peripherals here (in alphabetical order) FEATURES_PROVIDED periph_gpio periph_gpio_irq FEATURES_PROVIDED periph_timer FEATURES_PROVIDED periph_uart FEATURES_PROVIDED periph_i2c要点CPU cc26x0_cc13x0复用 CC26x0/CC13x0 共用 CPU 目录 cpu/cc26x0_cc13x0其中的 cpu.c 与periph/子目录提供时钟、GPIO、定时器、UART、I2C 等底层驱动CPU_MODEL cc26x0f128具体到 CC2650 的 128KiB Flash 型号变体该型号还会决定烧录工具的 OpenOCD 配置选择见第四节FEATURES_PROVIDED列表与periph_conf.h中的实际配置一一对应GPIO、GPIO 中断、定时器、UART、I2C。应用侧通过USEMODULE periph_xxx拉取这些特性即可获得统一的 RIOT periph 抽象接口。2.2 Kconfig 与调试器声明Kconfig 将板卡与 CPU 型号绑定config BOARD_CC2650_LAUNCHPAD bool default y select CPU_MODEL_CC26X0F128Makefile.include 则声明调试适配器并复用同系列板卡的烧录配置XDEBUGGER XDS110 # configure the flash tool include $(RIOTBOARD)/common/cc26xx_cc13xx/Makefile.includeXDEBUGGER XDS110指明该板自带 TI XDS110 片上调试器这是make flash/make debug的工作基础第二行 include 的公共文件 boards/common/cc26xx_cc13xx/Makefile.include 承载了全部烧录器选择逻辑下文详述。2.3 依赖与 SAUL 支持Makefile.dep 处理了 SAUL 传感器/外设框架的默认映射依赖ifneq (,$(filter saul_default,$(USEMODULE))) USEMODULE saul_gpio endif即只要应用启用了saul_default就自动把saul_gpio模块加入构建从而让 SAUL 的默认设备枚举生效见下一节的gpio_params.h。三、板载外设配置LED、按键、xtimer、UART 与 I2C3.1 LED 与按键include/board.hinclude/board.h 定义了板上可直接操控的用户外设/** * name xtimer configuration * { */ #define XTIMER_WIDTH (16) #define XTIMER_BACKOFF (25) #define XTIMER_ISR_BACKOFF (20) /** } */ /** * name On-board button configuration * { */ #define BTN0_PIN GPIO_PIN(0, 13) #define BTN0_MODE GPIO_IN_PU #define BTN1_PIN GPIO_PIN(0, 14) #define BTN1_MODE GPIO_IN_PU /** } */ #define LED0_PIN GPIO_PIN(0, 6) /** red */ #define LED1_PIN GPIO_PIN(0, 7) /** green */ #define LED0_ON gpio_set(LED0_PIN) #define LED0_OFF gpio_clear(LED0_PIN) #define LED0_TOGGLE gpio_toggle(LED0_PIN) /* LED1 同理 ... */说明xtimer 参数CC2650 使用 16 位宽的 xtimerXTIMER_WIDTH 16并给出了XTIMER_BACKOFF 25/XTIMER_ISR_BACKOFF 20的中断回退常量用于规避定时器回绕竞态按键两个板载按键位于 P0.13 / P0.14配置为上拉输入GPIO_IN_PU按下时为低电平LED红色 LED 在 P0.6绿色 LED 在 P0.7直接通过gpio_set/clear/toggle宏控制。3.2 时钟、定时器与串行接口include/periph_conf.hinclude/periph_conf.h 是 RIOT periph 抽象层读取的核心配置内容要点/* the main clock is fixed to 48MHZ */ #define CLOCK_CORECLOCK (48000000U)与硬件规格表中的 48MHz 主频一致——CC2650 主时钟固定为 48MHz无需 PLL 配置。通用定时器4 个 GPT 按顺序无间隔配置共 4 份条目static const timer_conf_t timer_config[] { { .cfg GPT_CFG_16T, .chn 2 }, { .cfg GPT_CFG_32T, .chn 1 }, { .cfg GPT_CFG_16T, .chn 2 }, { .cfg GPT_CFG_32T, .chn 1 }, }; #define TIMER_NUMOF ARRAY_SIZE(timer_config)即前两个定时器配为 16 位、各 2 个捕获通道后两个配为 32 位、各 1 个通道满足periph_timer特性的多精度需求。UARTCC26x0 系列 CPU 只有一路 UART因此只需配置 TX/RX 引脚static const uart_conf_t uart_config[] { { .regs UART0, .tx_pin 3, .rx_pin 2, #ifdef MODULE_PERIPH_UART_HW_FC .rts_pin GPIO_UNDEF, .cts_pin GPIO_UNDEF, #endif .intn UART0_IRQN } }; #define UART_NUMOF ARRAY_SIZE(uart_config)TX 使用 P0.3、RX 使用 P0.2对应板载 USB-UART 桥。文件注释同时说明可选启用硬件流控——构建时加上USEMODULE periph_uart_hw_fc并在此处定义cts_pin/rts_pin默认GPIO_UNDEF即未接。I2C单路 I2C 总线映射到两个 GPIO 引脚#define I2C_NUMOF (1) #define I2C_SDA_PIN (14) #define I2C_SCL_PIN (15)SDA P0.14、SCL P0.15这是板载 I2C 扩展口的位置接外部传感器时可直接使用periph_i2c接口。3.3 SAUL 直接映射include/gpio_params.hinclude/gpio_params.h 将板上 4 个用户外设注册进 SAUL 框架static const saul_gpio_params_t saul_gpio_params[] { { .name LED(red), .pin LED0_PIN, .mode GPIO_OUT }, { .name LED(green), .pin LED1_PIN, .mode GPIO_OUT }, { .name Button(BTN-1), .pin BTN0_PIN, .mode BTN0_MODE, .flags SAUL_GPIO_INVERTED }, { .name Button(BTN-2), .pin BTN1_PIN, .mode BTN1_MODE, .flags SAUL_GPIO_INVERTED }, };LED 为普通输出两个按键标记SAUL_GPIO_INVERTED补偿了“按下为低”的硬件极性与 SAUL 逻辑电平的差异。配合第 2.3 节的saul_default → saul_gpio依赖应用可以按名称如LED(red)枚举并读写这些设备。四、烧录与调试XDS110、Uniflash 与 OpenOCD4.1 基本流程原文档给出的烧录流程非常直接板上集成 XDS110 调试探针通过 Micro-USB 口提供编程、烧录和调试能力。安装 TI Uniflash 或 OpenOCD 之一后用 Micro-USB 连接开发板然后执行BOARDcc2650-launchpad make flash默认走 Uniflash若想改用 OpenOCD只需设置PROGRAMMER环境变量export PROGRAMMERopenocd之后make flash和make debug都会通过 OpenOCD 完成。原文档同时指向共享的 CC26xx/CC13xx 文档组\ref cc26xx_cc13xx_riot其中涵盖该系列 MCU 的编译与烧录工具安装细节。4.2 烧录器选择逻辑源码级上述行为的实现集中在 boards/common/cc26xx_cc13xx/Makefile.include# configure the flash tool ifneq (,$(UNIFLASH_PATH)) PROGRAMMER ? uniflash else PROGRAMMER ? openocd endif # uniflash and openocd programmers are supported PROGRAMMERS_SUPPORTED openocd uniflash可以确认两点默认行为系统上能找到 UniflashUNIFLASH_PATH非空时默认用 uniflash否则回落到 openocd且这两个烧录器均在支持列表内。因此第 4.1 节的export PROGRAMMERopenocd正是利用?的弱赋值被环境变量覆盖。此外该文件还定义了TTY_BOARD_FILTER : --model XDS110 --iface-num 0 OPENOCD_DEBUG_ADAPTER ? xds110 OPENOCD_CMD_RESET_HALT ? -c haltTTY_BOARD_FILTER当启用MOST_RECENT_PORT1的串口自动探测时只筛选 XDS110 调试器的 USB-UART 桥接口避免误选其他串口设备OPENOCD_DEBUG_ADAPTER指定 OpenOCD 使用 XDS110 适配器OPENOCD_CMD_RESET_HALT注释说明这是针对 CC26xx/CC13xx 的一个 bug 的规避——reset halt会触发该 bug因此改用单独的halt命令让设备保持可烧录状态这是一种有意识的取舍可能与目标固件安装的中断处理竞争但换来了烧录基本不失败。4.3 OpenOCD 配置与 CC2650 目标文件OpenOCD 的配置文件按 CPU 型号自动选择。对本板CPU_MODEL cc26x0f128匹配cc26x0%分支ifneq (,$(filter cc26x0%,$(CPU_MODEL))) DEFAULT_OPENOCD_CONFIG : $(RIOTBASE)/boards/common/cc26xx_cc13xx/dist/openocd_cc26x0.cfg DEFAULT_JLINK_DEVICE : CC26xx endifboards/common/cc26xx_cc13xx/dist/openocd_cc26x0.cfg 内容只有一行指向 OpenOCD 自带目标描述source [find target/ti_cc26x0.cfg]同一dist/目录还提供 XDS110 连接器的描述与数据文件例如 cc26x0f128_XDS110.ccxml 与对应的.dat、gdb.conf文件供 TI 系工具链识别目标JLINK_DEVICE CC26xx则保证使用 J-Link 调试器时也能选对芯片型号JLINK_IF默认为 jtag。五、上手路径小结在 RIOT 仓库中针对本开发板的完整工作流可归纳为编译BOARDcc2650-launchpad make -C examples/gnrc_networking或任意示例构建系统按 Makefile.features 拉取cc26x0_cc13x0CPU 支持与periph_*特性烧录确认安装了 Uniflash 或 OpenOCD 后BOARDcc2650-launchpad make flash需要 OpenOCD 时先export PROGRAMMERopenocd调试BOARDcc2650-launchpad make debug由同一套 XDS110/OpenOCD 配置进入 GDB使用外设应用直接引用board.h的LED0_PIN、BTN0_PIN等宏或使用periph_uartP0.2/P0.3、periph_i2cP0.14/P0.15、periph_timer4 个 GPT以及 SAUL 具名设备扩展需要硬件流控时加USEMODULE periph_uart_hw_fc并补全cts_pin/rts_pin需要 SAUL 枚举时加USEMODULE saul_default。板级文档、构建文件与外设头文件的完整位置为boards/cc2650-launchpad/doc.md、boards/cc2650-launchpad/Kconfig、boards/cc2650-launchpad/include/board.h、boards/cc2650-launchpad/include/periph_conf.h、boards/common/cc26xx_cc13xx/Makefile.include。以上所有烧录行为以当前仓库 boards/common/cc26xx_cc13xx/dist 中的 XDS110/CC26x0 目标文件为前提适用于搭载 XDS110 片上调试器的 LAUNCHXL-CC2650 套件。【免费下载链接】RIOTRIOT - The friendly OS for IoT项目地址: https://gitcode.com/GitHub_Trending/riot/RIOT创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表