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.

RTOS/CC2650: Frequency hopping reception with CC2650

Part Number: CC2650
Other Parts Discussed in Thread: CC2500, , CC2510

Tool/software: TI-RTOS

i‘m using the CC2650 to design a "Frequency hopping reception"  RF module. i have finished these product use STM32 + CC2500.

but i want to use CC2650 replace this combination. 

the module is half duplex communication,after receive a right packet, i  need to change the cc2650 to work in TX mode,how to change the work module from Rx to Tx  and Tx to Rx?

how to change the CC2650 frequency after receive a right packet?  

Thanks!

  • Hello, 

    Switching from TX to RX and changing frequency has to be implemented in the application code using the APIs and RF driver commands. There are several examples released with TI RTOS for CC2650 that provide a good starting point for building your application. They also provide information on using different APIs to program the device in RX and TX modes. For faster switching, command chaining feature can be considered. If you have any specific questions regarding implementation of any feature or command, please let us know. 

    Regards,

  • Thank you SVS.

    when the CC2650 receive a right packet, i use the commad to change the frequency in a TIMER_A interrupter:

    RF_cmdFs.frequency = Hop_Sequence_m[ next_f ];

    RF_postCmd(prop_handle,(RF_Op*)&RF_cmdFs,RF_PriorityNormal,NULL,0);

    and use the command change the RF from RX TO TX:

    RF_cmdPropTx.startTime =0;

    RF_cmdPropTx.startTrigger.triggerType = TRIG_NOW;

    RF_postCmd(prop_handle,(RF_Op*)&RF_cmdPropTx,RF_PriorityNormal,NULL,0);

    use the API to switch to RX:

    RF_postCmd(prop_handle,(RF_Op*)&RF_cmdPropTx,RF_PriorityNormal,&rf_callback,IRQ_RX_ENTRYDONE);

    i find a strange phenomenon,if open the Radio first,then power the CC2650, it works very well,but if i power on the CC2650 and then open the Radio,it works sometimes good, sometimes bad.

    but it works all normal on the cc2500 /cc2510 with the same code.

    could you help me and give me some example?  i use the CCS 6.2 with TI-RTOS 2_20_00_06.

  • can you give me some examples about switch TX(RX) to RX(TX), I use CCS6.2 with TI-RTOS 2_20_22_06 and i cannt find "several examples released with TI RTOS for CC2650" as you said.
    by the way, it takes how many time to finished the command RF_postCmd()?

    i found when the CC2650 received a packet, it will went into the rf_callback() after 31us,the RF_EventLastCmdDone is set, i did not enable this interrupter,why it gone into?
  • hi,
    where the examples? can you give me a link?
  • Hi,

    This is question from my customer, any update? It's quite urgency.

    Vivian

  • Hello, 

    The examples are in the latest release of TI RTOS "tirtos_cc13xx_cc26xx_2_21_00_06", is there a reason you are using "tirtos_cc13xx_cc26xx_2_20_00_06" version or can you upgrade to the latest (recommended)? 

    The sequence of commands from your post looks OK, however, depending on the way transmit and receive operations are setup, if the previous command execution is not complete when the net command is issued, the radio might not behave as expected. You can use RF_pendCmd() to ensure that the previous command has finished execution. 

    Can you please elaborate on what is being done to "open the Radio first,then power the CC2650"? Are you changing the power modes? 

    Since the receive command is called with this function, when RX entry is done, the execution is transferred to the callback. 

    RF_postCmd(prop_handle,(RF_Op*)&RF_cmdPropTx,RF_PriorityNormal,&rf_callback,IRQ_RX_ENTRYDONE);

    Regards,

  • i find the new version CCS and TI-RTOS can not be fully compatible with the old version.and the CCS and rtos update too frequently,so i stay in old version. i will try
  • hello,
    i have updated the RTOS to 2_21_00_06.

    I call the RF_flushCmd()(same as RF_cancel()) before use RF_postCmd();

    1. i enable the RF interrupt :
    RF_postCmd(prop_handle,(RF_Op*)&RF_cmdPropRx,RF_PriorityNormal,&rf_callback,IRQ_RX_ENTRYDONE);

    it enter the rf_callback() after receive a packet,but i find it will enter the rf_callback() again after the IRQ_RX_ENTRYDONE interrupt ,and the RF_EventLastCmdDone was be set . but i never enable the interrupt IRQ_LAST_COMMAND_DONE.

    2. I call the RF_postCmd() in a time interrupter(GPT_INT_TIMOUT every 3ms) callback, i want to use RF_pendCmd() ,but the time cannot get into to its callback if i use the RF_pendCmd() .

    what the matter?please help!

    thanks!

  • Hello,

    The expected behaviour with the RF_post command is to enter the callback function when IRQ_RX_ENTRYDONE interrupt is received and process the received packet. I do not understand the relevance of IRQ_LAST_COMMAND_DONE interrupt in this execution. If you are using the RF_pend() command, the execution will not return from pend command until the command execution for the command handle passed to it is complete.

    Can you please explain what you are trying to achieve to help us better understand issues that you are facing.

    Regards,
  • Excuse my poor English.

    i find it will get into the rf_callback() twice after rcceive a packet,once is the IRQ_RX_ENTRYDONE interrupt ,and the second is the IRQ_LAST_COMMAND_DONE interrupt, i never enable the IRQ_LAST_COMMAND_DONE interrupt,why it will enter the interrupt?

  • Hello, does i need to call the command RF_close() first when i want to switch the RF to TX from RX mode?