This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CC2650EM-7ID-RD: SmartRF06 + CC2650EM-71D BLE UART bridge

Part Number: CC2650EM-7ID-RD
Other Parts Discussed in Thread: CC2650, CC2640, CC2650STK, CC1310, CC1350, CC2650MODA

I am trying to find the "SPP BLE Server" and "SPP BLE Client" for SmartRF06 EVA Board + CC2650EM-71D, since it has been mentioned that the SPP BLE Client and SPP BLE Server application have been ported to use BLE Stack v2.2 and support the CC2650..... http://processors.wiki.ti.com/index.php/CC2640_UART_to_BLE_Bridge

Unfortunately I couldn't find any for CC2650.    Instead I found CC2640  "SPP BLE Server" and "SPP BLE Client" in BLE Stack V2.1.
Then I flashed the "CC2640_SmartRF-7ID_SPPBLEClient_noPM.hex" and "CC2640_SmartRF-7ID_SPPBLEServer_noPM.hex" to two SmartRF06 EVA Board + CC2650EM-71D boards.

They can advertise and connected each other

Server side 232 message:

Hello from SPP BLE Server!
Advertising...Waiting for connection...
Connected to client!

Client side 232 message:

Hello from SPP BLE Client!
CONNECTED!
Starting Discovery...Discovering services...Found Serial Port Service...Data Char Found...CCCD for Data Char Found...
Notification enabled...
Link parameters updated:
Connection Handle: 0
Connection Interval: 20 ms
Connection Latency: 0
Connection Timeout: 2000 ms
***** Message sent from server!!

 

I can send 232 message from Server to Client but not the other way around, server cannot receive any message from the client terminal.

