CC2640R2F/CC2640/CC2650 Getting Started and FAQ [u: 2017 Jul 27]

Welcome to the next generation SimpleLink™ CC26xx and CC13xx ARM® Cortex®-M3 based Bluetooth® low energy (BLE) System-on-Chip (SoC) devices from TI supporting Bluetooth version 4.2 and now Bluetooth 5!

New to BLE or want more information about TI's BLE solutions? Please see www.ti.com/ble

This Guide and FAQ post will contain a list of the most common questions regarding the SimpleLink™ Bluetooth low energy ultra-low power CC2640R2F and CC2640/CC2650 wireless microcontrollers (MCUs), development kits and the BLE-Stack Software Development Kit (SDK). A troubleshooting section is provided below to help address common solutions.

This guide is organized based on the sections listed below:

Getting Started: Selecting a development kit and understanding the BLE protocol
CC2640R2F - Information about the new SimpleLink BLE wireless MCU supporting more available flash memory and Bluetooth 5
Troubleshooting - Common issues and solution

Getting started

Q: What do I need to get started?

A: You need a development kit depending on the wireless MCU you intend to use. Please select one of the following:

For CC2640R2F designs needing up to 80kB of available flash for Bluetooth 4.2 LE peripheral applications or Bluetooth 5 High Speed support:

1) CC2640R2 LaunchPad™ (LAUNCHXL-CC2640R2). The new CC2640R2 LaunchPad supporting Bluetooth 5 is TI's recommended complete BLE embedded development kit for $29 offering an on board XDS110 debugger, a Bluetooth low energy CC2640R2F System on a Chip (SoC) wireless MCU in a 7x7 QFN package and access to GPIOs via the BoosterPack™ expansion connectors. New to LaunchPad? Check out the main site with more LaunchPad ecosystem details. This is the most economical development kit to prototype your embedded Bluetooth low energy system, develop software, measure power. The LaunchPad is the primary development kit for embedded BLE applications and is recommended by TI for starting your embedded (single-device) development.

For CC2650 / CC2640 designs with up to 40kB of flash memory for Bluetooth 4.2 applications:

1) CC2650 LaunchPad (LAUNCHXL-CC2650). The CC2650 LaunchPad is a complete BLE embedded development kit for $29 offering an on board XDS110 debugger, a multi-standard CC2650 System on a Chip (SoC) in the 7x7 QFN package and access to GPIOs via the BoosterPack connectors. New to LaunchPad? Check out the main site with more LaunchPad ecosystem details. This is the most economical development kit to prototype your embedded Bluetooth low energy system, develop software, measure power. The LaunchPad is the primary development kit for embedded BLE applications and is recommended by TI for starting your embedded (single-device) development.

2) CC2650 SensorTag (CC2650STK) + the XDS110 DevPack Debugger (CC-DEVPACK-DEBUG) development kit (bundle TI eStore price $44). This is the best platform for IoT application development as the SensorTag has 10 sensors (motion, temperature, humidity, etc.) and runs off a coin cell battery. See how the SensorTag be used to accelerate your IoT development here.

3) CC2650 Module BoosterPack (BOOSTXL-CC2650MA) development kit featuring the CC2650 Module from TI (CC2650MODA). This BoosterPack is the easiest way to develop wireless network processor BLE applications and prototype in the LaunchPad ecosystem. See the Simple Network Processor SimpleLink Academy module showing how to get started with BLE network processor development on the BoosterPack. Just want to do single-chip BLE development with the module? Although we recommend doing single-device BLE development on the LaunchPad, we've included 10-pin JTAG cable to connect with a supported XDS100v3 or XDS110 debugger (see details below) to program/debug the module BoosterPack. Other 3rd party CC2640 module options are available, see the TI BLE Wiki for details.

4) CC2650 Remote Control (CC2650RC) development kit. With the CC2650RC-BLEDEV BLE development bundle, evaluate TI's Voice over BLE (VoBLE) solution on a form-factor remote control using a PC. More details on the main Remote Control page including a quick start user guide.

5) CC2650 SmartRF06 Development Kit (CC2650DK). A full development kit featuring two SmartRF06EBK development boards, two CC2650EMs (7x7), an integrated LCD and support for accessing all IOs. All CC2650 QFN package reference designs can be evaluated by changing the CC2650EM evaluation module.

Next, you'll need some software. Good news, it's free!

Bluetooth low energy Software Development Kit

Download the Bluetooth low energy software stack based on the selected device:

Device Software
CC2640R2F

SIMPLELINK-CC2640R2-SDK

CC2650/CC2640/CC1350 BLE-Stack v2.2.1

The SDK includes the TI-RTOS, drivers, sample applications and the royalty-free BLE protocol stack. Refer to included release notes for instructions for setting up and building the sample applications in the SDK. These SDKs support project development with Code Composer Studio™ (CCS) and IAR Embedded Workbench for ARM. Refer to the release notes for required IDE and toolchain versions.

Additional example projects & advanced demonstrations can be found on the TI SimpleLink GitHub page

Some kits have dedicated SW examples:

Project Zero

