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.

CC1352R: DMM - BLE + Custom Stack (with EasyLink)

Part Number: CC1352R

Hello, 

Custom Stack Description:

I use Custom Stack, which accesses the radio using EasyLink. This Custom Stack uses 5 kbps SimpleLink Long Range as its physical layer. It is implemented with the use of SDK in version 5_20_0_52. The radio is in receiving mode most of the time, sending data and ACK packets occasionally.

Problem:

I decided to use BLE as a second stack to be able to update devices via OAD. I tried to configure DMM with BLE (Project Zero) and my Custom Stack with help of the User's Guide and SimpleLink Academy, but unfortunately, I encountered a problem. Namely after the initiation of stacks, BLE sends one Adv, and after that Custom Stack is putting the radio into receiving state, and BLE cannot advertise until Custom Stack didn't abort RX. 

Solutions I tried:

I tried to make BLE priority higher than my Customs Stack priority, but it doesn't change anything.

I tried to configure Balanced Mode in syscfg but it also doesn't fix my problem.

Questions:

Q1: Can my Custom Stack which is almost constantly in Rx Mode cooperate with BLE? Should DMM interrupt Rx operation to transmit Adv?

Q2: Do I need to configure(in syscfg or via functions)/implement something in EasyLink to allow cooperation with other Stacks?

Q3: If my Custom Stack can cooperate with BLE, do you have any solution on how can I solve my problem?

Best Regards

  • Hi Jakub,

    How is your RX command configured as of now? Is it preemptable (bEnaCmd set to "1"), and is it setup to timeout after a given time (endTime configured to some value)? You can read more about those triggers in section 25.3.2.5.1 of the technical reference manual (swcu185e.pdf)

    About your questions:

    Q1: You should definitely interrupt RX in order to transmit the BLE ADV. Please setup the application policy setup and states.

    Q2:  Please also setup the DMM weights according to which stack you want to prioritize.

    Here are some tips about it: https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/962414/lpstk-cc1352r-proprietary-rf-cmd_fs-cmd_prop_tx-scheduling-with-dmm-api

    Regards,

    Arthur

  • Thanks for your reply, Arthur.

    So my RX command was configured as it is in EasyLink. After your reply, I changed bEnaCmd to "1" and put 500ms rxTimeout (in Syscfg) for my Custom Stack. After those changes, RX was turning off after 500 ms with "Timeout Status", but just for a while, because Custom Stack immediately after getting to know that RX is turned off, is turning on back RX. During breaks, BLE was transmitting Adv randomly, ones a several breaks (seen on the oscilloscope).

    I also went through SimpleLink Academy for DMM, and on the basis of SimpleLink Academy, I implemented app - DMM: BLE + rfEchoRx, in which rfEchoRx (prop RF) is constantly in RX mode until termination (e.g. received packet or termination). And this solution works similarly to mine, so rfEchoRx is occupying radio, while BLE is preempting it once at a given time. The main difference between this solution and mine, which I have seen is the function to schedule the radio command. DMM: BLE + rfEchoRx uses RF_runScheduleCmd, while EasyLink uses RF_ScheduleCmd.

    Q: Can that describe difference be a problem?

    Best Regards

    Jakub

  • Hi Jakub,

    Maybe the fact that RF_runScheduleCmd actually blocks until the command completes, unlike RF_ScheduleCmd which returns immediately makes the solution work in that case. It all depends on the application logic.

    Regards,

    Arthur