Changes between Version 1 and Version 2 of expansion/gw16122


Ignore:
Timestamp:
10/30/2017 02:06:08 PM (10 months ago)
Author:
Bobby Jones
Comment:

Converted to wiki markup

Legend:

Unmodified
Added
Removed
Modified
  • expansion/gw16122

    v1 v2  
    1 GW16122 - Mini-PCIe Radio for Internet of Things - IoT
    2 
    3 This card uses the Texas Instruments ​CC1350 MCU.
     1[[PageOutline]]
     2
     3= GW16122 - Mini-PCIe Radio for Internet of Things - IoT =
     4This card uses the Texas Instruments [http://www.ti.com/lsds/ti/wireless-connectivity/multi-standard/simplelink-cc1350/overview.page ​CC1350 MCU].
    45
    56Features Include:
    67
    7 Open Source 802.15.4g
    8 Lowest Power
    9 Sub 1GHz
    10 5.4 mA Radio RX current
    11 13.4 mA Radio TX @ +10 dBm
    12 24.4 mA Radio TX @ +14 dBm
    13 Longest Range
    14 Excellent Receiver Sensitivity –124 dBm Using Long-Range Mode, –110 dBm at 50 kbps (Sub-1 GHz), –87 dBm at Bluetooth low energy
    15 Programmable Output Power up to +14 dBm (Sub-1 GHz) and +9 dBm at 2.4 GHz (Bluetooth low energy)
    16 Small form factor (7x7mm chip size)
    17 Low Bandwidth applications - Sensor Data, etc
    18 Minimal interference - Narrow Bandwidth
    19 Can perform Sigfox TX if required, no RX
     8* Open Source 802.15.4g
     9* Lowest Power
     10* Sub 1GHz
     11 * 5.4 mA Radio RX current
     12 * 13.4 mA Radio TX @ +10 dBm
     13 * 24.4 mA Radio TX @ +14 dBm
     14* Longest Range
     15 * Excellent Receiver Sensitivity –124 dBm Using Long-Range Mode, –110 dBm at 50 kbps (Sub-1 GHz), –87 dBm at Bluetooth low energy
     16 * Programmable Output Power up to +14 dBm (Sub-1 GHz) and +9 dBm at 2.4 GHz (Bluetooth low energy)
     17* Small form factor (7x7mm chip size)
     18* Low Bandwidth applications - Sensor Data, etc
     19* Minimal interference - Narrow Bandwidth
     20* Can perform Sigfox TX if required, no RX
     21
    2022This features two RF Channels:
    2123
    22 Sub 1GHz (USA 915MHz) - Used for long distance communication
    23 Bluetooth 4.2 Low Energy (2.4GHz) - Used for programming sensor nodes
    24 For more information see the TI ​CC1350 Product Page.
    25 
    26 RF Network / Infrastructure
    27 
    28 The GW16122 / CC1350 operates on its own network. It does not rely on towers/networks installed by 3rd party companies (LoRa, Sigfox, Verizon, AT&T, etc). The entire network infrastructure is under control by the user. This includes sensors/nodes, collector(s), antennas and more.
    29 
    30 Network Architecture
     24* Sub 1GHz (USA 915MHz) - Used for long distance communication
     25* Bluetooth 4.2 Low Energy (2.4GHz) - Used for programming sensor nodes
     26
     27For more information see the [http://www.ti.com/product/CC1350 TI ​CC1350 Product Page].
     28
     29== RF Network / Infrastructure ==
     30
     31The GW16122 / CC1350 operates on its own network. It does not rely on towers/networks installed by 3rd party companies (!LoRa, Sigfox, Verizon, AT&T, etc). The entire network infrastructure is under control by the user. This includes sensors/nodes, collector(s), antennas and more.
     32
     33== Network Architecture ==
    3134
    3235The default is a star-based topology system where there is one central collector (The GW16122 on a Gateworks SBC) that listens to all the sensors / nodes that are around it.
    3336
    34 Sensor Limits
     37== Sensor Limits ==
    3538
    3639Number of connected users:
    3740
    38 Support for 50 nodes in network is for the MAC-CoProcessor configuration, where the network employs full MAC level security (AES-128).
     41* Support for 50 nodes in network is for the MAC-!CoProcessor configuration, where the network employs full MAC level security (AES-128).
    3942The Security table can take up all available RAM considering 500 bytes packets so some trade off are possible if the max packet size that must be supported by the application is smaller and the network size can go bigger (probably not reach 1K nodes). The network can scale up to much more nodes if for instance the security is removed at MAC level and deployed at application level (the code is hosted on Linux). The actual network size would be in that case more limited by the traffic profile (ie how frequently data is exchanged).
    4043
    41 Glossary
    42 
    43 BLE - Bluetooth Low Engery
    44 BLE-ADV - Bluetooth Low Energy Advertising
    45 OAD - Over the Air Download
    46 802.15.4 - IEEE standard defining the operation of low-rate wireless personal area networks (LR-WPANs). Definition includes the physical layer and media access control. Can be used with 6LoWPAN. The IEEE 802.15.4 standard is used as a data-link layer of many popular networking standards deployed in the market (6LoWPAN, Wi-SUN, ZigBee?®, Thread and WHART). It guarantees a solid wireless foundation thanks to features like air arbitration (through CSMA-CA), acknowledgments and retransmissions and built-in AES security.
    47 Frequency: North America: 902–928 MHz, up to 30 channels
    48 RTOS - Real Time Operating System
    49 6LoWPAN - Low Power Personal Area Network, allowing for IPv6 packets.
    50 LRM - Long Range Mode
    51 PA/LNA - Power amplifier (PA) for increased output power, and a low-noise amplifier (LNA) with low noise figure for improved receiver sensitivity. This can be used with the ​Ti CC1190 RF Booster / Front End
    52 BLE Modes - advertising, scanning, master, slave. Read more ​here
    53 TI-RTOS - TI-RTOS kernel is a tailored version of the legacy SYS/BIOS kernel and operates as a real-time, preemptive, multi-threaded operating system with drivers, tools for synchronization and scheduling.
    54 TI-15.4 Stack - The TI 15.4-Stack is a software development kit (SDK) running on the SimpleLink?™ Sub-1 GHz CC1310 wireless microcontroller (MCU). Based on the proven IEEE 802.15.4 standard, it implements the 'g' amendment of the specification for operations in North America and Europe in the Sub-1 GHz band (regulated respectively by FCC and ETSI).
    55 LPWAN - Low‑Power Wide‑Area
    56 Contiki - Open Source Operating System
    57 GW16122 Development
    58 Much of the following information is taken from TI documentation which is licensed under ​CC BY NC ND 4.0. This wiki page aims to get users up and runnning with the GW16122 by collating relevant information contained by aforementioned TI sources along with our own annotations.
     44== Glossary ==
     45
     46* BLE - Bluetooth Low Engery
     47* BLE-ADV - Bluetooth Low Energy Advertising
     48* OAD - Over the Air Download
     49* 802.15.4 - IEEE standard defining the operation of low-rate wireless personal area networks (LR-WPANs). Definition includes the physical layer and media access control. Can be used with 6LoWPAN. The IEEE 802.15.4 standard is used as a data-link layer of many popular networking standards deployed in the market (6LoWPAN, Wi-SUN, !ZigBee®, Thread and WHART). It guarantees a solid wireless foundation thanks to features like air arbitration (through CSMA-CA), acknowledgments and retransmissions and built-in AES security.
     50 * Frequency: North America: 902–928 MHz, up to 30 channels
     51* RTOS - Real Time Operating System
     52* 6LoWPAN - Low Power Personal Area Network, allowing for IPv6 packets.
     53* LRM - Long Range Mode
     54* PA/LNA - Power amplifier (PA) for increased output power, and a low-noise amplifier (LNA) with low noise figure for improved receiver sensitivity. This can be used with the [http://www.ti.com/product/CC1190/toolssoftware ​Ti CC1190 RF Booster / Front End]
     55* BLE Modes - advertising, scanning, master, slave. Read more [http://www.eetimes.com/document.asp?doc_id=1278927 ​here]
     56* TI-RTOS - TI-RTOS kernel is a tailored version of the legacy SYS/BIOS kernel and operates as a real-time, preemptive, multi-threaded operating system with drivers, tools for synchronization and scheduling.
     57* TI-15.4 Stack - The TI 15.4-Stack is a software development kit (SDK) running on the !SimpleLink™ Sub-1 GHz CC1310 wireless microcontroller (MCU). Based on the proven IEEE 802.15.4 standard, it implements the 'g' amendment of the specification for operations in North America and Europe in the Sub-1 GHz band (regulated respectively by FCC and ETSI).
     58* LPWAN - Low‑Power Wide‑Area
     59* Contiki - Open Source Operating System
     60
     61= GW16122 Development =
     62Much of the following information is taken from TI documentation which is licensed under ​[http://creativecommons.org/licenses/by-nc-nd/4.0/ CC BY NC ND 4.0]. This wiki page aims to get users up and runnning with the GW16122 by collating relevant information contained by aforementioned TI sources along with our own annotations.
    5963
    6064The subsequent sections detail the information collected by Gateworks related to development with the GW16122. The GW16122 constitutes the following embedded systems:
    6165
    62 TiVa TM4C1294NCPDT MCU - Primarily used to program the CC1350; converts USB signals to UART
    63 CC1350 MCU - The main MCU responsible for taking sensor readings
     66* !TiVa TM4C1294NCPDT MCU - Primarily used to program the CC1350; converts USB signals to UART
     67* CC1350 MCU - The main MCU responsible for taking sensor readings
     68
    6469A pre-made sensor node is provided by Texas Instruments:
    6570
    66 Simplelink CC1350 SensorTag Bluetooth and Sub-1GHz Long Range Wireless
    67 Further information on the TI MCU's and tools utilized in GW16122 development can by found on the ​TI Wiki.
    68 
    69 Set Up
     71* [http://www.ti.com/tool/cc1350stk Simplelink CC1350 SensorTag Bluetooth and Sub-1GHz Long Range Wireless]
     72Further information on the TI MCU's and tools utilized in GW16122 development can by found on the [http://processors.wiki.ti.com/ ​TI Wiki].
     73
     74== Set Up ==
    7075
    7176The following sections detail the steps necessary to set up a development environment for the GW16122. It is assumed that you already have a general understanding of Gateworks products and linux based OS operations.
    7277
    73 Host Tools
    74 
    75 Development can be done on either a Windows or Linux x86 based machine. Various references to Mac OS exist for some tools but were untested by Gateworks. You will need to create a TI account through their ​registration page before downloading some of the software listed here. After creating an account you will still need to sign an agreement on each download indicating its intended use.
    76 
    77 JTAG USB dongle firmware for serial access and programming of Gateworks SBC (​Direct download link)
    78 Remote terminal program, e.g. ​PuTTY for serial connection to Gateworks SBC
    79 ​Code Composer Studio which is an IDE maintained by TI with preinstalled tools and libraries for software development on TI MCU's (​Direct download link)
    80 Don't forget to run the post install script ccsv7/install_scripts/install_drivers.sh
    81 The executable for the IDE is located at ccsv7/eclipse/ccstudio
    82 ​Simple Link CC13X0 SDK from TI's site is available on multiple platforms and contains prebuilt firmware images, example software, and documentation for working with the CC1350
    83 ​SmartRF Flash Programmer for quickly installing prebuilt firmware without code composer studio and especially useful for quickly programming sensor nodes using a GUI (Windows only)
    84 OR
    85 
    86 ​Uniflash Programmer which is a linux compatible alternative that includes both a GUI and command line interfaces
     78=== Host Tools ===
     79
     80Development can be done on either a Windows or Linux x86 based machine. Various references to Mac OS exist for some tools but were untested by Gateworks. You will need to create a TI account through their [http://my.ti.com/ ​registration page] before downloading some of the software listed here. After creating an account you will still need to sign an agreement on each download indicating its intended use.
     81
     821. JTAG USB dongle firmware for serial access and programming of Gateworks SBC ([http://svn.gateworks.com/jtag/windows/CDM20814_Setup.exe ​Direct download link])
     831. Remote terminal program, e.g. [https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html ​PuTTY] for serial connection to Gateworks SBC
     84​1. [http://www.ti.com/tool/CCSTUDIO Code Composer Studio] which is an IDE maintained by TI with preinstalled tools and libraries for software development on TI MCU's ([http://software-dl.ti.com/ccs/esd/CCSv7/CCS_7_3_0/exports/ccs_setup_7.3.0.00019.exe ​Direct download link])
     85  * Don't forget to run the post install script {{{ccsv7/install_scripts/install_drivers.sh}}}
     86  * The executable for the IDE is located at {{{ccsv7/eclipse/ccstudio}}}
     87​1. [http://www.ti.com/tool/download/SIMPLELINK-CC13X0-SDK Simple Link CC13X0 SDK] from TI's site is available on multiple platforms and contains prebuilt firmware images, example software, and documentation for working with the CC1350
     881. [http://www.ti.com/tool/flash-programmer ​SmartRF Flash Programmer] for quickly installing prebuilt firmware without code composer studio and especially useful for quickly programming sensor nodes using a GUI ('''Windows only''')
     89
     90'''OR'''
     91
     92  [http://www.ti.com/tool/uniflash ​Uniflash Programmer] which is a linux compatible alternative that includes both a GUI and command line interfaces
    8793
    8894Some quick commands for installing Uniflash properly on an Ubuntu system:
    8995
     96{{{#!bash
    9097# Get the installer (software version subject to change)
    9198wget --no-check-certificate http://software-dl.ti.com/ccs/esd/uniflash/uniflash_sl.4.2.1490.run
     
    95102chmod +x uniflash_*.run
    96103./uniflash_*.run
    97 Gateworks SBC Tools
    98 
    99 The mechanism controlling the GW16122 will be a Gateworks SBC (testing was done with a GW5404-E.2). The ​Gateworks Ubuntu image is recommended and the instructions will use Ubuntu specific commands.
     104}}}
     105
     106=== Gateworks SBC Tools ===
     107
     108The mechanism controlling the GW16122 will be a Gateworks SBC (testing was done with a GW5404-E.2). The [http://trac.gateworks.com/wiki/ventana/ubuntu ​Gateworks Ubuntu] image is recommended and the instructions will use Ubuntu specific commands.
    100109
    101110Some of the TI example projects make use of the Node.js framework in order to create a web interface to control what is referred to as the "collector" which in our case is the GW16122.
     
    103112Once Ubuntu has been installed and a network connection has been established, complete the following steps to finish initial target configuration:
    104113
    105 Install necessary packages
     1141. Install necessary packages
     115 {{{#!bash
    106116# Always update your package manager information
    107117apt-get update
     
    109119# Install packages for GW16122 development
    110120apt-get install -y build-essential nodejs
    111 Acquire and install TI's 15.4 BLE stack source files from the ​SDK available online
    112 Since TI apparently only offers the SDK installer in the form of an x86 binary (ventana CPU is arm architecture), you will need to download the installer on a compatible linux machine, run it, and repackage the files for transfer
     121}}}
     1221. Acquire and install TI's 15.4 BLE stack source files from the [http://www.ti.com/tool/ti-15.4-stack-gateway-linux-sdk ​SDK] available online
     123 1. Since TI apparently only offers the SDK installer in the form of an x86 binary (ventana CPU is arm architecture), you will need to download the installer on a compatible linux machine, run it, and repackage the files for transfer
     124  {{{#!bash
    113125# ON SEPARATE x86 CPU LINUX MACHINE:
    114126# enable execute permissions on binary downloaded from above link, your file name may be different
     
    118130# package the install files from target directory
    119131tar -czvf ti15-4.tar.gz ti/
    120 Transfer and extract the sdk files to your Gateworks SBC filesystem using your method of choice
     132}}}
     133 1. Transfer and extract the sdk files to your Gateworks SBC filesystem using your method of choice
     134  {{{#!bash
    121135# pull installation file from host pc (networked method)
    122136wget http://remotehost/path/to/ti15-4.tar.gz
    123137# extract the files
    124138tar xzvf ./ti15-4.tar.gz
    125 Software
     139}}}
     140
     141== Software ==
    126142
    127143A quick breakdown of the software running on each piece of hardware in an example network utilizing the GW16122:
    128144
    129 Gateworks SBC
    130 Ubuntu Xenial Gateworks Image
    131 node-js (if using web interface)
    132 serial program (if using serial api)
    133 GW16122 Mini-PCIe Card
    134 TiVa TM4C1294NCPDT MCU
    135 boot_loader.bin - TI boot loader firmware
    136 firmware.bin - XDS110 emulation firmware binary
    137 CC1350 MCU
    138 Co-Processor firmware (.out/.hex) - Either a prebuilt TI example or custom firmware designed with CCS
     145* Gateworks SBC
     146 * Ubuntu Xenial Gateworks Image
     147 * node-js (if using web interface)
     148 * serial program (if using serial api)
     149* GW16122 Mini-PCIe Card
     150 * !TiVa TM4C1294NCPDT MCU
     151  * boot_loader.bin - TI boot loader firmware
     152  * firmware.bin - XDS110 emulation firmware binary
     153 * CC1350 MCU
     154  * Co-Processor firmware (.out/.hex) - Either a prebuilt TI example or custom firmware designed with CCS
     155
    139156The following subsections detail the various software layers developed by TI for use with the CC1350 which is the main MCU in the GW16122 as well as Code Composer Studio and other general notes.
    140157
    141 TI-RTOS RF driver
    142 
    143 The RF core has a dedicated driver called the TI-RTOS RF driver, which is used for all interaction with the RF core. If you do not wish to use the EasyLink abstraction layer, there is also the option to do simple packet RX/TX using the TI-RTOS RF driver directly.
    144 
    145 A reference for the example lab located in the TI resource center, see ​SimpleLink Academy lab Proprietary RF - Basic RX and TX.
    146 
    147 For more information, see the ​CC13X0 Proprietary RF User's Guide.
    148 
    149 EasyLink API
    150 
    151 EasyLink is a simple abstraction layer on top of the RF Driver and is intended as a starting point for customers creating a proprietary Sub1-GHz protocol or application.
    152 
    153 For more information see the ​EasyLink wiki page.
    154 
    155 TI 15.4-Stack
     158=== TI-RTOS RF driver ===
     159
     160The RF core has a dedicated driver called the TI-RTOS RF driver, which is used for all interaction with the RF core. If you do not wish to use the !EasyLink abstraction layer, there is also the option to do simple packet RX/TX using the TI-RTOS RF driver directly.
     161
     162A reference for the example lab located in the TI resource center, see [http://dev.ti.com/tirex/#/?link=Software%2FSimpleLink%20CC13x0%20SDK%2FSimpleLink%20Academy%2FLabs%2FProprietary%20RF%2FBasic%20RX%20and%20TX ​SimpleLink Academy lab Proprietary RF - Basic RX and TX].
     163
     164For more information, see the [http://dev.ti.com/tirex/content/simplelink_cc13x0_sdk_1_00_00_13/docs/proprietary-rf/html/rf-core/rf-driver.html ​CC13X0 Proprietary RF User's Guide].
     165
     166=== !EasyLink API ===
     167
     168!EasyLink is a simple abstraction layer on top of the RF Driver and is intended as a starting point for customers creating a proprietary Sub1-GHz protocol or application.
     169
     170For more information see the [http://processors.wiki.ti.com/index.php/SimpleLink-EasyLink ​EasyLink wiki page].
     171
     172=== TI 15.4-Stack ===
    156173
    157174On the other hand, if you wish to create a full stack-based network solution, consider using the TI 15.4-Stack, available as part of the CC13x0 SDK.
    158175
    159 The example lab documentation to get started can be found at the ​TI 15.4-Stack Project Zero page.
    160 
    161 Further documentation can be found in the ​TI 15.4 User's Guide.
    162 
    163 Texas Instruments Code Composer Studio
     176The example lab documentation to get started can be found at the [http://dev.ti.com/tirex/content/simplelink_academy_cc13x0sdk_1_12_01_16/modules/154-stack_01_sensor_collector/154-stack_01_sensor_collector.html ​TI 15.4-Stack Project Zero] page.
     177
     178Further documentation can be found in the [http://dev.ti.com/tirex/content/simplelink_cc13x0_sdk_1_40_00_10/docs/ti154stack/ti154stack-users-guide/ti154stack/index.html ​TI 15.4 User's Guide].
     179
     180=== Texas Instruments Code Composer Studio ===
    164181
    165182Code Composer Studio (CCS) is an IDE based on Eclipse and includes various libraries and software packages required to develop on many TI MCU's, including the CC1350 which is the primary component of the GW16122.
    166183
    167 Below are some various notes on using CCS. See the ​Getting Started wiki and the ​Main CCS wiki for more information.
    168 
    169 Resource Center
     184Below are some various notes on using CCS. See the [http://processors.wiki.ti.com/index.php/CCSv6_Getting_Started_Guide ​Getting Started wiki] and the [http://processors.wiki.ti.com/index.php/Category:Code_Composer_Studio_v7 ​Main CCS wiki] for more information.
     185
     186==== Resource Center ====
    170187
    171188Click Menu item View -> Resource Explorer
    172 Expand software and view SimpleLink CC13x0 SDK as well as Ti-RTOS for CC2650
     189Expand software and view !SimpleLink CC13x0 SDK as well as Ti-RTOS for CC2650
    173190Drill down to the area you would like to explore
    174191Find an example, then click the download button to download to desktop
    175192Then click the import to IDE to import the project
    176 Building a Project
     193
     194==== Building a Project ====
    177195
    178196Once the project is imported, right click on the project title in the explorer window and click 'Build Project' and let it compile. You can also click the debug button to build the project and run it on the connected target. Once it is complete, a binaries folder will be created under the project. Most TI tools will use the .out file that is produced there to program with.
    179197
    180 Alternatively you can build projects via command line and avoid the entire IDE if you so desire. See the official TI wiki on ​Command Line Build/Create for more information.
     198Alternatively you can build projects via command line and avoid the entire IDE if you so desire. See the official TI wiki on [http://processors.wiki.ti.com/index.php/Projects_-_Command_Line_Build/Create ​Command Line Build/Create] for more information.
    181199
    182200A couple of additional notes when building via command line:
     
    185203Run with "-ccs.help" to see full list of options
    186204Use full path names for all command line arguments (environment variables useful here)
    187 Serial Command API
    188 
    189 The serial command API for the CC1350 is implemented in the form of standard AT+ commands that correlate to EasyLink API functions. This serial control method there has an example project provided by the TI resource center. The web page can be found ​here.
    190 
    191 You can easily test the AT to Easylink api commands by using two GW16122/SensorTag devices running the rfEasyLinkNp and the rfEasyLinkRx examples.
    192 
    193 Serial Format
     205
     206=== Serial Command API ===
     207
     208The serial command API for the CC1350 is implemented in the form of standard AT+ commands that correlate to !EasyLink API functions. This serial control method there has an example project provided by the TI resource center. The web page can be found [http://dev.ti.com/tirex/#/?link=Software%2FSimpleLink%20CC13x0%20SDK%2FSimpleLink%20Academy%2FLabs%2FProprietary%20RF%2FEasyLink%20Network%20Processor%20example&collapsetree= ​here].
     209
     210You can easily test the AT to Easylink api commands by using two GW16122/SensorTag devices running the {{{rfEasyLinkNp}}} and the {{{rfEasyLinkRx}}} examples.
     211
     212==== Serial Format ====
    194213
    195214Parameters offer set and get functionality.
    196215
    197 The format of a parameter read command to get the TxPower parameter is:
     216* The format of a parameter read command to get the !TxPower parameter is:
     217{{{#!bash
    198218 “ATP00?”
    199 The response to a read will be of the format shown below, depending on the parameter it will be hex or decimal:
     219 }}}
     220* The response to a read will be of the format shown below, depending on the parameter it will be hex or decimal:
     221{{{#!bash
    200222 “-10”
    201 The format of an AT command to set the Frequency Parameter to 868MHz is:
     223 }}}
     224* The format of an AT command to set the Frequency Parameter to 868MHz is:
     225{{{#!bash
    202226 “ATPFR=868000000”
    203 The response of a write will be of the format:
     227 }}}
     228* The response of a write will be of the format:
     229{{{#!bash
    204230OK<CR>
     231}}}
     232
    205233The response to the "rx" "RX" (receive) command is of the format:
    206234
    207 For ASCII Data Mode:
     235* For ASCII Data Mode:
     236{{{#!bash
    208237RX: Hello World<CR>
    209238OK<CR>
     
    211240RX: 2fbb1aa8ec84045fb0c3e5236cb8cc5b3c<CR>
    212241OK<CR>
    213 The response to the "rs" "RX" (reset) command is of the format:
    214 
     242}}}
     243
     244* The response to the "rs" "RX" (reset) command is of the format:
     245{{{#!bash
    215246For ASCII Data Mode:
    216247RESET:vxx.xx.xx<CR>
    217 Where vxx.xx.xx is the version number of the EasyLink API
    218 Command List
    219 
    220 The registers exposed for the EasyLink API are:
    221 
    222 Param   R/W     Description     Parameter(s)
    223 ST      R       Read The last EasyLink status returned 
    224 EasyLink status in 0x4B:
    225 
    226 hex<br> Success = 0000
    227 Config_Error = 0001
    228 Param_Error = 0002
    229 Mem_Error = 0003
    230 Cmd_Error = 0004
    231 Tx_Error = 0005
    232 Rx_Error = 0006
    233 Rx_Timeout = 0007
    234 Rx_Buffer_Error = 0008
    235 Busy_Error = 0009
    236 Aborted = 000a
    237 AE      R/W     UART Echo Enable        0 or 1 to enable/disable echo
    238 FR      R/W     Read/Write frequency in kHz     Frequency in 0x1B
    239 PW      R/W     Read/Write tx power in dBm      Power in decimal between -10 to 14dBm. Note cfg changes are required for 14dBm output power
    240 BM      R/W     Read/Write data mode for Tx/Rx data     
    241 Mode in 0x1B
     248Where vxx.xx.xx is the version number of the !EasyLink API
     249}}}
     250
     251==== Command List ====
     252
     253The registers exposed for the !EasyLink API are:
     254
     255||= Param =||= R/W =||= Description =||= Parameter(s) =||
     256||  ST   ||  R  || Read The last !EasyLink status returned |----------------
     257{{{#!td
     258!EasyLink status in {{{0x4B}}}:
     259* hex<br> Success = 0000
     260* Config_Error = 0001
     261* Param_Error = 0002
     262* Mem_Error = 0003
     263* Cmd_Error = 0004
     264* Tx_Error = 0005
     265* Rx_Error = 0006
     266* Rx_Timeout = 0007
     267* Rx_Buffer_Error = 0008
     268* Busy_Error = 0009
     269* Aborted = 000a
     270}}}
     271|----------------
     272||  AE  ||  R/W  || UART Echo Enable  ||  0 or 1 to enable/disable echo ||
     273||  FR  ||  R/W  || !Read/Write frequency in kHz  ||  Frequency in {{{0x1B}}} ||
     274||  PW  ||  R/W  || !Read/Write tx power in dBm  ||  Power in decimal between -10 to 14dBm. Note cfg changes are required for 14dBm output power ||
     275||  BM  ||  R/W  || !Read/Write data mode for !Tx/Rx data |----------------
     276{{{#!td
     277Mode in {{{0x1B}}}
    242278
    2432790:ASCII
    2442801:Binary
    245 IE      R       Read IEEE address       None
    246 AS      R       Read address size in Bytes      None
    247 TS      R/W     Read/Write Tx address   address 0x01-0x8B
    248 RT      R       Read current radio time None
    249 TY      R/W     Read/Write Time Type   
    250 Time in 0x1B
     281}}}
     282|----------------
     283||  IE  ||  R  || Read IEEE address  ||  None ||
     284||  AS  ||  R  || Read address size in Bytes  ||  None ||
     285||  TS  ||  R/W  || !Read/Write Tx address  ||  address {{{0x01}}}-{{{0x8B}}} ||
     286||  RT  ||  R  || Read current radio time  ||  None ||
     287||  TY  ||  R/W  || !Read/Write Time Type |----------------
     288{{{#!td
     289Time in {{{0x1B}}}
    251290
    2522910:Absolute
    2532921:Relative Time
    254 TT      R/W     Absolute or relative (based on Time Type) radio time to Tx a packet     Absolute/relative time in units of 4MHz ticks in decimal OR 0 for immediate
    255 TR      R/W     Absolute or relative (based on Time Type) radio time to Rx a packet     Absolute/relative time in units of 4MHz ticks in decimal OR 0 for immediate
    256 RO      R/W     Relative time for Rx timeout    Relative time in units of 4MHz ticks in decimal OR 0 for never
    257 LA      R       Destination address of last Rx'ed message       None
    258 LT      R       Read absolute radio time of last Rx'ed message  None
    259 LR      R       Read RSSI of last Rx'ed message None
    260 F0      R/W     Read/Write address filter 0     address 0x01-0x8B
    261 F1      R/W     Read/Write address filter 1     address 0x01-0x8B
    262 F2      R/W     Read/Write address filter 2     address 0x01-0x8B
    263 TM      R/W     Read/Write test mode   
    264 Test mode in 0x1B:
    265 
    266 0:None/Cancel
    267 1:Tone/Carrier Wave
     293}}}
     294|----------------
     295||  TT  ||  R/W  || Absolute or relative (based on Time Type) radio time to Tx a packet  ||  Absolute/relative time in units of 4MHz ticks in decimal OR 0 for immediate ||
     296||  TR  ||  R/W  || Absolute or relative (based on Time Type) radio time to Rx a packet  ||  Absolute/relative time in units of 4MHz ticks in decimal OR 0 for immediate ||
     297||  RO  ||  R/W  || Relative time for Rx timeout  ||  Relative time in units of 4MHz ticks in decimal OR 0 for never ||
     298||  LA  ||  R  || Destination address of last Rx'ed message  ||  None ||
     299||  LT  ||  R  || Read absolute radio time of last Rx'ed message  ||  None ||
     300||  LR  ||  R  || Read RSSI of last Rx'ed message  ||  None ||
     301||  F0  ||  R/W  || !Read/Write address filter 0  ||  address {{{0x01}}}-{{{0x8B}}} ||
     302||  F1  ||  R/W  || !Read/Write address filter 1  ||  address {{{0x01}}}-{{{0x8B}}} ||
     303||  F2  ||  R/W  || !Read/Write address filter 2  ||  address {{{0x01}}}-{{{0x8B}}} ||
     304||  TM  ||  R/W  || !Read/Write test mode |----------------
     305{{{#!td
     306Test mode in {{{0x1B}}}:
     307
     3080:!None/Cancel
     3091:!Tone/Carrier Wave
    2683102:Modulated Signal
    2693113:PER Tx
    2703124:PER Rx
    271 PI      R/W     Read/Write PER Tx bursts interval       0x1B time between PER bursts in units of ms
    272 PB      R/W     Read/Write PER Tx burst size    0x1B Tx Burst Size in hex
    273 PP      R/W     Read/Write number of PER Tx/Rx packets  0x1B Tx/Rx Packets in hex
    274 PL      R/W     Read/Write PER Tx/Rx packet length      0x1B Tx/Rx Packet Length in hex
    275 GM00-03 R/W     Read/Write GPIO Mode    0:1 GPIO Value input/output
    276 GV00-03 R/W     Read/Write GPIO Value   0:1 GPIO Value
     313}}}
     314|----------------
     315||  PI  ||  R/W  || !Read/Write PER Tx bursts interval  ||  {{{0x1B}}} time between PER bursts in units of ms ||
     316||  PB  ||  R/W  || !Read/Write PER Tx burst size  ||  {{{0x1B}}} Tx Burst Size in hex ||
     317||  PP  ||  R/W  || !Read/Write number of PER !Tx/Rx packets  ||  {{{0x1B}}} !Tx/Rx Packets in hex ||
     318||  PL  ||  R/W  || !Read/Write PER !Tx/Rx packet length  ||  {{{0x1B}}} !Tx/Rx Packet Length in hex ||
     319||  GM00-03  ||  R/W  || !Read/Write GPIO Mode  ||  0:1 GPIO Value input/output ||
     320||  GV00-03  ||  R/W  || !Read/Write GPIO Value  ||  0:1 GPIO Value ||
     321
    277322Command Responses Response for Register Write and Control Commands are formatted as:
    278323
    279 Response        Description
    280 OK<CR>  Command or Register write successful
    281 Error 0001<CR>  Command or register read/write failed due to bad formatting
    282 Error 0002<CR>  Command or register read/write failed due to bad length
    283 Error 0003<CR>  Command or register write failed due to a parameter Error
    284 Error 0004<CR>  Command or register write failed due to a Memory Error
    285 Error 0005<CR>  Command or register write failed due to Error From EasyLink API (EasyLink error is stored in Parameter "ST")
     324||= Response =||= Description =||
     325||  OK<CR>  || Command or Register write successful ||
     326||  Error 0001<CR>  || Command or register read/write failed due to bad formatting ||
     327||  Error 0002<CR>  || Command or register read/write failed due to bad length ||
     328||  Error 0003<CR>  || Command or register write failed due to a parameter Error ||
     329||  Error 0004<CR>  || Command or register write failed due to a Memory Error ||
     330||  Error 0005<CR>  || Command or register write failed due to Error From !EasyLink API (!EasyLink error is stored in Parameter "ST") ||
     331
    286332Sample app to interface with 16122 running this software (link to it under software example section)
    287333
    288 For further documentation on this serial implementation see the official ​TI wiki page.
    289 
    290 General Notes
    291 
    292 The XDS110 USB debugger referenced by material related to the CC1350 or in CCS is equivalent to the TiVa chip that's on the GW16122
    293 Make sure the GW16122 is properly into the miniPcie->USB adapter board otherwise it will come up as a usb device but fail to be recognized by the code composer software. You can check if its connected properly by opening the .ccxml file under the projects targetConfigs folder and hitting the "test connection" button. If multiple boards are connected at once you will need to specify them by serial number.
    294 The US frequency allows for a total of 129 channels to choose from, defined in CONFIG_CHANNEL_MASK
    295 You can prevent conflicts of sensor networks by either limiting the channels enabled on each collector/sensor, or by setting the PAN-ID to match on the devices belonging to each network.
    296 Beware of adding too many channels to your channel mask, for example, adding all of them took well over 20 minutes to complete the channel selection cycle and bring up the network.
    297 Line of sight is extremely significant. Depending on the material, a few obstacles can drastically reduce your maximum range.
    298 General RF information and specific information regarding antenna choice and performance can be found in this ​app note.
    299 Programming the Tiva MCU
    300 
    301 In the event of an unprogrammed or corrupted TiVa MCU, you can flash firmware via USB connection. For the GW16122 this is done via a mini-PCIe to USB converter such as our GW16115.
    302 
    303 You will need to have installed the software detailed in the Set Up section in order to continue.
    304 
    305 Since the TiVa MCU functions as an XDS110 debug probe for the GW16122, you can use the default firmware included in the Code Composer Studio installation directory.
    306 
    307 To flash the bootloader and/or firmware via USB:
    308 
    309 Navigate to your Code Composer installation directory
    310 Enter the XDS110 folder in ccs
     334For further documentation on this serial implementation see the official [http://processors.wiki.ti.com/index.php/SimpleLink-EasyLink#rfEasyLinkNp_AT_Network_Processor_Example ​TI wiki page].
     335
     336=== General Notes ===
     337
     338* The XDS110 USB debugger referenced by material related to the CC1350 or in CCS is equivalent to the !TiVa chip that's on the GW16122
     339* Make sure the GW16122 is properly into the miniPcie->USB adapter board otherwise it will come up as a usb device but fail to be recognized by the code composer software. You can check if its connected properly by opening the {{{.ccxml}}} file under the projects targetConfigs folder and hitting the "test connection" button. If multiple boards are connected at once you will * need to specify them by serial number.
     340* The US frequency allows for a total of 129 channels to choose from, defined in {{{CONFIG_CHANNEL_MASK}}}
     341You can prevent conflicts of sensor networks by either limiting the channels enabled on each collector/sensor, or by setting the PAN-ID to match on the devices belonging to each * network.
     342* Beware of adding too many channels to your channel mask, for example, adding all of them took well over 20 minutes to complete the channel selection cycle and bring up the network.
     343* Line of sight is extremely significant. Depending on the material, a few obstacles can drastically reduce your maximum range.
     344* General RF information and specific information regarding antenna choice and performance can be found in this [http://www.ti.com/lit/an/swra161b/swra161b.pdf ​app note].
     345
     346== Programming the Tiva MCU ==
     347
     348In the event of an unprogrammed or corrupted !TiVa MCU, you can flash firmware via USB connection. For the GW16122 this is done via a mini-PCIe to USB converter such as our GW16115.
     349
     350You will need to have installed the software detailed in the [wiki:expansion/gw16122#SetUp Set Up] section in order to continue.
     351
     352Since the !TiVa MCU functions as an XDS110 debug probe for the GW16122, you can use the default firmware included in the Code Composer Studio installation directory.
     353
     354To flash the bootloader and/or firmware via '''USB''':
     355
     3561. Navigate to your Code Composer installation directory
     3571. Enter the XDS110 folder in ccs
     358{{{#!bash
    311359cd ccsv7/ccs_base/common/uscif/xds110/
    312 Connect a single GW16122 to your host machine via USB port. If more than one are connected the xdsfu program will operate on the first device it finds.
     360}}}
     3611. Connect a single GW16122 to your host machine via USB port. If more than one are connected the {{{xdsfu}}} program will operate on the first device it finds.
     362{{{#!bash
    313363xdsdfu -e
     364}}}
    314365If no device is found, check your connections and cables, if no usb device enumerates you will need to flash your firmware via JTAG.
    315 Once a device is enumerated, flash the default XDS110 bootloader and firmware
     3661. Once a device is enumerated, flash the default XDS110 bootloader and firmware
     367{{{#!bash
    316368xdsdfu -m
    317369xdsdfu -b bootloader.bin -r
    318370xdsdfu -m
    319371xdsdfu -f firmware.bin -r
    320 Alternatively, to flash the bootloader and/or firmware via JTAG:
    321 
    322 Connect an external XDS110 debug probe to your host machine via USB, and to the GW16122 via 10-pin JTAG connector (designator J4)
    323 Run the Uniflash gui application
    324 Select target device of TiVa > TM4C1294NCPDT
    325 Select connection of XDS110 Debug Probe
    326 Click "Start"
    327 Select the boot_loader.bin and firmware.bin files from the ccsv7/ccs_base/common/uscif/xds110/ directory (click the plus sign to flash multiple files) and enter load addresses of 0x0000 and 0x4000 respectively
    328 Click "Load Image"
     372}}}
     373Alternatively, to flash the bootloader and/or firmware via '''JTAG''':
     374
     3751. Connect an external XDS110 debug probe to your host machine via USB, and to the GW16122 via 10-pin JTAG connector (designator J4)
     3761. Run the Uniflash gui application
     3771. Select target device of {{{TiVa > TM4C1294NCPDT}}}
     3781. Select connection of {{{XDS110 Debug Probe}}}
     3791. Click "Start"
     3801. Select the {{{boot_loader.bin}}} and {{{firmware.bin}}} files from the {{{ccsv7/ccs_base/common/uscif/xds110/}}} directory (click the plus sign to flash multiple files) and enter load addresses of {{{0x0000}}} and {{{0x4000}}} respectively
     3811. Click "Load Image"
     382
    329383If you run into trouble using uniflash to load both the bootloader and firmware, just flash the bootloader and use the above USB method to flash the firmware.
    330384
    331 A properly flashed TiVa MCU should now enumerate as a XDS110 debug probe which is required to program the connected CC1350.
    332 
     385A properly flashed !TiVa MCU should now enumerate as a XDS110 debug probe which is required to program the connected CC1350.
     386{{{#!bash
    333387# lsusb entry:
    334388Bus XXX Device XXX: ID 0451:bef3 Texas Instruments, Inc.
     
    339393Version:       2.3.0.9
    340394Manufacturer:  Texas Instruments
    341 More information can be found on the xdsdfu tool via the ReadMe.txt in the same directory. Also refer to the XDS110 User Guide linked in the References section.
    342 
    343 Programming the CC1350
     395}}}
     396
     397More information can be found on the {{{xdsdfu}}} tool via the {{{ReadMe.txt}}} in the same directory. Also refer to the XDS110 User Guide linked in the [wiki:expansion/gw16122#References References] section.
     398
     399== Programming the CC1350 ==
    344400
    345401The CC1350 of the GW16122 can be programmed a number of ways depending on your host machine. Gateworks has tested both Windows (SmartRF Flash Programmer) and Linux (Uniflash) tools but specific instructions will be provided from the Linux perspective.
    346402
    347 You will need to have installed the software detailed in the Set Up section in order to continue.
     403You will need to have installed the software detailed in the [wiki:expansion/gw16122#SetUp Set Up] section in order to continue.
    348404
    349405The Uniflash tool is linux compatible and has both a gui and command line interface. The gui program has an autodetect feature and is somewhat easier to use but the command line tool has the same functionality and is better suited for repeated tasks with constant configurations.
    350406
    351 Note that there doesn't appear to be a way to update the firmware on a running ARM based target. All of the methods we used to program the TiVa and CC1350 MCU's from a x86 host are not compatible with an ARM based system. This means that users will not be able to update firmware on running boards.
    352 GUI Approach
    353 
    354 Connect a single GW16122 to the host machine via mini-PCIe to USB adapter.
    355 Open the "Uniflash" application through a gui file manager from the uniflash_4.2 install directory, or via command line:
     407* Note that there doesn't appear to be a way to update the firmware on a running ARM based target. All of the methods we used to program the !TiVa and CC1350 MCU's from a x86 host are not compatible with an ARM based system. This means that users will not be able to update firmware on running boards.
     408
     409=== GUI Approach ===
     410
     4111. Connect a single GW16122 to the host machine via mini-PCIe to USB adapter.
     4121. Open the "Uniflash" application through a gui file manager from the uniflash_4.2 install directory, or via command line:
     413{{{#!bash
    356414./uniflash_4.2/node-webkit/nw
    357 Select target device of CC1350F128
    358 Select connection of Texas Instruments XDS110 USB Debug Probe
    359 Click the "Start" button
    360 In the Program tab, select the firmware file you wish to load. This is typically a .out file created via a Code Composer Studio Project and can be found in your workspace directory (default ~/workspace_v7/)
    361 Click the "Load Image" and "Verify Image" buttons and see the text console output on the bottom of the window for a green success message
     415}}}
     4161. Select target device of CC1350F128
     4171. Select connection of Texas Instruments XDS110 USB Debug Probe
     4181. Click the "Start" button
     419In the Program tab, select the firmware file you wish to load. This is typically a .out file created via a Code Composer Studio Project and can be found in your workspace directory (default {{{~/workspace_v7/}}})
     4201. Click the "Load Image" and "Verify Image" buttons and see the text console output on the bottom of the window for a green success message
     421
    362422It should also be mentioned that you can program your GW16122 directly from the Code Composer Studio IDE by creating a proper target configuration and then selecting "Debug". Most of the TI example projects will detail this procedure.
    363423
    364424At this point you may want to power cycle your device.
    365425
    366 Command Line Approach
    367 
    368 Navigate to your uniflash install directory
     426=== Command Line Approach ===
     427
     4281. Navigate to your uniflash install directory
     429{{{#!bash
    369430cd uniflash_4.2
    370 Run the installer providing a configuration and .out file as arguments, for example:
     431}}}
     432
     4331. Run the installer providing a configuration and .out file as arguments, for example:
     434{{{#!bash
    371435./dslite.sh --config=CC1350F128.ccxml ~/workspace_v7/collector_cc1350lp/collector_cc1350lp/collector_cc1350lp.out
    372 The CC1350F128.ccxml file can be created via the uniflash gui or Code Composer Studio IDE. The contents of the file are provided in the collapsible text below for convenience.
    373 
    374 CC1350F128.ccxml
    375 
     436}}}
     437The {{{CC1350F128.ccxml}}} file can be created via the uniflash gui or Code Composer Studio IDE. The contents of the file are provided in the collapsible text below for convenience.
     438
     439
     440[[CollapsibleStart(CC1350F128.ccxml)]]
     441{{{#!xml
    376442<?xml version="1.0" encoding="UTF-8" standalone="no"?>
    377443<configurations XML_version="1.2" id="configurations_0">
     
    379445        <instance XML_version="1.2" desc="Texas Instruments XDS110 USB Debug Probe" href="connections/TIXDS110_Connection.xml" id="Texas Instruments XDS110 USB Debug Probe" xml="TIXDS110_Connection.xml" xmlpath="connections"/>
    380446        <connection XML_version="1.2" id="Texas Instruments XDS110 USB Debug Probe">
    381                
     447
    382448                           <instance XML_version="1.2" href="drivers/tixds510icepick_c.xml" id="drivers" xml="tixds510icepick_c.xml" xmlpath="drivers"/>
    383                
     449
    384450                           <instance XML_version="1.2" href="drivers/tixds510cs_dap.xml" id="drivers" xml="tixds510cs_dap.xml" xmlpath="drivers"/>
    385                
     451
    386452                           <instance XML_version="1.2" href="drivers/tixds510cortexM.xml" id="drivers" xml="tixds510cortexM.xml" xmlpath="drivers"/>
    387                
    388            
     453
     454
    389455                  <property Type="choicelist" Value="4" id="SWD Mode Settings">
    390456            <choice Name="cJTAG (1149.7) 2-pin advanced modes" value="enable">
     
    392458            </choice>
    393459        </property>
    394            
     460
    395461                  <property Type="choicelist" Value="1" id="Power Selection">
    396462            <choice Name="Probe supplied power" value="1">
     
    405471            </choice>
    406472        </property>
    407            
     473
    408474                  <property Type="choicelist" Value="0" id="JTAG Signal Isolation"/>
    409            
     475
    410476            <platform XML_version="1.2" id="platform_0">
    411477                <instance XML_version="1.2" desc="CC1350F128" href="devices/cc1350f128.xml" id="CC1350F128" xml="cc1350f128.xml" xmlpath="devices"/>
     
    414480    </configuration>
    415481</configurations>
    416  
    417 References
    418 ​CC1350 Wiki
    419 ​CC1350 Bluetooth Software for use with iPhone App
    420 ​Launch Pad Landing Page on Ti
    421 ​Ti Information regarding Contiki
    422 ​XDS110 User Guide
    423 ​TI 15.4-Stack - Linux Gateway Project Zero App Note
    424 ​TI Sub-1GHz E2E Forum
     482}}}
     483[[CollapsibleEnd]]
     484== References ==
     485* [http://dev.ti.com/tirex/#/?link=Software%2FSimpleLink%20CC13x0%20SDK ​CC1350 Wiki]
     486* [http://dev.ti.com/tirex/content/simplelink_academy_cc13x0sdk_1_12_01_16/modules/prop_04_cc1350lpdm/resources/CC1350LaunchPad_BLE_All_v1_00.hex ​CC1350 Bluetooth Software for use with iPhone App]
     487* [http://dev.ti.com/tirex/content/tirtos_cc13xx_cc26xx_2_20_00_06/resources/cc1350LaunchPad/project0/landing_page_index.html ​Launch Pad Landing Page on Ti]
     488* [http://processors.wiki.ti.com/index.php/Contiki-6LOWPAN ​Ti Information regarding Contiki]
     489* [http://www.ti.com/lit/ug/sprui94/sprui94.pdf ​XDS110 User Guide]
     490* [http://dev.ti.com/tirex/content/simplelink_academy_cc13x0sdk_1_13_01_05/modules/154-stack_03_linux_project_0/154-stack_03_linux_project_0.html ​TI 15.4-Stack - Linux Gateway Project Zero App Note]
     491* [http://e2e.ti.com/support/wireless_connectivity/proprietary_sub_1_ghz_simpliciti/ ​TI Sub-1GHz E2E Forum]