Project Zero is the primary example for the for the Bluetooth low energy LaunchPads and demonstrates a custom BLE peripheral device. Develop your first Bluetooth LE application and control the LaunchPad's LEDs, send character strings and monitor button presses with your iOS or Android app with Project Zero. These operations represent some of the most common functions used in BLE devices. Project Zero is available in SimpleLink Academy, a module based learning format that covers topics from getting started to advanced BLE development. See how to send simple strings of data to/from a smart phone and perform tasks over BLE such as for controlling a sensor or developing your own custom service.

  • For CC2640R2F (LAUNCHXL-CC2640R2), SimpleLink Academy is available at www.ti.com/simplelinkacademy and can be built in CCS Cloud™ as well as supported CCS desktop installations using the Resource Explorer.
  • For CC2650 / CC2640, Project Zero is included with SimpleLink Academy as an add-on download to the BLE-Stack SDK. This version requires Desktop CCS installation and supports the CC2650 LaunchPad (LAUNCHXL-CC2650) as well as the CC2650 SensorTag + DevPack Debugger. Use of SimpleLink Academy and Project Zero for this platform is via the Resource Explorer Classic in the Desktop CCS installation only. Refer to the detailed setup and installation instructions on the download page.

See the getting started video for Project Zero and SimpleLink Academy

Additional Resources

Develop your own application on any development kit: Start with the simple_peripheral example in the SW Developer's Guide to gain an understanding of Bluetooth LE and the TI BLE SW Stack. TI BLE Wiki. Use the "Sample Applications" section of the BLE Software Developer’s Guide (SWRU393), TI Designs & CC2640 Examples on the TI BLE Wiki to create your Bluetooth low energy application!

All of the kits, training & sample application can be found on the TI BLE Wiki.

A CC26xx Family SW Quick Start Guide can be found here.

 
Q: Where do I learn more about the Bluetooth low energy specification, profiles, Notifications, Pairing, etc?

A: There is a good intro to Bluetooth LE in the CC2640 BLE Software Developer’s Guide (SWRU393). You can download the BT Core Specification for free from the Bluetooth Special Interest Group (SIG) website in addition to adopted Profiles & Services. Although the core specification is over 2,000 pages, only a few sections are typically referenced in the course of developing a Bluetooth LE application:

  • Generic Access Profile (GAP) - Specifies the role of the device (Peripheral, Central, Broadcaster, etc.): Volume 3, Part C
  • Attribute Protocol (ATT) - Defines discrete data types which are the 'building blocks' of Characteristics: Volume 3, Part F
  • Generic Attribute Profile (GATT) - Defines Characteristics, or an organized method of using Attributes. Volume 3, Part G
  • Security Manager Specification (SMP) - Defines the procedure for the generation and exchange of security keys, also known as Pairing. Volume 3, Part H. Also a good intro on the Bluetooth SIG LE Security page.
  • Link Layer Specification - Lowest layer that manages the connection between devices and defines channel data types. Volume 6, Part B

The vast majority of E2E inquiries related to the Bluetooth core specification are addressed by the above sections of the core specification. In some cases, the above sections cover classic as well as dual-mode operation. Refer to the respective introduction chapter for the LE-only sub sections.

Due to the popularity of the standard, there are also a number of technical books dedicated to understanding BLE. Search "Getting started with Bluetooth low energy" in your favorite book store's search engine.


Q: Where do I find more information on the CC2650 SensorTag, including sensor details, firmware, services/profiles, PC & Smartphone Apps, etc.?

A: Technical details on the SensorTag, sensors, schematics, BLE custom sensor profiles & how to access from a PC or smartphone can be found on the "Getting Started" & "Teardown" tabs of the SensorTag main page.

The SensorTag device firmware is provided in the TI BLE-Stack SDK, both in source & prebuilt hex format. It can be programmed with the SmartRF Flash Programmer 2 and a supported JTAG debugger.

Additional details on how to build/program the firmware, how to access the sensor data over BLE and more details including OAD are located in the SensorTag User's Guide on the TI BLE Wiki. Although any smart device app can be developed to interact with the SensorTag, TI does provide Android & iOS sample code.

Q: What is the difference between CC2650 & CC2640? How do I move from CC2650 to CC2640 or different package sizes?

A: The multi-standard CC2650 wireless MCU supports BLE as well as other wireless protocols, such as ZigBee. The CC2640 supports Bluetooth low energy only and is recommended for designs that are entirely based on BLE. All code generated from the BLE-Stack v2.x SDK is binary compatible with both the CC2650 & CC2640 in the same QFN package size, so no porting is required when switching from a CC2650 based development kit to a CC2640 based custom board. Additionally, IDE project configuration settings in the BLE-Stack v2.x SDK for CC2650 & CC2640 are cross-compatible; however, it is strongly recommended to not change the CPU settings in the IDE. Although the CC2650 has the HW & ROM capability to support additional wireless protocols, a given SW build can only support one wireless protocol. Development kits that feature the multi-standard CC2650 wireless MCU are suitable for development of CC2640 based custom board designs. To develop with the CC2640R2F, the CC2640R2 LaunchPad is required, see kit description above.

The SW programming interface is the same for all package options. When changing from one package option to another, such as the 7x7 to the 4x4 QFN, only the number of DIOs defined in the board file and, if needed, RF layout need to be considered.

For a detailed overview of the new CC2640R2F, please see the dedicated section below. TI recommends that all new BLE designs use the CC2640R2F for increased application flash memory availability.


Q: Do you support Bluetooth Mesh Networks?

In July 2017 Bluetooth SIG released the first mesh network specification for low energy devices. This implementation uses a "flooding" approach to relay payloads of data (messages) across the mesh network. It is important to note that the mesh specification is external to the Bluetooth core specification and not part of the Bluetooth 5 or any previous Bluetooth 4 specification. More details on Bluetooth mesh can be found on the SIG website: bluetooth.com/mesh. TI intends to support mesh networking in a future SDK offering.


