Examples User’s Guide¶
The Proprietary RF examples are split into 2 types:
- RF Driver Examples
- EasyLink Examples
The RF driver offers very low-level API’s to run radio operation commands on the RF core and send and receive raw packets.
The EasyLink layer is an abstraction layer above the RF driver API’s for the more convenience. It uses the RF driver and executes radio operation commands. The EasyLink library was developed to be simple enough for developers to extend for their needs and should be seen as a starting point for adding an API on top of the RF driver. The EasyLink examples show how to develop an RF application on top of the EasyLink API.
Note
Although all examples are for 868/915 MHz operation, they all support multiple PHYs and frequency bands. You can provide your own RF settings with any example, allowing you to change both PHY and frequency band as you see fit.
See Section about RF settings for more information on what they are and how to use them.
RF Driver Examples¶
RF driver examples are available for the TI-RTOS kernel, but can also be used without any RTOS at all. That is possible with the NoRTOS Driver Porting Layer.
The RF Driver examples can be imported from the following SDK directory:
{SDK_INSTALL_DIR}/examples/rtos/<PLATFORM>/drivers/
Carrier Wave: | Basic example for RF performance measurements and testing, written directly on top of the TI-RTOS RF driver. Set the radio into various test modes. Transmission of modulated or unmodulated signal. Easy to change radio configuration. Use radio settings exported from SmartRF Studio. |
---|---|
Dual Mode Rx/Tx: | |
(CC1350 Only) Dual Mode Rx/Tx shows how to setup a multi-mode radio. This example in particular configures the radio with BLE and proprietary PHY. |
|
Echo Rx/Tx: | The Echo Tx example transmits a packet and immediately switches over to receiver mode and waits for its echo. The Echo Rx example starts in receiver mode and transmits back any received packets (echo). |
Listen Before Talk: | |
The Listen Before Talk (LBT) example illustrates how to implement a simple, proprietary LBT algorithm using the command chaining feature of the CC13x0 family. |
|
Packet Error Rate: | |
The Packet Error Rate (PER) example showcases different RF transfer modes of the CC13x0. Multiple packets are transmitted or received and the packet error rate is calculated. The result is shown on an LCD/UART display. |
|
Packet Rx/Tx: | Simple examples that show how to send and receive packets using the RF driver. |
Synchronized Packet Rx/Tx: | |
In this example you will learn how to build a time-synchronized connection between a transmitter and a receiver. This leads to the lowest possible power consumption on both sides. Time synchronization also builds the foundation for Frequency and Time Division Multiple Access, FDMA and TDMA respectively. |
|
Wake On Radio Rx/Tx: | |
These examples showcase the Wake-on-Radio (WoR) functionality of the CC13x0 family to significantly lower the power consumption of an RF link by duty cycling the RF core. It shows how to use the RF Driver to schedule automatic wake-ups and send messages with long preambles. |
EasyLink Examples¶
The EasyLink examples can be imported from the following SDK directory:
{SDK_INSTALL_DIR}/examples/rtos/<PLATFORM>/easylink/
All examples can be
used with TI-RTOS.
Only the Echo Rx and Echo Tx, Rx and Tx, and listenBeforeTalk EasyLink examples
are available for No-RTOS. These examples are found in
{SDK_INSTALL_DIR}/examples/nortos/<PLATFORM>/easylink/
. The No-RTOS projects
use NoRTOS Driver Porting Layer.
EasyLink Echo Rx/Tx: | |
---|---|
This example demonstrates the use of the EasyLink API in doing bi-directional communication. It will require the use of two boards, one running the rfEasyLinkEchoTx project that will originate the packets, while another board running the rfEasyLinkEchoRx project will re-transmit (echo) them back to the originator. |
|
EasyLink Listen Before Talk: | |
This example includes the EasyLink API and uses it to configure the RF driver to assess the communication channel before transmitting any packets, i.e. Listen Before Talk (LBT). |
|
EasyLink Network Processor (NP): | |
The EasyLink API has been exposed over an AT Command Interface such that it can be used by Host SW (running on a PC, MPU or MCU), or by using a serial terminal emulator over a UART. |
|
EasyLink Rx/Tx: | The EasyLink Rx and Tx examples show how to use the EasyLink API, how to set the frequency, and how to transmit and receive packets. |
Wireless Sensor Network: | |
The Wireless Sensor Network (WSN) Node and Concentrator examples illustrate how to create a very basic sensor network consisting of one or many node devices and a concentrator device. The example shows how to form one-to-many network where the nodes send messages to the concentrator. The node uses the Sensor Controller Engine to periodically read the value of the light sensor. Whenever the sensor value changes, the main CPU wakes up and sends a packet with the value to the concentrator. The concentrator is always waiting for incoming packets. Once a packet is received, the concentrator displays the data on LCD/UART and sends an acknowledgment packet (ACK) in return. Additional versions of the Wireless Sensor Network examples show :ref`over-the-air downloading (OAD)<sec-oad>` of new firmware images. |
|
Wireless Sensor Network + BLE advertisements: | |
(CC1350 only) Extended versions of the Wireless Sensor Network node example that shows how to combine BLE advertisements and a simple sub-1GHz Wireless Sensor Network. |
RF Settings; What are they and how to use them¶
All proprietary RF applications require a set of RF settings, often referred to as “smartrf_settings”, in order to achieve optimum performance for a specific PHY. Be aware that this is not only required for the proprietary PHY, but also all other PHYs, such as BLE, IEEE 802.15.4, etc.
These RF settings, usually represented as a single pair of C header and source files in your project, must at minimum define a Setup Radio Operation command, RF core firmware patches, and RF core register overrides. Additional RF commands can be defined which are relevant to your PHY and application. See PHY Configuration for a more in-depth explanation of how the actual configuration works.
Exporting and Using RF Settings¶
The main tool used for configuring, testing and exporting RF settings is SmartRF Studio. A dedicated SimpleLink Academy exists explaining the process on how to configure, export and include the exported RF settings into your application, see link below.
- SimpleLink Academy: Exporting RF settings from SmartRF Studio
Running Examples in Code Composer Studio (CCS)¶
The following walks through importing and building one of the proprietary RF examples using the CCS IDE and the TI Resource Explorer.
If CCS is not already installed; download and install CCS from the Code Composer Studio tool page.
If it is installed it is recommended that you install the available updates.
Download and install the SimpleLink CC13x0 SDK from here:
https://www.ti.com/tool/simplelink-cc13x0-sdk.
This step is recommended, but optional as the TI Resource explorer can download the examples from the resource explorer server. The rest of this section will assume that you have downloaded the SDK.
Open CCS, and use the menu option
View-> Resource Explorer
.Browse to the example of interest in the Resource Explorer.
Note
EasyLink examples can be found in the EasyLink folder and the RF Driver examples can be found in the TI Drivers directory.
Select the CCS or GCC compiler, we recommend using the CCS compiler, but compiling with GCC in the CCS IDE is also possible. Then select the example name and click the CCS icon in the top left to import it into your workspace.
You will notice that 2 projects have been included in the workspace:
rfEasyLinkTx_CC1310_LAUNCHXL_tirtos_ccs
tirtos_builds_CC1310_LAUNCHXL_release_ccs
As well as the example selected there is also the tirtos_builds project which is a platform and compiler specific TIRTOS build. This will only build once and is shared by all the projects for that platform and compiler in your workspace.
Build and download and debug the project by clicking on the ‘bug’. The first time it will take some time due to the TI-RTOS build.
Click run to run the example.
Running Examples in IAR¶
Please make sure you’re using the IAr version which is recomended in the SimpleLink CC13x0 SDK release notes.If IAR Arm Workbench is not already installed, download and install IAR Workbench for Arm from http://www.iar.com .
Download and install the SimpleLink CC13x0 SDK from here:
Open IAR and create a new workspace with the menu option
File -> New -> Workspace
You can use this workspace for one or more examples.
Import the IAR Custom Argument Variables file with the menu option
Tools -> Configure Custom Argument Variables
. The location and file to be imported isC:/ti/simplelink_cc13x0_sdk_x_xx_xx_xx/tools/iar/SIMPLELINK_CC13X0_SDK.custom_argvars
.Save the Workspace with the menu option
File -> Save Workspace As...
.To enable the Custom Argument Variables for this workspace close and open the workspace with the menu options
File -> Close Workspace
andFile -> Open -> Workspace
.Select the menu option
Help -> Information Center
and select the Integrated Solutions icon:Select the Texas Instruments Example projects and then click on the example applications link.
Follow the instructions on this page to import and build the project.
When you click on one of the examples, it will ask you to place a copy of the project file in another folder. Save it in a sub-folder of your workspace. If you are going to import only one example into your workspace, you can put the project file into the same folder as the workspace file.
Download and debug the example with the menu option
Project -> Download and Debug
.
Building Examples From the Command Line¶
All examples can be built from command line using plain makefiles in 3 steps:
- Configure the toolchain paths
- Build the kernel (only when using TI-RTOS kernel)
- Build the example
Note
To avoid problems with spaces in paths, it is recommended to use a Unix shell like Bash as command line environment instead of the native command interpreter cmd.exe in Windows.
The toolchain paths are configured in a imports.mak
in the SDK
installation root folder. Open the file in an editor and modify the toolchain
install paths lines depending on which toolchain you are going to use and
where they are installed on your system.
# The shown versions are just examples.
XDC_INSTALL_DIR ?= c:/ti/xdctools_3_50_03_33_core
CCS_ARMCOMPILER ?= c:/ti/ccsv7/tools/compiler/ti-cgt-arm_16.9.3.LTS
GCC_ARMCOMPILER ?= c:/ti/ccsv7/tools/compiler/gcc-arm-none-eabi-6-2017-q1-update
IAR_ARMCOMPILER ?= c:/Program Files (x86)/IAR Systems/Embedded Workbench 8.0/arm
Once that is done, the TI-RTOS kernel can be built. This step is not necessary
for No-RTOS examples. In order to build the kernel, select a specific
development board and build the release
configuration. The makefile can be
found in the folder
<SDK_INSTALL_DIR>/kernel/tirtos/builds/<BOARD>/release/<TOOLCHAIN>
.
Example:
$ cd /c/ti/simplelink_cc13x0_sdk_1_xx_xx_xx/kernel/tirtos/builds/CC1310_LAUNCHXL/release/gcc
$ make
Finally, the examples can be built. Navigate to the desired example and invoke make:
$ cd /c/ti/simplelink_cc13x0_sdk_1_xx_xx_xx/rtos/CC1310_LAUNCHXL/drivers/rfSynchronizedPacketRx/tirtos/gcc
$ make -j4
The resulting .out
file is a regular
ELF file that can be flashed to
the device or converted into a binary or an Intel Hex file for other purpose,
for instance, over-the-air download. Example for objcopy from the GNU
binutils package:
$ arm-none-eabi-objcopy -S --gap-fill 0xff -O binary rfSynchronizedPacketRx.out rfSynchronizedPacketRx.bin
$ arm-none-eabi-objcopy -S -O ihex rfSynchronizedPacketRx.out rfSynchronizedPacketRx.hex