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.

CC1350 Dual Band BLE peripheral + Sub-1GHz Tx/Rx

Other Parts Discussed in Thread: CC1350, CC2640

Hello,

We are considering CC1350 to replace CC2640 in our project.

Our Current Topology is based on 2 CC2640 devices acting as peripheral/central BLE.

The bellow 2 options were raised:

1. Keep current topology, utilize CC1350 as single band 2.4Ghz:

CC1350 acting as peripheral BLE.

CC1350 acting as Central BLE.

As i understand,  Range would be improved as CC1350 outputs 9db, as opposed to cc2640 5db (please approve).

2. Communication between the nodes in Sub-1Ghz, and both nodes act also as peripheral BLE:

CC1350 acting as peripheral BLE (for Mobile phone connectivity) + tx/rx in Sub-1Ghz to communicate with second node

CC1350 acting as peripheral BLE (for Mobile phone connectivity) + tx/rx in Sub-1Ghz to communicate with second node

Is this solution feasible?

in the Ti-RTOS 2.2.0 example (rfWsnDmNode/rfWsnDmConcentrator) the 2.4Ghz is used as broadcaster, and doesn't establish a BLE connection.

If such solution is feasible, is there any example available?

Thanks,

yuval.

  • Be advised that we do not yet have a Sub1GHz + Connected BLE example. The CC1350 examples we have provided are using BLE advertisements.

    Yes this is feasible, but you need to consider a few things:

    1. The BLE stack must be 2.2 or higher as it needs to use the RF driver.
    2. You need to use the Dual Mode RF driver (see the WsnDm examples for CC1350 and look at the differences in .cfg file to enable dual mode RF driver).
    3. You may need to port the BLE stack to a newer version of TIRTOS release to align 2.20.xx (which contains the dual mode RF driver).
    4. You need to consider code foot print, how big is your BLE application on CC2640? Compare that to the RF examples, keep in mind that the TIRTOS/Drivers/DriverLib will be shared.

    Regards, TC.
  • thanks TC,

    great to hear it is feasible.
    i hope we could squeeze our BLE application to fit.
    seems like the most challenging task is porting BLE to a new TIRTOS. any idea if TI is working on this task, and if so when it should be released?

    thanks again,
    yuval.
  • Hi Yuval,

    Have you managed to compile a basic Sub+BLE project?
  • Hi,
    Do you have maybe an update about an example with this combination of such requirements?
    I'm also trying to work it out, and it might help :)

    Thanks,
    Omer
  • Sorry, but we can not discuss road map info on the public forum. Please could you contact your local TI sales representative.

    Regards,
    Tony.
  • Hi Lior,

    I haven't tried doing that yet, but will probably need too.

    Thanks,

    yuval

  • All,

    We now have a TI Design demonstrating CC1350 Sub-1 GHz with connected BLE. Please see the design page ( www.ti.com/.../TIDC-01001 ) for a guide on how to incorporate separate BLE and Sub-1 GHz images. While this example only shows Tx on the Sub-1 side, you can add Rx as done in the examples in the CC13x0 SDK.

    Skyler

  • Thanks, I have gone through this and gotten the demonstration working. Now I want to reverse the direction so I will try to add in the Rx functionality to the SubGHz side and write out of the BLE side rather than read in. Are the Flash ImgA and ImgB arbitrary apps? As in, can I drop in and replace the contents of one or both of them with a different app I have previously made and go through the same process to combine them?

    This example switches between SubGHz and BLE instead of running them simultaneously. Is this a limitation of the hardware or the RTOS? Or is it possible to write an app that is using both SubGHz and BLE?
  • Bryan,

    Image B is arbitrary - you should be able to replace it with another app easily (Packet Rx for example). This would be done inside the task function of Image B. Image A, however is dedicated to the BLE app and stack, so I would not recommend changing it unless you want to remove BLE.

    For the example you described, you use the Packet Rx example to modify the Sub-1 GHz task function, and store the contents in the "data" variable. This is the dedicated space in RAM to share between the two images. On the BLE side, this value is read inside sub1packetService.

    In this example, we use image switching because of a limitation in the firmware.

    Skyler

  • Hi,

    I'm not sure I understand the purpose of double boot method.
    Suppose you want a full time connectable BLE, and once in a while to send/receive a Sub-1GHz packet.
    Isn't it possible to set the RF to BLE mode, and then only when we want to send the 1GHz packet, we'll temporarily change the RF configuration to 1GHz, send the packet, and then return the RF to BLE mode.
    As far as I see, the worst that could happen is the BLE could miss a packet or two during the 1GHz transaction, but that probably won't be harmful.
    Am I missing something?
    Also could you please elaborate of which parts of the system are allocated in the ROM. Isn't the BLE and the RTOS should be there?
    In the document, it seems that the BLE occupies almost half of the FLASH, and the other two applications takes the other half, so almost no FLASH remains. Is that true?

    Thanks, Isak.
  • Hi Isak,

    We do not currently have a fully functionable dual-mode driver for the CC1350; thus why we have a dual image example. The BLE stack is only stored in ROM on CC2640R2, not on CC1350. Your last statement is correct; what you can do is use an external flash chip, store the second image on this chip, and re-boot/re-flash as necessary.

    Skyler
  • Hi Skyler,

    Thanks for your answer.

    Is it OK to assume that you're working on a dual mode driver, and it will be available in the near future?

    If so, can you please estimate of how much FLASH will be left for the actual application?

    From what I see now, the device have 128K of which about 64K are taken by the BLE stack, and about 32K by a very basic BLE peripheral application.

    This only leaves about 32K space for the actual application. I'm not sure that my application will fit there...

    About your suggestion of reflashing the chip on every switch to/from BLE, I'm not sure it's feasible in my case. I would like to have a sub-1GHz packet sent every 5 minutes, while keeping the device BLE connectable. This will require to reflash twice every 5 minutes. Not sure it's very efficient, and also will place a big wear on the flash.

    Thanks, Isak.

  • Hi Isak,

    I was informed that the multi-mode RF driver is available in the latest SDK (1.30), but we do not yet have examples on how to use it. I do not know when these will be available.

    I believe you would be right, that the dual-mode driver would essentially null the ~30 kB that the second image takes up, leaving about 32 kB left. The only way to make more space would be to further optimize the BLE application and stack, which I'm not sure can be done. This would be a good question for the BLE forum (e2e.ti.com/.../bluetooth_low_energy).

    Skyler
  • Hi,

    May I know is your implementation of BLE central at the CC1350 successfully done? I am working on it too.

    Thanks,

    Sincerely,

    Kwan

  • Hi Kwan,

    Unfortunately, I've realized that this device is not very useful for an application that includes both BLE and Sub-1GHz communications at the same time.

    It has a very serious FLASH limitation.

    It can maybe do only one of them at a time, and also that with a very limited memory left for the application.

    Trying to implement both will leave you with virtually no room for any useful application.

  • Skyler,

    We are on the same boat as you are :(

    Since CC1350 has very less internal flash is it possible to expand the flash by external  flash memory say we have 1MB external flash and some part of the application code reside there in the external flash. In our case we need over the air update feature as well.. I am not sure if some part of the application code reside in the external flash work. At present, OTA use external flash for during software update process.

    TI experts does this proposed solution works?? pls confirm.

    Regards,

    Krish

  • Krish,

    No, this will not work, the CC13xx device cannot execute from external flash. The only option for dual mode and external flash is to store a complete image externally and then switch back and forth as needed. This is what we call "mode switching" and it can be used where you are deploying a Sub1GHz network and you need BLE only for deployment. Then switch to Sub1GHz permanently.

    Regards,
    /TA
  • TA,

    Could u pls explain what is the meaning of "The only option for dual mode and external flash is to store a complete image externally and then switch back and forth as needed." As u mentioned that it can't execute from external flash.. how can we switch the complete image externally do u mean flash the internal image with the external flash image and restart?

    Regards,
    Krishna
  • It means you can store two different binaries, one is for sub GHz and another is for BLE, in a larger external flash. When you want to run sub GHz application, you can boot loader to load the binary from external flash into internal flash to run it. If you want to run BLE application, you can let boot loader to load BLE binary to internal flash to run it too.
  • Do you mean keep writimg the internal flash and execute? Do u know how much time it will take to copy 125K of image from external flash?

  • You only have to write internal flash when you need to switch application between sub GHz and BLE. I don’t have information about the time for writing internal flash but it would take many seconds.
  • Thanks for suggestion..
    1. Is there any example code that bootloader get it to internal flash and execute?
    2. If we reserve a part of the flash to the NVM and store some application parameter there, can bootloader retain that part of memory during copy the image from external flash to internal?
  • There’s BIM_extflash example in BLE Stack which your work can be based on it and you can reserve a part in nvm to keep application information which you can reserve it to not be erased by BIM.