Q: Will CC2640 / CC2650 / CC1350 support Bluetooth 5?

A: Support for Bluetooth 5 is provided on the CC2640R2F wireless MCU. Please see the ConnecTIng Wirelessly blog "The secret to moving faster with Bluetooth® 5" for details on how the new 2 Mbps High Speed mode benefits applications with the CC2640R2F. More details about Bluetooth 5 are also available in the below CC2640R2F section of this post.

 
Q: Do you have a GitHub page?

A: Yes! Additional example projects demonstrating the advanced BLE capabilities of the CC2640 / CC2640R2F, such as achieving maximum data throughput over BLE and Multi-Role - up to 8 simultaneous connections, can be found on the TI SimpleLink GitHub page. Refer to the 'ble_examples' repo.

 

Q: Which debuggers are supported?

A: 

  • XDS100v3 standalone (from 3rd party manufacturers)
  • XDS110 on supported LaunchPads, such as the CC2650 (LAUNCHXL-CC2650) & MSP432 (MSP-EXP432P401R) Red Edition LaunchPads. Other LaunchPads may feature a XDS110 with an exposed 10-pin JTAG connector for debugging external targets. Refer to the documentation of your LaunchPad. The XDS110 supports cJTAG 2-wire configurations
  • XDS200 (from 3rd part manufacturers)
  • SmartRF06EB using XDS100v3 (included on board)
  • DevPack Debugger (CC-DEVPACK-DEBUG) for the new SensorTag (see description below on usage with custom boards)

See the Tools wiki for more details on supported debuggers including compatible 3rd party ARM flash programmers suitable for mass production / factory environments. Note that XDS100v2 debuggers are not supported with CC26xx.

Q: Can I use the DevPack Debugger (CC-DEVPACK-DEBUG) to program / debug my custom CC26xx / CC13xx board?

A: Although the DevPack Debugger uses the same XDS110 JTAG debugger found on the CC2650 and CC2640R2F LaunchPads, the DevPack Debugger is designed to only work with the SensorTag (CC2650STK) evaluation kit. As opposed to the XDS110 on the LaunchPad, the DevPack Debugger is not designed to be used as a standalone debugger to custom boards since it has no level shifters, no vsense pin, etc. TI recommends using a supported standalone debugger listed above or the CC2650 or CC2640R2F LaunchPad's "XDS110 out" header along with a standard 10-pin ARM JTAG cable to program and debug custom boards. The procedure for using the LaunchPad as an external debugger to custom boards is described in the application note "Running Standalone BLE Applications on CC2650 Module" (SWRA534).


Q: How do I program firmware to the CC26xx device?

All development kits come pre-programmed with demonstration firmware, however, CC26xx devices purchased individually (e.g., on reels) have their internal memory contents blank / erased. These devices, including the CC2650MODA module, can be programmed using a supported JTAG programmer (see Debuggers section above) or via the CC26xx ROM serial bootloader. Refer to the Bootloader chapter of the CC26xx TRM (SWCU117) as well as application note SWRA466 for more details on how to use the ROM bootloader to program the CC26xx.


Q: How do I setup the CC-DEVPACK-DEBUG (XDS110) with CCS and IAR?

A: Please see the Tools Overview wiki article. The User/Application COM port is the USB Serial "back channel" used in the sample applications.

 

Q: Can I use the CC Debugger with CC26XX?

A: Unfortunately not. The CC26XX / CC13XX series uses cJTAG or 4-pin JTAG as its debug interface which is not supported by CC Debugger.

 

Q: Which IDE / Compilers are supported?

A: Refer to the release notes in the actual SDK for the required toolchain & IDE version. Generally, IAR >=7.70.2 or CCS 6.2.0 (Build 50 or later) is supported (updates applied). Both have equally good support for TI RTOS. Please see the "Setting up the Development Environment" section of the CC2640 BLE Software Developer’s Guide (SWRU393) located in the Documents folder of the BLE-Stack SDK. The actual IDE versions used for testing the BLE-Stack SDK can be found in the Release Notes of the SDK. Using a tool chain / IDE version lower than the specified version in the SDK release notes is not compatible.

Note: IAR 7.50 versions prior to 7.50.3 have linker issues with BLE-Stack 2.1.x. Please use IAR 7.50.3 or later. Opening a project with specific version of IAR will not allow that project to be opened with previous versions of IAR.

The BLE-Stack v 2.2.1 SDK release has been built and tested with TI ARM Compiler v5.2.6. Compatibility with other TI ARM Compiler versions in CCS has not been tested and use of other compiler versions may result in undefined behavior. Refer to Section 2.6.3.2 of the BLE Software Developer’s Guide (SWRU393C) or the online SW User's Guide section for Installing a TI Compiler for the procedure to install TI ARM Compiler v5.2.6. Please note that TI Compiler v16.6.0.STS is not compatible with BLE-Stack v2.2.1.

IAR has changed the definition of the wchar_t in EWARM 8.11.x IDE versions which results in warnings with BLE SDKs that have specified dependencies to IAR EWARM 7.80.3 and earlier versions. TI has not tested these SDKs for compatibility to 8.11.x EWARM and recommends using the toolchain version listed in the SDK release notes. IAR versions used by TI BLE SDKs can be found here.

Q: Can I use CCS 7.x with TI BLE-Stack v2.2.x?

A: Although testing was performed at the time of release with CCS v6.1, TI has not identified any incompatibility with CCS v7.1. Please be sure to install TI ARM Compiler v5.2.6 as described above and in the online SW Developer's Guide section Installing a Specific TI ARM Compiler.

 

