CC26xx Family SW Quickstart Guide

From Texas Instruments Wiki
Jump to: navigation, search

Introduction

This page intends to give new users of the CC26xx family products an introduction to the different software offerings provided by Texas Instruments.

High level overview

Figure 1 shows the high level overview of the CC26xx software layers. Each layer is described in more detail below.

The protocol stacks and sensor controller library files are displayed with dotted lines as these two software layers are optional (depending on the application and the use case).

For any BLE, Zigbee, RF4CE, or 802.15.4 MAC applications, the protocol stack components are required. Similarly for ultra low power applications using the sensor domain, the sensor controller library files are required.

When downloading a protocol stack SDK, all the underlying software required (cc26xxware, TI-RTOS kernel and peripheral drivers) are included in the installation, so there's no need to download these components separately.

In order to save flash, several of the software components are already present in ROM, freeing up code size for the application.

The CC26xxware driverlib functions and radio protocol stacks will automatically use the ROM functions wherever possible.

In order to use the ROM functions that implements parts of TI-RTOS, please see the TI-RTOS documentation.

CC26xx Software Layers.PNG

                                                        Figure 1, CC26xx software layers



Components

CC26xx HW

At the very bottom of the hierarchy is the actual CC26xx hardware (although it is not a software layer, it is included here for completeness). This layer consists of flash, RAM, ROM, CPUs, and registers that make up the actual CC26xx silicon. The CC26xx has a large number of hardware registers; however we highly recommend that any register or module is accessed indirectly through the protocol stacks, TI-RTOS drivers or the kernel itself. Directly accessing the hardware registers (or calling driverlib functions directly from the application) could interfere with the higher software layers (i.e., TI-RTOS, TI-RTOS drivers, protocol stacks, sensor controller).

The CC26xx hardware is documented extensively in the technical reference manual, found here: SWCU117.pdf

The CC26xx product family consists of:

  • CC2650: A wireless MCU targeting Bluetooth Smart, ZigBee, TIMAC and 6LoWPAN, and ZigBee RF4CE remote control applications.
  • CC2640: A wireless MCU targeting Bluetooth Smart applications.
  • CC2630: A wireless MCU targeting ZigBee, TIMAC and 6LoWPAN applications.

CC26xxware/driverlib

The cc26xxware software package is the base framework for higher SW layers to access the CC26xx hardware. It includes the driverlib software, linker files, startup files, and complete documentation all described in further detail below.

When higher software layers are integrated and running on the platform (TI-RTOS, TI-RTOS drivers, protocol stacks, sensor controller library), we recommend using the respective SW layers API and not calling directly driverlib API.

CC26xxware/driverlib download path

cc26xxware is installed as part of the TI-RTOS installation and is found here:

<TI-RTOS-installation-path/products>

CC26xxware is also available for standalone download here: www.ti.com/tool/cc26xxware

CC26xxware/driverlib versions

The version of the cc26xxware is part of the directory name, and it also indicates what PG version the cc26xxware supports.

The format is the following: 

cc26xxware_M_mm_pp_bbbbb where

  • M is the major revision number.,
  • mm is the minor revision number, and the first m indicates the supported PG versions.
  • 0 = PG2.0 and PG2.1 support
  • 2 = PG2.2 support
  • pp is the patch number.
  • bbbbb is the build number.

Ex: cc26xxware_2_20_06_14829

  • 2, major revision
  • mm 20, minor revision where 2 indicates support for PG2.2
  • pp 06, patch number
  • bbbbb 14829, build number

CC26xxware/driverlib contents

The cc26xxware software package includes the contents and directories shown below in Figure 2.

CC26xxware directory screenshot.PNG

                                                     Figure 2. CC26xxware directory contents

doc

This folder contains the documentation of the driverlib API and register descriptions in an easy to browse HTML format.

driverlib

This folder contains the source and header files that implement the driverlib API. It also contains pre-built driverlib libraries for CCS, IAR, and Keil.

inc

This folder contains hardware abstraction of the CC26xx registers and bit fields that are used together with driverlib.

linker_files

This folder contains linker files for CCS, IAR, and GNU.

startup_files

This folder contains startup files for CCS, IAR, and GCC. Note however that when using TI-RTOS, these startup files should not be used, as the TI-RTOS kernel has it's own startup sequence.

The folder also contains ccfg.c which is the customer configuration file, where the customer can configure such parameters as:

  • Use DC/DC or GLDO to power the CC26xx.
  • Low frequency clock source.
  • Erase/write protect each individual flash pages.

TI-RTOS

The TI-RTOS is a TI-wide real time operating system that includes support for the CC26xx device family.