Is that because of the compatibility problem between CC2640 and CC2650? Anyone has encounter the same issue and how to resolve?
I cannot compile the CC2640 IAR project, where can I found the "SPP BLE Server" and "SPP BLE Client" IAR project files for CC2650?

  • For every project that works with CC2640, it will also work with CC2650. CC2650 is a superset of the CC26xx series.

    You can try the github project for the LP and then change the board file to the RF06 board
    github.com/.../cc2650lp
  • Thanks Christin, how to change LP project to be RF06 board?
  • You can find our software developer's guide for board changing.
  • I don't not want to spend too much time on the software developer's guide, the LP and RF06 pin mapping yet.
    Any quick way to get this work on RF06?
  • Taking a look at the SDG is the quickest way. What I would say will be the same as what the SDG covers. See section 6.2

    The board file sets the parameters of the fixed driver configuration for a specific board configuration, such
    as configuring the GPIO table for the PIN driver or defining which pins are allocated to the I2C, SPI, or
    UART driver.
    The board files for the SmartRF06 Evaluation Board are in the following path:
    $TI_RTOS_DRIVERS_BASE$\ti\boards\SRF06EB\<Board_Type>
    $TI_RTOS_DRIVERS_BASE$ is the path to the TI-RTOS driver installation and <Board_Type> is the
    actual Evaluation Module (EM). To view the actual path to the installed TI-RTOS version, see the
    following:
    • IAR: Tools→ Configure Custom Argument Variables
    • CCS: Project Options→ Resources→ Linked Resources, Path Variables tab
    In the path above, the <Board_Type> is selected based on a preprocessor symbol in the application
    project, where the currently relevant options are:
    • CC2650DK_7ID: 7x7 Evaluation Module
    • CC2650DK_5XD: 5x5 Evaluation Module
    • CC2650DK_4XS: 4x4 Evaluation Module
    • CC2650STK: CC2650 Sensor Tag
    • CC2650RC: Remote Control
    • CC2650_LAUNCHXL: CC2650 LaunchPad
    • BOOSTXL_CC2650MA: Booster Pack
    • CC1310_LAUNCHXL: CC1310 LaunchPad
    • CC1310DK_4XD: 4x4 Evaluation Module
    • CC1310DK_5XD: 5x5 Evaluation Module
    • CC1310DK_7XD: 7x7 Evaluation Module
    • CC1350_LAUNCHXL: CC1350 LaunchPad
    • CC1350 STK: CC1350 Sensor Tag


    To set the board type (and thus choose a board file), define one of the above in the application
    preprocessor symbols.

    The top-level board file (board.c) then uses this symbol to include the correct board file into the project.
    This top-level board file can be found at $INSTALL$\src\components\hal\src\target\board.c, and is located
    under the Startup folder in the project workspace


    The board file links in another gateway board file located at $INSTALL$\
    src\components\hal\src\target\<board_type>, which finally links in the actual board file from the RTOS
    install.

  • Christin, I am actually working on a project using the laptop build-in bluetooth to control some UART devices(cc2650 BLE - UART),  so do you think the "SPP BLE Server" and "SPP BLE Client" are the best starting point?

  • Hi,

    Here is how I interpret your request from the above sentence. Let me know if my understanding is incorrect.

    You want to use your PC to connect to a BLE device which has some peripherals that can be communicated through UART.
    Are you planning on controlling the peripheral devices based on the characteristic value transmitted over the air?
  • Christin, basically your interpertation is correct but no need to control the peripheral devices.
    I want to use a laptop to send a command(text message) to a selected BLE device, then the BLE device will return the acknowledge message back to the laptop after some processes.
  • The devices is controlled by another MCU, so the CC2650 will be served as a BLE to UART
    Laptop (Bluetooth) < ------> CC2650(UART)<->MyDevice
  • It looks like you can start from Host test or a network processor project.
    software-dl.ti.com/.../ble_snp_sap_intro.html
  • Chistin,

    I am able to get CC2640 SPPBLEClient/Server to work on the SmartRF06 EVA Board + CC2650-7ID.


    I am also able to found and add a SimpleBLEPeripheral on my laptop, is there any windows tool availible that can connect and transmit data to the connected SimpleBLEPeripheral?

  • For SPP project, the data is controlled through UART terminal.

    Please see the documentation here:
    github.com/.../spp_ble.md
  • yes I know but I am trying to connect the SPPBLEServer with a loptop, is there a windows/mobile app that can serve the purpose?
  • If you run SPPBLEServer on CC2650EM-SmarfRF06 and connect USB cable from your laptop to SmartRF06, you can use terminal tool such as teraterm to input/output messages. You can run SPPBLEClient on another SmarRF06-CC2650EM and also connect it to laptop with USB cable. Open another teraterm to input/output messages to this SPPBLEClient and you can see SPPBLESever and SPPBLEClient would communicate messages input from on teraterm from another.
  • Christin, on the laptop/mobile end, I would like to use the build-in bule tooth instead. 

  • Hi,

    As stated in the comment, to use SPP project you will have to use UART to control the BLE device.

    If you want to use BLE to control CC26xx, then you need to start with different project. You can use simple_peripheral, and let your PC to connect to it. Then you can implement some UART feature with simple_peripheral project.

    So the connection will be : PC to CC26xx(wireless, only BLE), then CC26xx to another device(UART)
  • Hi Christmas, is CC2650EM-71D and CC2650MODA competible?

    I just ported CC2650lp_spp_ble_server to CC2650EM-71D and works fine, but then I ported it to CC2650MODA and not working..

  • The CC2650MODA device is an RF module which includes the SimpleLink CC2650 wireless MCU in 5x5 mm QFN package so you have to revise board file to make it work on CC2650MODA .
  • yes resolved now thanks!
  • You are welcome and it's good to know it works now.
  • With a third party software, I am trying to use my laptop to connect the CC2650lp_spp_ble_server. 

    I am able to discover the CC2650lp_spp_ble_server but not connected. 

    Can any TI expert share some light? error log as following :

    _______________________________________________________________________________________________

    Failed to read ServiceRecord with: 10108 (0x0000277C) 'No such service is known. The service cannot be found in the specified name space'--------------------------------
    ServiceName: 'Service Discovery'
    ServiceClasses: 0x1000 ServiceDiscoveryServer
    Channel Num: <not assigned>

    ServiceName: 'Personal Ad Hoc User Service'
    ServiceClasses: 0x1115 Panu
    Channel Num: <not assigned>

    ServiceName: 'Generic Access ProfileServiceClasses: 0x1800
    Channel Num: <not assigned>

    ServiceName: 'Generic Attribute ProfileServiceClasses: 0x1801
    Channel Num: <not assigned>

    ServiceName: 'OBEX Object PushServiceClasses: 0x1105 ObexObjectPush
    Channel Num: 1

    ServiceName: 'OBEX File TransferServiceClasses: 0x1106 ObexFileTransfer
    Channel Num: 2

    ServiceName: 'Image TransferServiceClasses: 0x111B ImagingResponder
    Channel Num: 3

    ServiceName: 'A/V Remote ControllerServiceClasses: 0x110E AVRemoteControl, 0x110F AVRemoteControlController
    Channel Num: <not assigned>

    ServiceName: 'A/V Remote Control TargetServiceClasses: 0x110C AVRemoteControlTarget
    Channel Num: <not assigned>

    ServiceName: 'A2DP SinkServiceClasses: 0x110B AudioSink
    Channel Num: <not assigned>

    ServiceName: 'A2DP SourceServiceClasses: 0x110A AudioSource
    Channel Num: <not assigned>

    ServiceName: 'Hands-free GatewayServiceClasses: 0x111F HandsfreeAudioGateway, 0x1203 GenericAudio
    Channel Num: 4

    ServiceName: 'Voice GatewayServiceClasses: 0x1112 HeadsetAudioGateway, 0x1203 GenericAudio
    Channel Num: 5

    0x35, 0x98, 0x09, 0x00, 0x00, 0x0a, 0x00, 0x00,  0x00, 0x00, 0x09, 0x00, 0x01, 0x35, 0x03, 0x19,
    0x10, 0x00, 0x09, 0x00, 0x04, 0x35, 0x0d, 0x35,  0x06, 0x19, 0x01, 0x00, 0x09, 0x00, 0x01, 0x35,
    0x03, 0x19, 0x00, 0x01, 0x09, 0x00, 0x05, 0x35,  0x03, 0x19, 0x10, 0x02, 0x09, 0x00, 0x06, 0x35,
    0x09, 0x09, 0x65, 0x6e, 0x09, 0x00, 0x6a, 0x09,  0x01, 0x00, 0x09, 0x01, 0x00, 0x25, 0x12, 0x53,
    0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x20, 0x44,  0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79,
    0x00, 0x09, 0x01, 0x01, 0x25, 0x25, 0x50, 0x75,  0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x73, 0x20,
    0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73,  0x20, 0x74, 0x6f, 0x20, 0x72, 0x65, 0x6d, 0x6f,
    0x74, 0x65, 0x20, 0x64, 0x65, 0x76, 0x69, 0x63,  0x65, 0x73, 0x00, 0x09, 0x01, 0x02, 0x25, 0x0a,
    0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66,  0x74, 0x00, 0x09, 0x02, 0x00, 0x35, 0x03, 0x09,
    0x01, 0x00, 0x09, 0x02, 0x01, 0x0a, 0x00, 0x00,  0x00, 0x0d,