Q: Do you have an BLE-Stack SDK installer for Linux or Mac?

A: The BLE-Stack SDK installer is for Windows® 7 and later Windows PC host systems. Some community users have provided and shared their tips for installing on non-windows systems. See this thread for tips on installing on Linux systems. Starting with BLE-Stack v2.2, the python source for the lib_search.exe and frontier.exe tools are provided in the SDK 'tools' folder. This source should help with running these tools on non-Windows host systems.

You can also download the SimpleLink CC2640R2 SDK from TI Resource Explorer to a Linux machine using the "Download All" icon link. For macOS, see this post for instructions on obtaining the SDK and required modifications to the prebuild steps.

 

Q: When I download my code, where is it programmed? Internal or external flash memory?

A: The CC26xx is a flash based wireless MCU with 128kB of in-system programmable flash memory. All code downloaded / programmed by a supported IDE or SmartRF Flash Programmer 2 resides in and executes from internal flash memory. Some development kits feature an optional serial flash memory component connected via SPI. This external flash is to support firmware upgrade using TI's custom Over-the-Air Download (OAD) profile, which, when used with a software boot image manager, allows for updating the internal memory contents. It is not possible to execute firmware from external memory devices. For more details on the OAD profile, please see the CC2640 BLE OAD User's Guide article on the TI BLE Wiki. Please note that the MCU cannot directly execute code from external memory.

 

Q: How do I port my CC254x application to CC26xx

A: Most reference projects in the CC254x SDK have been ported to CC2640. Please refer to CC2640 BLE SW Developer’s Guide porting section for additional information on porting. Although most of the BLE-Stack APIs have remained the same, the amount of porting effort required will vary depending on the complexity of the existing application.

Q: How do I port my CC26xx CCS or IAR BLE project to the latest BLE-Stack SDK?

A: A v2.x project porting guide is available on the BLE Wiki. For CC2640R2F based projects, the migration and porting guide is included in the CC2640R2 SDK.


Q: How do I add UART or SPI to my application

A: Multiple options are available for adding serial communication to your Bluetooth low energy application. Refer to the TI BLE Wiki article: "CC2640 Serial Communication".

Q: How do I implement Device Firmware Upgrade (DFU) or Over the Air Download (OAD) firmware upgrade for CC2640 / CC2640R2F?

A: Upgrading the firmware over a BLE wireless connection is achieved by using TI's custom OAD ( a/k/a  DFU ) service, PC tools and external serial flash memory. For more details on how to implement the OAD on CC2640, please see the CC2640 BLE OAD User's Guide article on the TI BLE Wiki. Currently, OAD to internal flash is supported with limitations on the size of the Application, refer to the OAD guide for more details. The CC2650 LaunchPad features external flash memory and is used for the example.

For CC2640R2F, the OAD Guide can be found in the SW Developer's Guide. CC2640R2F with BLE-Stack v3.x can support both on-chip (internal) and off-chip (external) OAD options. Starting with CC2640R2 SDK v1.40 BLE-Stack v3.1.0, the OAD profile has been enhanced to allow for faster downloads as well as on-chip stack upgrades. Refer to the guide for a detailed description of benefits and associated limitations.

For non-wireless DFU or applications that use a host MCU, the CC2640 firmware can be upgraded over a UART or SPI interface using the ROM Serial Bootloader. Refer to the CC26xx TRM (SWCU117), Bootloader Chapter, for more details.


Q: How do I do a simultaneous Master & Slave (i.e., Peripheral & Central role) connection?

A: Please see the multi-role example application on the SimpleLink GitHub page under the 'ble_examples' repo. With the multi-role sample application up to eight (8) simultaneous connections can be established in any GAP role (Central or Peripheral). For the CC2640R2 SDK, the multi-role sample application is included in the SDK.


Q: How do I enable more functionality with the Invensense MPU-9250 motion sensor on the CC2650 SensorTag?

A: TI provides a reference implementation, along with source code, for enabling the control and export of data from the MPU9250 motion sensor in the SensorTag sample application within the BLE-Stack v2.2.1 SDK. Since the motion sensor is not manufactured by TI, we are therefore unable to provide additional support through our E2E forums for modification of the reference implementation. Developers who want to enable additional functionality or features are encouraged to review the MPU9250 data sheet and connect with Invensense for additional support. Refer to the SensorTag online user guide for the related source code files.


Q: Where can I find the original Out of Box demo for the CC2650DK?

A: The hex file for the PER Test demo can be found in this post. A standalone source PER project is also available in the TI-RTOS 2.21 SDK
and the TI Resource Explorer. 


Q: Where do I find more information on the Sensor Controller Engine (SCE) and Sensor Controller Studio (SCS)?

A: Please see the Sensor Controller Studio (SCS) Frequently Asked Questions post.


Q: Are newer TI-RTOS releases compatible with an existing BLE-Stack SDK?

A: A particular TI BLE-Stack release is tested with the TI-RTOS release packaged with the BLE-Stack SDK installer as described in the release notes. Occasionally, TI may provide a porting guide to a newer TI-RTOS release for specific functionality enhancements (e.g., to use an updated driver), however, compatibly can only be assured for the TI-RTOS version listed in the release notes of the TI BLE-Stack. Therefore, use of a different TI-RTOS release should be considered experimental even when a porting guide is available. See the Porting Guide on the TI BLE Wiki for details on the latest TI-RTOS support.