For further details and to download TI-RTOS, please visit: TI-RTOS

TI-RTOS documentation

The main entry point for the TI-RTOS documentation is the 'docs_overview.html' file which can be found in the installation at:

<TI-RTOS-installation-path/docs/docs_overview.html>

TI-RTOS documentation screenshot.PNG

                                                                    Figure 3, TI-RTOS main documentation page

This file contains links to all the various documentation found within the TI-RTOS installation, including TI-RTOS getting started guide, user guide, and release notes.

There are two components within the TI-RTOS installation that implement key functionality for the CC26xx: the TI-RTOS kernel (SYS/BIOS) and the TI-RTOS peripheral drivers.

TI-RTOS kernel (SYS/BIOS)

The TI-RTOS kernel is a real-time kernel that is designed for applications that require real-time scheduling and synchronization and provides preemptive multi-threading.

For complete documentation of the TI-RTOS kernel, see: <TI-RTOS-installation-path/docs/tirtos_User_Guide.pdf>

CC26xx power management

The CC26xx power management is handled by the TI-RTOS kernel, and detailed information can be found in the CC26xx power management user guide: <TI-RTOS-installation-path/docs/Power_Management_CC26xx.pdf>

The kernel's background task will run whenever there are no other higher level tasks, SWI, or HWIs running. This background task will try to put the CC26xx into the lowest possible power saving mode, while still making sure all requested resources from the application are available.

TI-RTOS implements 4 power saving modes which are described in full detail in the technical reference manual, but are listed here as a quick reference (where the most efficient power mode is listed last):

  • Active mode: CPU is running and all resources including radio is available.
  • Idle mode: CPU is in deep-sleep, but all resources including radio are available. CPU can wake up on any enabled interrupt source.
  • Standby: CPU is in deep-sleep, limited resources are available (radio cannot be used). CPU can wake up from a scheduled clock object, a pin interrupt or by the sensor controller.
  • Shutdown: CC26xx is shutdown, no resources are available (including sensor controller). CPU can only wake up from pin interrupt but device will boot from scratch.

TI-RTOS peripheral drivers

The TI-RTOS bundle also includes a set of peripheral drivers that are written to work specifically with TI-RTOS. These drivers provides a common API across multiple TI platforms which simplifies porting of pre-existing applications from other TI architectures.

TI-RTOS peripheral drivers power management

The drivers are written such that the CC26xx will enter the most efficient power mode while still supporting the resources being used by the application.

Example: If the application initiates a UART write transaction and no other tasks are running, the CC26xx will enter the idle power mode to save current while transmitting the bytes. It will wake up (interrupt driven) from idle periodically to keep supplying bytes to the UART transmit FIFO, however for the majority of the time the CC26xx will remain in idle, thus saving power.

If no UART transaction is in progress, and no tasks are running or ready to run, the device will enter standby to conserve as much power as possible.

All drivers are built around the same principle of conserving power whenever possible, so there is no need to modify the drivers to support power management, it's already part of the current implementation.

Including TI-RTOS peripheral drivers in application

If the application wants to use a driver, the application should either:

  • Include the pre-compiled peripheral driver library found here: <TI-RTOS-installation-path/packages/ti/drivers/lib/drivers_cc26xxware.arm3>
  • Include the peripheral driver source code (header and source files) found here: <TI-RTOS-installation-path/packages/ti/drivers>
TI-RTOS peripheral drivers documentation

The drivers also includes Doxygen format documentation and use-case example code which is found here:
<TI-RTOS-installation-path/docs/doxygen/html/index.html>

Supported TI-RTOS peripheral drivers

The following drivers are currently supported for the CC26xx:

  • UART
  • SPI
  • I2C
  • PIN/GPIO
  • CRYPTO (AES)
  • DMA (only used together with SPI)
  • LCD (builds on top of the SPI driver, to be used with SmartRF06 EB)



Protocol stacks

CC26xx based software offering comes complete with different wireless protocol stacks (BLE, ZigBee, 6LoWPAN, TIMAC, RF4CE) that target various market segments and applications (local and personal connectivity, industrial, building automation and smart home). All connectivity stacks are offered with a complete application example set, flexible APIs, documentation and tools that ease the product design and thus shorten development cycles.

The software stacks run as thread on top of TI-RTOS, separate from the application thread. Product developers can therefore design their applications in a contained and modular way, leverage from this complete SW framework which provides clean interfaces with the respective domain needed (RTOS kernel, RTOS peripheral driver and protocol stack)

BLE stack

