| # Matter CC1352 CC2652 All-clusters Example Application |
| |
| An example application showing the use of [Matter][matter] on the Texas |
| Instruments CC13XX_26XX family of Wireless MCUs. |
| |
| --- |
| |
| - [Matter CC1352 CC2652 All Clusters Example Application](#matter-cc1352-cc2652-all-clusters-example-application) |
| - [Introduction](#introduction) |
| - [Device UI](#device-ui) |
| - [Building](#building) |
| - [Preparation](#preparation) |
| - [Compilation](#compilation) |
| - [Programming](#programming) |
| - [Code Composer Studio](#code-composer-studio) |
| - [UniFlash](#uniflash) |
| - [Viewing Logging Output](#viewing-logging-output) |
| - [Running the Example](#running-the-example) |
| - [Provisioning](#provisioning) |
| - [Bluetooth LE Advertising](#bluetooth-le-advertising) |
| - [Bluetooth LE Rendezvous](#bluetooth-le-rendezvous) |
| - [TI Support](#ti-support) |
| |
| --- |
| |
| ## Introduction |
| |
| ![CC1352R1_LAUNCHXL](../../pump-app/cc13x2x7_26x2x7/doc/images/cc1352r1_launchxl.jpg) |
| |
| The CC13XX_26XX all clusters example application provides the basis to query and |
| run commands for all currently implemented Matter clusters. This uses the |
| open-source Matter implementation and the Texas Instruments SimpleLink™ CC13XX |
| and CC26XX software development kit. |
| |
| This example is enabled to build for CC2652R7 devices. |
| |
| The all-clusters example is intended to serve both as a means to explore the |
| workings of Matter, as well as a template for creating real products based on |
| the Texas Instruments devices. |
| |
| ## Device UI |
| |
| This example application has a simple User Interface to depict the state of the |
| various Matter clusters and the attribute changes associated with them. The user |
| LEDs on the LaunchPad are used for the onoff, levelcontrol and identify clusters |
| to provide a working demonstration of the cluster attribute changes. The Green |
| LED is used to represent attribute changes to endpoint 1 while the Red LED is |
| used to represent changes to endpoint 2. |
| |
| Short presses (less than 1000ms) of the user buttons are used currently unused |
| in the all-clusters application, but stubs are provided. |
| |
| Long presses (greater than 1000ms) of the user buttons are used for controlling |
| BLE advertisements and resets. The left button (`BTN-1`) is used to perform a |
| factory reset of the device. The Right button (`BTN-2`) is used to disable BLE |
| advertisements (if enabled) or enable advertisements (if disabled). |
| |
| ## Building |
| |
| ### Preparation |
| |
| Some initial setup is necessary for preparing the build environment. This |
| section will need to be done when migrating to new versions of the SDK. This |
| guide assumes that the environment is linux based, and recommends Ubuntu 20.04. |
| |
| - Download and install [SysConfig][sysconfig]. This can be done simply with |
| the following commands. |
| |
| ``` |
| $ cd ~ |
| $ wget https://software-dl.ti.com/ccs/esd/sysconfig/sysconfig-1.11.0_2225-setup.run |
| $ chmod +x sysconfig-1.11.0_2225-setup.run |
| $ ./sysconfig-1.11.0_2225-setup.run |
| ``` |
| |
| - Run the bootstrap script to setup the build environment. |
| |
| ``` |
| $ cd ~/connectedhomeip |
| $ source ./scripts/bootstrap.sh |
| |
| ``` |
| |
| ### Compilation |
| |
| It is necessary to activate the environment in every new shell. Then run GN and |
| Ninja to build the executable. |
| |
| - Activate the build environment with the repository activate script. |
| |
| ``` |
| $ cd ~/connectedhomeip |
| $ source ./scripts/activate.sh |
| |
| ``` |
| |
| - Run the build to produce a default executable. By default on Linux both the |
| TI SimpleLink SDK and Sysconfig are located in a `ti` folder in the user's |
| home directory, and you must provide the absolute path to them. For example |
| `/home/username/ti/sysconfig_1.11.0`. On Windows the default directory is |
| `C:\ti`. Take note of this install path, as it will be used in the next |
| step. |
| |
| ``` |
| $ cd ~/connectedhomeip/examples/all-clusters-app/cc13x2x7_26x2x7 |
| $ gn gen out/debug --args="ti_sysconfig_root=\"$HOME/ti/sysconfig_1.11.0\"" |
| $ ninja -C out/debug |
| |
| ``` |
| |
| ## Programming |
| |
| Loading the built image onto a LaunchPad is supported through two methods; |
| Uniflash and Code Composer Studio (CCS). UniFlash can be used to load the image. |
| Code Composer Studio can be used to load the image and debug the source code. |
| |
| ### Code Composer Studio |
| |
| Programming with CCS will allow for a full debug environment within the IDE. |
| This is accomplished by creating a target connection to the XDS110 debugger and |
| starting a project-less debug session. The CCS IDE will attempt to find the |
| source files on the local machine based on the debug information embedded within |
| the ELF. CCS may prompt you to find the source code if the image was built on |
| another machine or the source code is located in a different location than is |
| recorded within the ELF. |
| |
| Download and install [Code Composer Studio][ccs]. |
| |
| First open CCS and create a new workspace. |
| |
| Create a target connection (sometimes called the CCXML) for your target SoC and |
| debugger as described in the [Manual Method][ccs_manual_method] section of the |
| CCS User's Guide. |
| |
| Next initiate a project-less debug session as described in the [Manual |
| Launch][ccs_manual_launch] section of the CCS User's Guide. |
| |
| CCS should switch to the debug view described in the [After |
| Launch][ccs_after_launch] section of the User's Guide. The SoC core will likely |
| be disconnected and symbols will not be loaded. Connect to the core as described |
| in the [Debug View][ccs_debug_view] section of the User's Guide. Once the core |
| is connected, use the `Load` button on the toolbar to load the ELF image. |
| |
| Note that the default configuration of the CCXML uses 2-wire cJTAG instead of |
| the full 4-wire JTAG connection to match the default jumper configuration of the |
| LaunchPad. |
| |
| ### UniFlash |
| |
| Uniflash is Texas Instrument's uniform programming tool for embedded processors. |
| This will allow you to erase, flash, and inspect the SoC without setting up a |
| debugging environment. |
| |
| Download and install [UniFlash][uniflash]. |
| |
| First open UniFlash. Debug probes connected to the computer will usually be |
| displayed under the Detected Devices due to the automatic device detection |
| feature. If your device does not show up in this view it my be disconnected, or |
| you may have to create a New Configuration. If you already have a CCXML for your |
| SoC and debug connection you can use that in the section at the bottom. Once |
| your device is selected, click the `Start` button within the section to launch |
| the session. |
| |
| Select the ELF image to load on the device with the `Browse` button. This file |
| is placed in the `out/debug` folder by this guide and ends with the `*.out` file |
| extension. |
| |
| Finally click the `Load Image` button to load the executable image onto the |
| device. You should be able to see the log output over the XDS110 User UART. |
| |
| Note that programming the device through JTAG sets the Halt-in-Boot flag and may |
| cause issues when performing a software reset. This flag can be reset by |
| power-cycling the LaunchPad. |
| |
| ## Viewing Logging Output |
| |
| By default the log output will be sent to the Application/User UART. Open a |
| terminal emulator to that port to see the output with the following options: |
| |
| | Parameter | Value | |
| | ------------ | -------- | |
| | Speed (baud) | `115200` | |
| | Data bits | `8` | |
| | Stop bits | `1` | |
| | Parity | `None` | |
| | Flow control | `None` | |
| |
| ## Running the Example |
| |
| Once a device has been flashed with this example, it can now join and operate in |
| an existing Thread network. The following sections assume that a Thread network |
| is already active, and has at least one [OpenThread Border |
| Router][ot_border_router_setup]. |
| |
| For insight into what other components are needed to run this example, please |
| refer to our [Matter Getting Started Guide][matter-e2e-faq]. |
| |
| ### Provisioning |
| |
| Interacting with the application begins by enabling BLE advertisements and then |
| pairing the device into a Thread network. |
| |
| #### Bluetooth LE Advertising |
| |
| To provision this example onto a Thread network, the device must be discoverable |
| over Bluetooth LE. BLE advertising is started by long pressing the right button |
| (greater than 1000ms), labeled `BTN-2` on the silkscreen. Once the device is |
| fully provisioned, BLE advertising will stop. |
| |
| #### Bluetooth LE Rendezvous |
| |
| Pairing this application with `ble-thread` can be done with any of the enabled |
| [CHIP Controller](../../../src/controller/README.md) applications. Use the |
| information printed on the console to aide in pairing the device. The controller |
| application can also be used to control the example app with the cluster |
| commands. |
| |
| ## TI Support |
| |
| For technical support, please consider creating a post on TI's [E2E forum][e2e]. |
| Additionally, we welcome any feedback. |
| |
| [matter]: https://github.com/project-chip/connectedhomeip |
| [ccs]: https://www.ti.com/tool/CCSTUDIO |
| [ccs_after_launch]: |
| https://software-dl.ti.com/ccs/esd/documents/users_guide/ccs_debug-main.html?configuration#after-launch |
| [ccs_debug_view]: |
| https://software-dl.ti.com/ccs/esd/documents/users_guide/ccs_debug-main.html?configuration#debug-view |
| [ccs_manual_launch]: |
| https://software-dl.ti.com/ccs/esd/documents/users_guide/ccs_debug-main.html?configuration#manual-launch |
| [ccs_manual_method]: |
| https://software-dl.ti.com/ccs/esd/documents/users_guide/ccs_debug-main.html?configuration#manual-method |
| [cc1352r1_launchxl]: https://www.ti.com/tool/LAUNCHXL-CC1352R1 |
| [e2e]: https://e2e.ti.com/support/wireless-connectivity/zigbee-and-thread |
| [matter-e2e-faq]: |
| https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/1082428/faq-cc2652r7-matter----getting-started-guide |
| [sysconfig]: https://www.ti.com/tool/SYSCONFIG |
| [ti_thread_dnd]: |
| https://www.ti.com/wireless-connectivity/thread/design-development.html |
| [ot_border_router_setup]: https://openthread.io/guides/border-router/build |
| [uniflash]: https://www.ti.com/tool/download/UNIFLASH |