Due to the tight integration of the coreSDK in the SIMPLELINK-CC2640R2-SDK, it is not possible to use different coreSDK components in another SDK.

Q: Can I use drivers comes with new TI-RTOS version( >=TI-RTOS 2.20)?

A: Yes, you can back port the drivers from newer TI-RTOS version to the one that is used together with BLE stack 2.2. We have created a porting guide for your convenience.  http://processors.wiki.ti.com/index.php/CC2640_Porting_Projects#Porting_Drivers_From_TI-RTOS_2.20_or_higher_To_TI-RTOS_2.18

 

CC2640R2F

The CC2640R2F is the newest member of the SimpleLink CC26xx wireless MCU family supporting Bluetooth 5 configurations for higher throughput and longer range as well as providing more flash memory for application development in Bluetooth 4.2 configurations. Software development for CC2640R2F is enabled today by the CC2640R2 SDK 1.40 supporting Bluetooth 5 LE.

Q: What is the difference between the CC2640R2F and existing SimpleLink CC2640/CC2650/CC1350 wireless MCUs that support BLE?

A: In addition to support for the new Bluetooth 5 low energy PHY features, CC2640R2F has an updated non-volatile (NV) memory map layout with the latest Bluetooth 4.2 LE Host and Controller protocol stack placed in ROM. These updates move protocol stack code that resided in flash on previous CC26xx wireless MCUs to ROM, thus allowing for larger customer application use of the flash memory. With CC2640R2F, up to 80kB of additional free flash is available for Bluetooth 4.2 peripheral applications. Aside from these changes, most system & performance specifications remain the same as the CC2640/CC2650 wireless MCUs, including the Cortex-M3 application CPU, size of RAM, RF Core and Sensor Controller Engine interfaces.


Q: Is the CC2640R2F compatible with existing CC2640/CC2650 wireless MCUs?

A: The CC2640R2F is pin-for-pin compatible with equivalent CC2650/CC2640 QFN packages and reference designs. This means you can drop-in a CC2640R2F to an existing board layout that currently uses a CC2640 or CC2650 in the same QFN package size. In addition, the CC240R2F can be substituted in existing CC26xx BLE reference designs. Aside from updates to the NV memory layout which enable larger customer applications, most device specifications remain the same as the CC2640/CC2650. Refer to the CC2640R2F data sheet for details. Note that CC2640R2F supports Bluetooth low energy (BLE) only.


Q: Is my CC2640/CC2650 BLE firmware application compatible with CC2640R2F?

A: In general, the BLE-Stack v2 APIs and application framework are mostly the same, including GAP/GATT and TI-RTOS interfaces. However, due to updates to the NV memory map layout, you cannot use the same binary firmware image between CC2640/CC2650 and CC2640R2F wireless MCUs. A migration guide is available in the CC2640R2 SDK with instructions to port your existing BLE-Stack v2.2 application to CC2640R2F.


Q: How do I develop my application to use Bluetooth 5?

A: In many cases, updating a BLE application to take advantage of the new Bluetooth 5 (BLE5) features requires minimal application changes since they are automatically managed by the TI BLE protocol stack. We've created a separate Bluetooth 5 post describing how to take advantage of the features using the new Bluetooth 5 protocol stack ( BLE5-Stack ).


Q: What is the difference between the BLE-Stack v3.x and BLE5-Stack v1.x protocol stack?

A:Many devices today still use features from Bluetooth 4.0 - 4.2 so TI has included our memory-optimized Bluetooth 4.2 protocol stack (BLE-Stack) in the SIMPLELINK-CC2640R2-SDK. This protocol stack supports all Bluetooth 4.x devices and is memory-optimized to provide up to 80 kB of flash memory for the application. To take advantage of the cutting-edge performance of Bluetooth 5, TI has added a new protocol stack, BLE5-Stack, which includes all existing features from Bluetooth 4.x as well as added support for Bluetooth 5 High Speed mode. The Bluetooth 5 features are implemented in system flash memory and allow for application sizes of 40-50kB depending on feature configuration. 

 
Q: What is the difference between the CC2640R2 SDK and BLE-Stack SDK?

A: The CC2640R2 SDK uses TI’s new SDK layout which is common for SimpleLink MCUs. This SDK format adds value to customers who are developing on SimpleLink MCUs by using a consistent directory and naming convention, installation procedure and core RTOS interface. The BLE-Stack v3.0.1 is now incorporated as a component in the CC2640R2 SDK. All functionality previously provided by the BLE-Stack SDK, including the TI-RTOS, is now incorporated in the CC2640R2 SDK. The CC2640R2 SDK can also be accessed via the TI Resource Explorer at dev.ti.com.


Q: Does the CC2640R2F SDK support CC2640/CC2650/CC1350 wireless MCUs?

A: No, only the CC2640R2F device is supported with the CC2640R2 SDK. For BLE-Stack support on other Bluetooth low energy enabled SimpleLink wireless MCU, please use the BLE-Stack v2.2.1 SDK.


Q: Do I need to requalify or re-certify my product if I change to CC2640R2F?

A: The CC2640R2F has no changes to the frequency determining circuitry relative to the CC2640/CC2650 devices. As such, it will have the same RF PHY performance as the CC2640/CC2650. TI recommends contacting a certified test lab for all questions and topics related to regulatory compliance, including how to upgrade an existing, certified, design to CC2640R2F.

