.. _cc2650_sensortag:

CC2650 SensorTag
################

Overview
********

The SimpleLink CC2650 SensorTag is a Texas Instruments board based
on the CC2650 wireless MCU. It contains multiple sensors and provides
Bluetooth and IEEE 802.15.4 connectivity.

.. image:: img/sensortag.jpg
  :width:  600px
  :height: 600px
  :align:  center
  :alt:    TI SensorTag v2

Features
========

* CC2650 low-power wireless MCU: Bluetooth + IEEE 802.15.4 connectivity
* Autonomous low-power sensor controller
* Autonomous radio controller
* Program, debug, and serial line through "DevPack" JTAG probe's USB port
* Power from DevPack USB or batteries
* 2 buttons and 2 LEDs for user interaction

Hardware
********

The SensorTag board provides the following hardware:

* CC2650 SoC in RGZ (7x7mm) 48 pins format package
* Programmable Cortex-M3 CPU, clocked at 48MHz
* Proprietary sensor controller
        * 12-bit ADC, 200ks/s
        * 2 comparators
        * SPI + I2C digital interfaces for sensors
        * Programmable with register-based interface
* Cortex-M0 "RF Core" radio controller
        * 4KB of dedicated SRAM
        * Single transceiver, with modem and frequency synthesizer
        * Programmable with register-based interface
* 128KB flash
* 20KB SRAM
* 8KB cache
* SPI
* I2C
* I2S
* UART
* 31 GPIOs
* 4 32-bit timers
* True Random Number Generator
* Real Time Clock
* Watchdog timer
* 32 channels DMA controller
* 10 sensors: ambient light, digital microphone, magnetic sensor, humidity,
  pressure, accelerometer, gyroscope, magnetometer, object temperature and
  ambient temperature

Supported features
==================

The following SensorTag features are currently supported:

+-----------+------------+------------------------------------+
| Interface | Controller | Driver/Component                   |
+===========+============+====================================+
| NVIC      | on-chip    | Nested Vector Interrupt Controller |
+-----------+------------+------------------------------------+
| UART      | on-chip    | serial port polling                |
+-----------+------------+------------------------------------+
| GPIO      | on-chip    | gpio                               |
+-----------+------------+------------------------------------+
| PINMUX    | on-chip    | pinmux                             |
+-----------+------------+------------------------------------+

Connections and IOs
===================

The SensorTag has one GPIO controller, along with a flexible pin
multiplexer. In practice, the pins are routed as described in
:file:`boards/arm/cc2650_sensortag/board.h`; the most commonly used being:

+----------------+---------------+----------------------+
| Physical pin # | Digital I/O # | Signal               |
+================+===============+======================+
| 5              | DIO_0         | BUTTON_2 (right)     |
+----------------+---------------+----------------------+
| 9              | DIO_4         | BUTTON_1 (left)      |
+----------------+---------------+----------------------+
| 10             | DIO_5         | SDA                  |
+----------------+---------------+----------------------+
| 11             | DIO_6         | SCL                  |
+----------------+---------------+----------------------+
| 16             | DIO_10        | LED_1 (red)          |
+----------------+---------------+----------------------+
| 21             | DIO_15        | LED_2 (green)        |
+----------------+---------------+----------------------+
| 27             | DIO_17        | SCLK                 |
+----------------+---------------+----------------------+
| 28             | DIO_18        | MISO                 |
+----------------+---------------+----------------------+
| 29             | DIO_19        | MOSI                 |
+----------------+---------------+----------------------+
| 31             | DIO_21        | BUZZER               |
+----------------+---------------+----------------------+
| 41             | DIO_28        | UART_RX              |
+----------------+---------------+----------------------+
| 42             | DIO_29        | UART_TX              |
+----------------+---------------+----------------------+

System Clock
============

The CC2650 clocks its Cortex-M3 CPU through a 48MHz internal oscillator
by default. 2 system clocks, a high-frequency one and a low-frequency one,
are available to clock the CPU and the peripherals.
Available clock sources for them are:

* 48MHz internal oscillator
* 24MHz internal oscillator
* 32KHz internal oscillator
* 32.768KHz external oscillator

Programming and debugging
*************************

The ROM in the CC2650 contains a proprietary bootloader, executed
before the program stored on flash. The bootloader looks at a special
configuration area expected to be written at the end of flash, the
CCFG ("Customer Configuration" area). A 32-bit word in this area,
*IMAGE_VALID_CONF*, needs to be 0 in order for the bootloader to actually
pass control to your program. You can find more information on the CCFG
in the `CC2650 reference manual`_, section 9.1. The current CC2650 port
for Zephyr already does this by default; if you wish to check or modify
the CCFG content, see :file:`arch/arm/soc/ti_simplelink/cc2650/soc.c`.

Building
========

Building does not require anything more than Zephyr already provides.
To build your current configuration and code:

.. code-block:: console

  $ make BOARD=cc2650_sensortag

Flashing
========

The CC2650 SensorTag can be flashed using a XDS110 JTAG device, the "DevPack",
designed to plug on it. For now, flashing with it is not supported
within Zephyr. However, you can use Uniflash, a TI proprietary tool, to do
the job for now.

.. note::
  Uniflash comes with some firmware for the "DevPeck" XDS110 JTAG probe.
  Different versions of Uniflash may have different firmware version.
  Currently, the most stable version is the 3.4. You should be able
  to grab it here:
  http://processors.wiki.ti.com/index.php/CCS_UniFlash_v3.4.1_Release_Notes

To update the "DevPack", reach the installation path of Uniflash 3.4,
then to the :file:`ccs_base/common/uscif/xds110/` subdirectory.
Then follow the :file:`ReadMe.txt`'s instructions:

.. code-block:: console

  $ ./xdsdfu -m
  $ ./xdsdfu -f firmware.bin -r

The green LED of the "DevPack" should blink repeatedly during the
operation, then light up again upon completion.

Debugging
=========

Debugging can be done with OpenOCD 0.10, which is currently not supported
by the latest Zephyr SDK version. A basic configuration file for the
SensorTag board would be:

.. code-block:: console

  source [find interface/cmsis-dap.cfg]
  transport select jtag
  gdb_memory_map enable
  gdb_flash_program enable
  source [find target/cc26xx.cfg]
  adapter_khz 5000

Copy this in a file named ``ti-sensortag.cfg``, located in the
:file:`scripts/board` subdirectory of your local OpenOCD installation path.
When you wish to launch the OpenOCD server, just type:

.. code-block:: console

  $ openocd -f board/ti-sensortag.cfg

References
**********

TI CC2650 datasheet:
  http://www.ti.com/lit/ds/symlink/cc2650.pdf

CC2650 reference manual:
  http://www.ti.com/lit/ug/swcu117g/swcu117g.pdf

Uniflash 3.4 release notes:
  http://processors.wiki.ti.com/index.php/CCS_UniFlash_v3.4.1_Release_Notes

.. _CC2650 reference manual:
  http://www.ti.com/lit/ug/swcu117g/swcu117g.pdf