When installing the BLE software development kit (SDK), it will also install TI-RTOS and all its software components. In other words, by downloading and installing the BLE SDK one will get all the software components required to build and run BLE applications.

The BLE software is documented in great detail in, please see the links in the useful links section.

ZigBee stack

ZigBee Software Development Kit (SDK) (Z-StackTM) features a fully compliant golden unit ZigBee(R) 2012 stack implementation. It includes extensive application set (for both single SoC as well as dual chip network processor systems), tools and documentation for the designs of products that target the Smart Home space and industrial/retail automation.

Z-StackTM includes TI-RTOS SimpleLink for 26xx package installation and support, which as mentioned before provides access to TI-RTOS SW framework for application development which includes kernel, peripheral drivers and general OS services (timers, memory, tasks).

Z-StackTM includes several documents (quick start guide, user guide, developers guide and API documents) which provide a useful reference for product design. More information can be found in the useful links section below.

The Z-StackTM SDK supports CC26xx development platforms CC2650 Development Kit and CC2650 Sensor Tag Development Kit

6LoWPAN

CC26xx platform is supported on open source Contiki 6LoWPAN code tree. The Contiki repository tree features a a full open source 6LoWPAN stack, which includes IP stack, cloud service infrastructure (or Internet of Things IoT agent), support for most common application layer protocols (MQTT, CoAP, HTTP), a set of applications for both edge routers and peripheral nodes and tools for application development. Please see the links below for more information The 6LoWPAN Contiki stack supports CC26xx development platforms CC2650 Development Kit and CC2650 Sensor Tag Development Kit

Note that the Contiki solution completely replaces the TI-RTOS solution, thus no TI-RTOS components (kernel or peripheral drivers) should be used when using Contiki.

TIMAC

TIMAC Software Development Kit (SDK) features IEEE 802.15.4 compliant stack implementation. It includes sample applications (for both single SoC as well as dual chip network processor systems), and all relevant documentation for the design of wireless star or peer to peer topology network products. TIAMC includes TI-RTOS SimpleLink for 26xx package installation and support, which as mentioned before provides access to TI-RTOS SW framework for application development which includes kernel, peripheral drivers and general OS services (timers, memory, tasks). TIMAC includes several documents (quick start guide, user guide, developers guide and API documents) which provide a useful reference for product design. More information can be found in the useful links section below.

RF4CE stack

RemoTI 2.0 Software Development Kit (SDK) implements the Zigbee(R) RF4CE specification for consumer remote controls. Downloading and installing the RemoTI 2.0 SDK one will get all the software components required to build and run RF4CE applications.

Please see the links in the useful links section.



Sensor Controller Studio

The CC26xx has an ultra low-power sensor controller, which is typically used to interface with external low power sensors.

Sensor controller studio is standalone PC program which is used to configure and generate an image that runs on the sensor controller.

The sensor controller can run autonomously from the system CPU, and will typically wake up the system CPU whenever it has data that needs to be processed.

Figure 4 below is a screenshot of an early version of the sensor controller studio:

Sensor-controller-studio-execution-code-smaller.png

                                               Figure 4. Sensor Controller Studio screenshot

Sensor controller studio documentation

The sensor controller studio includes extensive documentation and quick start guide, provided as part of the installation.

The tool also includes examples on how the sensor controller code interfaces with TI-RTOS through the sensor controller interface - operating system abstraction layer (scif-osal).

The tool also includes a number of example projects such as: ADC logging, light sensor reading, and UART emulation.

  • General documentation is found in this directory: <Sensor-controller-studio-installation-path/docs>
  • Example projects are typically installed in this directory: <C:/Users/your-user/Documents/Texas Instruments/Sensor Controller Studio>

Application

The application is the highest software layer, and typically interfaces with a radio protocol stack, optionally the sensor controller, the TI-RTOS peripheral drivers, and the TI-RTOS kernel.

Please see the TI-RTOS user guide on how to write applications with TI-RTOS, instrumentation, examples, and debugging.

Emulator, IDE support and tools

For a complete overview of the emulators, integrated development environments (IDEs) and tools that support the CC26xx product family please see:

processors.wiki.ti.com/index.php/CC13xx_CC26xx_Tools_Overview

Useful links

CC26xx product links

CC26xxware links

  • Standalone cc26xxware download: www.ti.com/tool/cc26xxware
  • cc26xxware is also included in the TI-RTOS installation: <TI-RTOS-installation-path/products>
  • cc26xxware is also included in the different radio protocol SDKs, since they also install TI-RTOS.

TI-RTOS links

Sensor controller studio links

Radio protocol links

BLE

ZigBee

6LoWPAN

TIMAC

RF4CE

Other links