For Bluetooth SIG qualification, the same Bluetooth 4.2 protocol stack qualified design ID (QDID) is used on all SimpleLink CC26xx & CC13xx BLE devices. Note that changing the protocol stack configuration used by your application (e.g., going from BT 4.1 to 4.2) or any board layout changes may necessitate a requalification and/or regulatory re-certification. Please check with Bluetooth SIG’s website for qualification requirements. Additional qualification details can be found on the TI BLE Wiki under “Test & Certification”.

TI has created an app note Hardware Migration From CC2640F128 to CC2640R2F (SWRA535) which can be referenced for additional hardware-related details when transitioning from CC2640 to CC2640R2F.


Q: What development kits are available for the CC2640R2F?

A: The new CC2640R2 Bluetooth low energy LaunchPad (LAUNCHXL-CC2640R2) is available from the TI eStore. The CC2640R2 LaunchPad is a complete, low-cost BLE development and prototyping kit featuring an XDS110 JTAG debugger/programmer, onboard serial flash for firmware updates, expansion with BooserPack™ accessories, LEDs and accesses to IOs. The CC2640R2 LaunchPad uses a 7x7 QFN package with 31 IOs.


Q: What development environments are supported for developing BLE applications?

A: The CC2640R2 SDK supports IAR Embedded Workbench for ARM and Code Composer Studio v7. Refer to the release notes in the CC2640R2F SDK for the required toolchain and IDE version.


Q: Will the SensorTag be updated with the CC2640R2F?

A: TI has not announced any plans to release a SensorTag with CC2640R2F. The CC2650 SensorTag (CC2650STK) can still be used for IoT application prototyping as well as multi-standard (e.g., ZigBee) development. For sensor based application development, the Sensor BoosterPack™ can be used with the CC2640R2 LaunchPad. We have created a SimpleLInk Academy module demonstrating how to easily add an I2C sensor to your CC2640R2F BLE application using the Sensor BoosterPack.


Q: Will a CC2640R2F module be available?

A: TI has not announced any plans for a CC2640R2F based module, although customers can utilize all existing CC26xx reference designs for board layouts incorporating the CC2640R2F in a QFN package. A list of 3rd party module providers can be found on the TI BLE Wiki, including the recently announced SaBLE-x-R2 2.4GHz Bluetooth low energy (BLE) module by LSR (Laird).


Q: Will CC2640/CC2650 still be available and supported?

A: Just as with the first generation CC254x BLE MCUs, TI has not announced any plans to discontinue the CC2640/CC2650 wireless MCUs. Product support will continue to be offered through E2E. Customers who want upgradability to Bluetooth 5 or need additional flash memory for their applications are encouraged to start new designs with CC2640R2F.


Troubleshooting

Q: My Project Zero builds and flashes ok but does not Advertise and/or encounters a CPU abort

A: Please make sure you are using the correct CCS Development environment. For the latest Project Zero example using BLE-Stack v2.2.1, this is CCS v6.2.0 with TI Compiler v5.2.6. Please see the BLE-Stack release notes and  "Setting up the Development Environment" section of the CC2640 BLE Software Developer’s Guide (SWRU393) located in the Documents folder of the BLE-Stack SDK. Use of non-recommended compilers may result in increased task stack utilization which can cause undefined behaviour.


Q: When switching projects on my CC2640 / CC2650, my iOS or Android device is not able to "see" new Characteristics or Services

A: This condition occurs since the smart device caches attribute handles in order to speed up the re-connection process. For example, when reprogramming the device with Project Zero after it was previously running SimplePeripheral will show the "old" Simple GATT Profile characteristics in a BLE app such as Light Blue or BLE Scanner. To force the phone to re-discover the attributes the phone's BT GATT cache must be cleared. In iOS, toggle Aeroplane mode ON then OFF in the Settings or Control Center menu (this also switches Bluetooth off then on). If the device was previously bonded, tap the device name and select Forget this Device followed by toggling the Air mode. On Android, the procedure can vary by make and model, but most recent versions can choose Settings > Apps > Scroll over to All > Choose Bluetooth Share and tap on Clear Cache. Just as with iOS, un-pair the device if it was previously bonded.


Q: Why am seeing poor RF performance and range issues on my custom CC2640 board when everything works fine on the TI Reference HW?

