
Matter Pump Controller 示例应用在 TI CC13XX_26XX 平台上的构建、烧录与配网实战指南【免费下载链接】connectedhomeipMatter (formerly Project CHIP) creates more connections between more objects, simplifying development for manufacturers and increasing compatibility for consumers, guided by the Connectivity Standards Alliance.项目地址: https://gitcode.com/GitHub_Trending/co/connectedhomeip本指南以 connectedhomeip 仓库中 examples/pump-controller-app/ti/cc13x4_26x4/README.md 为核心系统讲解基于德州仪器 SimpleLink™ CC13XX/CC26XX 系列无线 MCU 的 Matter 泵控制器Pump Controller示例应用从环境准备、GN/Ninja 编译、CCS/UniFlash 烧录到通过 CHIP Tool 完成 BLE Thread 配网与集群控制的全流程。读完本文你将能够在 CC1354P10、CC2674P10 或 CC2674R10 LaunchPad 上独立完成该示例的构建、部署、入网与验证并理解其按钮/LED 交互逻辑与底层状态机实现。示例应用概览该示例应用为 CC13XX_26XX 平台提供了一个可运行的**连接泵控制器connected pump controller**参考实现它基于开源 Matter 实现与 TI SimpleLink™ CC13XX 和 CC26XX 软件开发者套件SDK构建目前支持以下三款器件CC1354P10对应LP_EM_CC1354P10_1或仓库默认的LP_EM_CC1354P10_6LaunchPadCC2674P10对应LP_EM_CC2674P10LaunchPadCC2674R10对应裸模块CC2674R10示例的定位有两重一方面作为探索 Matter 协议工作机理的载体另一方面可作为基于 TI 器件开发真实泵控制器产品的模板。其应用层源码位于examples/pump-controller-app/ti/cc13x4_26x4/main/目录下包含main.cppFreeRTOS 入口、AppTask.cpp任务与事件分发、PumpManager.cpp泵状态机与ZclCallbacks.cppMatter 集群回调集群数据模型由 pump-controller-common 中的pump-controller-app.zap通过 ZAP 工具生成。设备 UI 交互按钮与 LED 语义示例通过 LaunchPad 上的两颗按钮与红绿双色 LED 提供人机交互默认行为如下表所示操作功能左键BTN-1短按小于 1000 ms使能/禁用 BLE 广播Advertisement左键BTN-1长按大于 5000 ms恢复出厂设置Factory Reset右键BTN-2短按小于 1000 ms切换泵状态启动/停止红、绿 LED 闪烁泵处于启动/停止的过渡过程红、绿 LED 常亮泵处于启动状态红、绿 LED 熄灭泵处于停止状态上述交互可在 AppTask.cpp 的事件分发逻辑中找到对应实现左键单击事件调用OpenBasicCommissioningWindow()或SetBLEAdvertisingEnabled(false)切换 BLE 广播左键长按事件触发ScheduleFactoryReset()右键单击事件则依据PumpMgr().IsStopped()的结果发起START_ACTION或STOP_ACTION。按钮回调运行在 ISR 上下文中通过 FreeRTOS 队列xQueueSendFromISR将事件投递给应用任务AppTask.cpp。LIT ICD 与 DSLS 模式下的按键语义变化当设备启用了 LIT ICDLow-power Intermittently Connected Device与 DSLSDynamic Sleepy End Device能力即args.gni中chip_enable_icd_lit与chip_enable_icd_dsls均设为true时右键的功能发生扩展操作功能右键BTN-2长按大于 1000 ms触发 User Active ModeLIT 支持的一部分右键BTN-2双击小于 1000 ms动态短/长空闲时间支持Dynamic Short/Long Idle Time对应源码位于 AppTask.cpp长按通过ICDNotifier::GetInstance().NotifyNetworkActivityNotification()通知网络活动双击则在 SITShort Idle Time模式请求与撤销之间切换。需要注意的是仓库当前默认在 args.gni 中将chip_enable_icd_server、chip_enable_icd_lit、chip_enable_icd_dsls等全部置为false即默认构建不启用LIT/DSLS按键仍遵循上节默认语义如需体验 ICD 能力须自行修改这些开关后重新编译。构建环境准备构建环境以 Linux 为基准推荐 Ubuntu 22.04在迁移到新版本 SDK 时需要重新执行本节准备步骤。安装 SysConfigSysConfig 是 TI 的图形化配置工具用于生成射频、驱动与 BLE 配置。可通过命令行安装以下载 1.22.0 版本为例$ cd ~ $ wget https://dr-download.ti.com/software-development/ide-configuration-compiler-or-debugger/MD-nsUM6f7Vvb/1.22.0.3893/sysconfig-1.22.0_3893-setup.run $ chmod x sysconfig-1.22.0_3893-setup.run $ ./sysconfig-1.22.0_3893-setup.runBootstrap 与子模块在仓库根目录执行 bootstrap 脚本初始化构建环境。需要注意两点若要使用 TI 的 OpenThread 参考提交需要进行递归子模块检出若要同时构建 chip-tool 与 ota-provider 等 Linux 平台示例同样需要为 linux 平台做递归子模块检出。$ cd ~/connectedhomeip $ source ./scripts/bootstrap.sh $ ./scripts/checkout_submodules.py --shallow --platform cc13xx_26xx linux --recursive编译每个新的 shell 都需要先激活构建环境再使用 GN 与 Ninja 生成并编译可执行文件。$ cd ~/connectedhomeip $ source ./scripts/activate.sh $ ./scripts/checkout_submodules.py --shallow --platform cc13xx_26xx --recursive选择目标板卡若目标为 CC2674P10 LaunchPad、CC1354P10-1 LaunchPad 或 CC2674R10 模块需在args.gni中修改ti_simplelink_board字段ti_simplelink_board LP_EM_CC2674P10或ti_simplelink_board LP_EM_CC1354P10_1或ti_simplelink_board CC2674R10板卡与 sysconfig 文件的映射关系定义在 BUILD.gn 中LP_EM_CC2674P10对应chip_cc2674p10.syscfgLP_EM_CC1354P10_6对应chip_cc1354p10_6.syscfgLP_EM_CC1354P10_1对应chip_cc1354p10_1.syscfgCC2674R10对应chip_cc2674r10.syscfg不支持的板卡会直接触发error(Board not supported)。sysconfig 源文件统一位于 examples/platform/ti/sysconfig/。另外注意 args.gni 中仓库默认值为LP_EM_CC1354P10_6CC1354P10 系列的 6 引出版本 LaunchPad。GN 生成与 Ninja 编译在示例目录下执行 GN 生成与 Ninja 编译。Linux 下 TI SimpleLink SDK 与 SysConfig 默认安装在用户主目录的ti文件夹中必须显式提供二者的绝对路径例如/home/username/ti/sysconfig_1.22.0Windows 下默认目录为C:\ti。请记下该安装路径后续步骤会再次用到。$ cd ~/connectedhomeip/examples/pump-controller-app/ti/cc13x4_26x4 $ gn gen out/debug --argsti_sysconfig_root\$HOME/ti/sysconfig_1.22.0\ $ ninja -C out/debug如需在命令行追加其他 GN 参数可以将其直接加入--args例如启用 TI 认证凭证并生成链接映射文件gn gen out/debug --argsti_sysconfig_root\$HOME/ti/sysconfig_1.22.0\ target_defines[\TI_ATTESTATION_CREDENTIALS1\] chip_generate_link_map_filetrue构建产物为chip-${ti_simplelink_board}-pump-controller-example.out见 BUILD.gn。关于默认构建配置可补充几点源码细节args.gni 对固件做了体积优化optimize_debug_level s使用-Os而非-Og并关闭 LWIP 调试传输栈采用 OpenThread 原生端点而非 LWIPchip_with_lwip false、chip_inet_config_enable_tcp_endpoint falseThread 配置为 FTDFull Thread Device见chip_openthread_ftd true默认启用 OTA Requestorchip_enable_ota_requestor true以及三级日志progress/detail/automation设备标识为 VID0xFFF1、PID0x8011软件版本0x0001/1.0.11。烧录Programming将编译产物烧录到 LaunchPad 有两种方式UniFlash 与 Code Composer StudioCCS。UniFlash 适合快速烧录与裸片检查CCS 则支持源码级调试。使用 Code Composer StudioCCSCCS 方式可以在 IDE 内获得完整调试环境通过创建指向 XDS110 调试器的目标连接Target Connection即 CCXML再启动一个无工程project-less的调试会话即可。CCS 会依据 ELF 中内嵌的调试信息在本地查找源文件若镜像在其它机器上构建或源码位置与 ELF 记录不一致CCS 会提示手动定位源码。具体步骤详见 CCS Users Guide 的 Manual Method、Manual Launch、After Launch 与 Debug View 章节安装 Code Composer Studio打开后创建新工作区workspace为目标 SoC 与调试器创建目标连接CCXML启动无工程调试会话CCS 切换至调试视图此时 SoC 核心可能处于断开状态且符号未加载需先连接核心核心连接后点击工具栏Load按钮加载 ELF 镜像。注意CCXML 默认配置使用 2 线 cJTAG 而非完整 4 线 JTAG以匹配 LaunchPad 的默认跳线设置。使用 UniFlashUniFlash 是 TI 面向嵌入式处理器的统一烧录工具无需搭建调试环境即可完成擦除、烧录与芯片检查打开 UniFlash已连接的调试探针通常会自动出现在 Detected Devices 列表中若未出现可能是未连接或需要新建配置New Configuration。也可以直接复用已有的 CCXML 文件选中设备后点击Start启动会话通过Browse选择要烧录的 ELF 镜像。按本指南构建时该文件位于out/debug目录下扩展名为*.out对于启用了 OTA 的应用独立镜像的文件名以*-mcuboot.hex结尾这是包含应用与MCUBoot的合并镜像。OTA 功能的开关由应用args.gni中的chip_enable_ota_requestor决定当前仓库默认开启点击Load Image烧录之后可在 XDS110 User UART 上观察到日志输出。补充通过 JTAG 烧录会置位 Halt-in-Boot 标志可能影响软件复位若遇到异常对 LaunchPad 断电再上电即可清除该标志。运行示例与串口日志默认情况下日志输出到 Application/User UART 端口打开终端模拟器并配置如下参数参数值波特率Speed115200数据位Data bits8停止位Stop bits1校验位ParityNone流控Flow controlNone配网与集群控制设备烧录完成后即可加入现有的 Matter 网络并参与运行。以下步骤假设已有一个活跃的 Matter 网络且网络中至少有一台 OpenThread Border RouterOTBR。如需了解运行该示例所需的其他组件可参考仓库的 Matter 入门指南docs/getting_started/index.md。Step 0准备 CHIP Tool按照入门指南搭建 CHIP Tool即 chip-tool 示例其源码与命令模板位于examples/chip-tool/下用于后续的配网与控制。Step 1配网入网在 CHIP Tool 上执行如下命令将设备配网进 Matter 网络./chip-tool pairing ble-thread nodeID - e.g. 1 hex:complete dataset from starting the OTBR 20202021 3840命令中各参数含义ble-thread表示通过 BLE 完成 Thread 配网nodeID为该设备分配的唯一节点 ID示例为1hex:complete dataset是启动 OTBR 时获取到的完整 Thread 网络数据集20202021是配网 PIN 码3840是配对 Discriminator。这两个默认测试值定义在 CHIPProjectConfig.h 中CHIP_DEVICE_CONFIG_USE_TEST_SETUP_PIN_CODE 20202021、CHIP_DEVICE_CONFIG_USE_TEST_SETUP_DISCRIMINATOR 0xF000xF00 即 3840仅在未烧录出厂数据无TI_FACTORY_DATA宏时生效。配网开始前设备必须能够通过 BLE 被发现在 LaunchPad 上按住丝印标注为BTN-1的按钮即左键依据 Device UI 表中的按键定义超过 1 秒松开后 BLE 广播启动设备完成配网后 BLE 广播自动停止。配网成功后CHIP Tool 端会输出如下日志[1677648218.370754][39785:39790] CHIP:CTL: Received CommissioningComplete response, errorCode0 [1677648218.370821][39785:39790] CHIP:CTL: Successfully finished commissioning step SendComplete设备端则输出配套消息Commissioning complete, notify platform driver to persist network credentials.这条设备端日志对应 AppTask.cpp 中kCommissioningComplete事件的处理分支通知平台驱动持久化网络凭证。Step 2读取集群属性配网完成后可用下列命令读取 Basic 集群中的厂商名称验证控制链路是否打通./chip-tool basicinformation read vendor-name 1 0其中1为设备节点 ID0为端点 ID。BLE 广播Bluetooth LE Advertising要将本示例配网进 Thread 网络设备必须先通过 BLE 被发现。按下文所述长按大于 1000 ms丝印标注为BTN-1的按钮启动 BLE 广播设备完全配网后广播自动停止。BLE 会合Bluetooth LE Rendezvous使用ble-thread方式与本应用配对可借助任何启用了 BLE 的 CHIP Controller 应用完成仓库中提供了多语言控制端实现如src/controller/目录下的 C 与 Java/Kotlin 实现。设备控制台打印的信息可用于辅助配对控制器应用也可通过集群命令继续控制示例设备。源码实现细节泵状态机与集群联动为了更深入地理解示例行为可以结合源码观察其核心实现泵状态机PumpManager.cpp 中定义了四态状态机kState_StartInitiated/kState_StartCompleted/kState_StopInitiated/kState_StopCompleted。InitiateAction()仅在上一动作完成后才接受新动作StartCompleted后才允许 Stop反之亦然动作发起后启动一个 500 ms 的执行器动作定时器ACTUATOR_MOVEMENT_PERIOS_MS模拟机械动作超时后经 App 事件队列回调ActionCompleted这正是 UI 表格中LED 闪烁 过渡过程的底层来源。此外还支持EnableAutoRestart/SetAutoStartDuration实现停止后自动重启。集群联动ZclCallbacks.cpp 的MatterPostAttributeChangeCallback将 On/Off 集群的OnOff属性变化直接映射为泵动作属性值非 0 时InitiateAction(START_ACTION)为 0 时InitiateAction(STOP_ACTION)同时监听 LevelControl 集群的CurrentLevel属性变化。也就是说通过 CHIP Tool 写入 On/Off 集群属性与按下BTN-2等效这解释了控制泵状态这一核心产品功能。LED 反馈AppTask.cpp 的ActionInitiated以绿色 50 ms、红色 110 ms 的频率快速闪烁两盏 LEDActionCompleted时若为启动动作则双灯常亮、若为停止动作则双灯熄灭与 Device UI 表格一一对应。OTA 初始化设备在首次检测到 Thread 状态变更或启动时 Thread 未使能后会启动一个 10 秒的一次性 FreeRTOS 定时器OTAREQUESTOR_INIT_TIMER_DELAY_MS到期后初始化默认 OTA Requestor 组件见 AppTask.cpp。TI 技术支持如在开发过程中遇到问题可前往 TI 的 E2E 论坛发帖寻求技术支持同时仓库也欢迎任何形式的反馈与贡献。构建与使用本文示例时请以当前仓库的 README.md 与args.gni、BUILD.gn等配置文件为最新依据注意板卡型号、SysConfig 版本与 SDK 路径等环境前提。【免费下载链接】connectedhomeipMatter (formerly Project CHIP) creates more connections between more objects, simplifying development for manufacturers and increasing compatibility for consumers, guided by the Connectivity Standards Alliance.项目地址: https://gitcode.com/GitHub_Trending/co/connectedhomeip创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考