A: When the TI reference design guidelines (http://processors.wiki.ti.com/index.php/CC26xx_HW_Checklist) are followed, the most common reason for poor RF performance or range issues is an incorrect/mismatched RF Front End & Bias setting in SW vs. the actual front-end configuration on the custom HW. This mismatch usually happens when the custom board uses a different package (i.e, 5x5) and includes one of the TI CC2650EM eval module board files which does not match the custom board's front-end configuration. To achieve maximum RF performance, it is critical to have the correct SW setting that matches the actual board layout.

For example, the CC2650EM_5XD board file is for a 5x5 package using a Differential front-end configuration with eXternal bias. If the custom board uses a layout with Internal bias, using the 5XD board file will will result in a mismatched Bias setting and thus severely degrade RX sensitivity. The same principle applies for mismatched Single-ended vs Differential front-end configurations.

Make sure the board file is updated with the correct front-end configuration settings. The setting is defined by RF_FE_MODE_AND_BIAS in bleUserConfig.h. See this header file for the available SW definitions. It is recommended to confirm that the preprocessor is including the correct board file and RF_FE_MODE_AND_BIAS setting. If needed, create a new board file with the correct RF setting. See "10 Creating a Custom BLE Application" in the CC2640 BLE Software Developer’s Guide (SWRU393) for more details.

For more CC26xx HW troubleshooting, refer to the following wiki: http://processors.wiki.ti.com/index.php/CC26xx_HW_Troubleshooting

 

Q: Why is my device in an infinite loop with "No source available for 0x1001bbd6" (CPU abort)

A: This means you have encountered a CPU abort / exception, such as from accessing a non-existent memory address, side effect of a stack overflow, etc. For debugging this condition, i.e., finding what caused the CPU abort, see the "Deciphering CPU Exceptions" section in Ch 9 of the CC2640 BLE SW Developer’s Guide (SWRU393). This can also happen when trying to access an IO pin from your application that is not available on your device, such as from porting your application from a LaunchPad that uses a 7x7. For example, trying to access IO's higher than IOID_14 on a 5x5 QFN device will result in an hardware abort since this pin is only available on 7x7 QFN package devices.


Q: How do I enable the TI-RTOS Object Viewer (ROV) in IAR?

A: The ROV can be enabled under the application's Project Options -> Debugger -> Plugins tab. Select "TI-RTOS" in the scroll list.


Q: My "out-of-the-box" BLE examples does not compile in IAR and I get an error saying "Variable expansion failed". What is wrong?

A: IAR sometimes fail to include the path variables for TI RTOS and CC26XXWARE and you need to import them again manually. 

Goto Project->Configure Custom Argument Variables, Select Import and choose the corresponding variables file. Example location: Projects\ble\SimpleBLEPeripheral\CC26xx\IAR\SimpleBlePeripheral.custom_argvars

Q: I encounter a pre-build error indicating that lib_search.exe is not recognized in BLE-Stack v3.0 / CC2640R2 SDK v1.0.0.22

A: The lib_search.exe executable used during the Stack pre-build steap in this SDK requires a Windows 64-bit installation. For 32-bit Windows installations, please use this 32-bit version of lib_search.exe (zip).


Q: I'm unable to flash program CC2640 with topside marking: CC2640 128 IT 59I A90C G4

A: Please make sure you are using the latest version of SmartRF Flash Programmer 2 v1.7.x. The latest version can be downloaded from the "Tools & Software" tab on the main CC2640 or CC2650 product folder.

Q: My CC-DEVPACK-DEBUGGER (DevPack Debugger / XDS110) does not detect the SensorTag in SmartRF Flash Programmer 2 v1.7.x+?

A: A firmware update may be required. Please install CCS according to the CC2640 BLE Software Developer’s Guide (SWRU393). CCS will detect if a firmware update is required when a Debug session is started. Open and build the SensorTag project, then program the SensorTag via the CCS Debugger. Remember to close SmartRF Flash Programmer 2.

Q: I’m getting a linker or post-build error with Boundary.exe when building the Stack project.

A: (Applies to BLE-Stack v2.1.1 and earlier SDK releases) The Boundary tool is used to adjust the Stack flash / RAM boundary to the optimal value. These errors typically occur when the Stack configuration is modified such that RAM/Flash usage has changed.

  1. Verify that your argument variables / path point to the location where Boundary.exe is installed. The default location: C:\Program Files (x86)\Texas Instruments\Boundary. If the tool is installed to a different path, the IDE will need to be updated:
    1. IAR: Tools-> Configure Custom Argument Variables ->”CC26xx TI-RTOS” -> BOUNDARY
    2. CCS: Stack Project Properties -> Build, “Steps” tab, “Post-build steps”.
    3. Refer to Section “3.12 Configuration of RAM & Flash boundary using the Boundary Tool” in the CC2640 BLE Software Developer’s Guide (SWRU393) for details on how to resolve build errors generated by the Boundary tool or Linker.

      For BLE-Stack v2.2.0+: the Frontier tool is used and a rebuild of the Stack project is not required. Details are provided in the CC2640 BLE Software Developer’s Guide, but the process is to build the Stack, then build the App. A rebuild of the Stack is only required if changing the Stack project.

Q: I get pre-build errors in IAR, and after clicking Tools->Options->Messages->Show all build messages, it looks something like this
gmake[1]: Entering directory `C:/ti/simplelink/ble_cc26xx_2_00_00_42893/Projects/ble/SimpleBLEPeripheral/CC26xx/IAR/Config/src/sysbios'
Preprocessing library source files ...
C:/Users/<user>/AppData/Local/Temp/make904-2.sh: 1: Syntax error: "(" unexpected
C:/Users/<user>/AppData/Local/Temp/make904-3.sh: 1: Syntax error: "(" unexpected

A: Your system has for whatever reason disabled 8.3 pathname aliases (e.g. PROGRA~2) for the path IAR is installed to. The only known working solution is currently to install IAR at e.g. C:\IAR\EWARM7401 or some other path without spaces or long names.

Q: I get "Resource temporarily unavailable" pre-build errors in the application project similar to this:

Creating the SYS/BIOS library that contains the APIs not included in the ROM ...
0 [main] sh 6420 sync_with_child: child 6332(0x19C) died before initialization with status code 0xC0000142
23 [main] sh 6420 sync_with_child: *** child state waiting for longjmp
C:/Users/username/AppData/Local/Temp/make6628-1.sh: fork: Resource temporarily unavailable

A: Most likely there is a conflict with sh.exe in the XDCTools installation with some other package you have installed. Please search for sh.exe in your system and disable the conflicting package(s). Additionally, file system tools, such as cygwin may cause conflicts with the XDCTools; these installation(s) should be disabled as well.

Q: When switching to the 5x5 package, UART crashes in my BLE-Stack v2.1.x project, such as when initializing NPI.

A: An issue exists in the TI-RTOS 2.13 CC2650EM_5XD board file with the placement of the uartCC26XXHWAttrs structure. Please make the following change in the 5XD board file, usually located at C:\ti\tirtos_simplelink_2_13_00_06\packages\ti\boards\SRF06EB\CC2650EM_5XD:

#pragma DATA_SECTION(uartCC26XXObjects, ".const:uartCC26XXObjects")
with:
#pragma DATA_SECTION(uartCC26XXHWAttrs, ".const:uartCC26XXHWAttrs")

This issue has been corrected in subsequent TI-RTOS SDK releases for CC26xx and is fully fixed in the BLE-Stack v2.2 SDK.


Q: My CCS project fails to build.

A: First verify you are using the required minimum CCS IDE version and TI Compiler version specified in the Release Notes for the respective SDK. Also, do not use a space in the BLE-Stack SDK path and your CCS workspace. Using a white space in these paths will result in a build error. It is also advisable to install the SDK to the default location to confirm your setup is working correctly.

Q: I’m still getting build errors of some kind.

A: Please use the E2E Rich Formatting Option and attach your IAR or CCS build log (paperclip icon). Note that for IAR, you must enable the build log: Tools -> Options -> Messages -> Log build messages to file. Please compress the file as needed. Attaching the build file, and not just the snippet showing the error, is critical to determine the build environment and other factors needed to diagnose your build error.

 

Q: When debugging or loading the Stack FlashROM project, I get errors saying the vector table can’t be found or can’t run to main.

A: The Stack project is not an executable, thus it can’t be debugged directly from the IDE. The Stack must be debugged from the Application project workspace. In IAR, you should not encounter these warnings if “Download Active Application” is used to download (program) the Stack image. In CCS, you will see these warnings, however they can be ignored so long as the flash memory was successfully programmed. After the Stack is downloaded, switch to the Application workspace/project and start the debug session. More details are in the CC2640 BLE Software Developer’s Guide (SWRU393).

Q: My CC-DEVPACK-DEBUG (DevPack Debugger / XDS110) always reports "Firmware Upgrade Mode" in the Windows Device Manager?

A: Please make sure you have a battery inserted in the SensorTag and follow the procedure on the wiki: http://processors.wiki.ti.com/index.php/CC13xx_CC26xx_Tools_Overview#XDS110_2

Q: How do I unbrick the device?

A: Use SmartRF Flash Programmer 2. Under the wrench icon (top right), select “CC26xx/CC13xx Forced Mass Erase”. Note that the flash programming tool will always report "success" when performing a mass erase. If the CC26xx Device Configuration (CCFG) has been set to disable the Mass Erase function, the operation will not succeed despite the flash programming tool reporting "success".


Q: My SensorTag (CC2650STK) doesn't Pair with Windows 8.1?

A: Please upgrade your SensorTag to firmware version v1.20 or later using the FW Download option in the iOS or Android SensorTag app, or use the pre-built SensorTag hex file in the BLE-Stack V2.1 SDK. Note that for size reasons, the SensorTag firmware is not built with the Pairing feature enabled, but it will correctly respond to a Pairing Request from a Central device.

Q: I am using pre-release silicon (Rev2.0 or Rev2.1) and my software does not run or never reaches main(). When I stop the CPU is stopped in a function called hisCodeIsBuiltForCC26xxHwRev22AndLater_HaltIfViolated. What is wrong?

A: Support for pre-release silicon is only available in the BLE-Stack V2.0 release using the following procedure. There is no support of pre-release silicon in BLE-Stack V2.1+.

Q: I am using simplelink_cc2640r2_sdk_1_00_00_22 TI-RTOS driver examples, but the out of box project gives the following error msg("..\CC2640R2_LAUNCHXL.h", line 54: fatal error #1965: cannot open source file "ti/devices/cc26x0/driverlib/ioc.h"). What should I do? 

A: Change #include <ti/devices/cc26x0/driverlib/ioc.h>  to <ti/devices/cc26x0r2/driverlib/ioc.h> in CC2640R2_LAUNCHXL.h which can be found in C:\ti\simplelink_cc2640r2_sdk_1_00_00_22\source\ti\boards\CC2640R2_LAUNCHXL and re-import the project. 

The default CC26XXWARE path to setup files / drivers is set to support release material (Rev2.2). To run the software on older material this variable needs to be changed.

IAR:

  • Goto Tools->Configure Customer Argument Variables-->CC26xx TI-RTOS-->CC26XXWARE

Modify CC26XXWARE

  • From: C:\ti\tirtos_simplelink_2_11_01_09\products\cc26xxware_2_20_06_14829
  • To  C:\ti\tirtos_simplelink_2_11_01_09\products\cc26xxware_2_00_06_14829

  • Delete OS kernel libraries folder: IAR\Application\CC2640\configPkg [IAR builds only]
  • Delete OS kernel source build folder: IAR\Config\src [IAR builds only]
  • Close workspace and re-open for changes to take effect

CCS:

  • Right-click the Application project, Select Properties
  • Goto Resource->Linked Resources, "Path Variables" tab
  • Follow the above instructions to modify CC26XXWARE
  • Goto Build->ARM compiler->Advanced Options->Predefined symbols
    Look for CC2650F128RGZ and replace it with CC2650F128RGZ_R21 or CC2650F128RGZ_R20.
  • Rebuild the Application project


If the question is answered, please press the  Verify Answer button below the answer to help other users find the correct answer easily.

3 Replies