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.

CC2340R5: monitoring radio status when receiving a packet

Part Number: CC2340R5

Tool/software:

i'm receiving a "generic" packet and want to be able to monitor status of the radio itself -- preamble detect, sync word detect, etc....

i recall when working with the cc13xx/cc26xx devices that i was about to configure some GPIOs to reflect the actual demodulated signal as it was being received....

this would also help me troubleshoot an issue i'm having where my receiver is (somehow??) not actually receiving all incoming packets....  is there a way i could see that my radio "started" to receive a packet, but presumably gave up at some point???

any general suggestions on how to trace the radio at this level would be much appreciated....

  • Hi bob,

    Are you referring to Debugging RF Output?  The CC23XX RCL varies greatly from the CC13XX/CC26XX rflib so they will be difficult to compare with one another as it concerns their operations.

    Regards,
    Ryan

  • while this is helpful, i was actually looking for something that reflects the packet data itself....  i've written various plugins for my saleae logic analyzer which can render the TX/RX bit stream before/after modulation/demodulation....  this not only gives me timing as to when the TX/RX starts, but also a picture of the data as well....

    i know there are many {PBE,MCE,RFE} GPIOs associated with the CC23xx RCL....  is there any documentation about pins other than RFEGPO{0,1} ???

  • Please allow me some time to ask the Radio R&D Team for further input.

    Regards,
    Ryan

  • Radio R&D provided some useful feedback:

    There is limited insight in what could be the issue here, but there are a few tricks that can be used to see what happens to the packets. The customer may subscribe to some LRF events and then control some IO in the callback. The events that can be useful are the following:

    • lrfEvents.systim2: This even will happen on sync found
    • lrfEvent. rxNok: This event will happen if the packet had CRC error
    • lrfEvent. rxBufFull: This event will happen if the packet was received, but did not fit in the available RX buffers. In this case, the command will also end and the command status will be RCL_CommandStatus_Error_RxFifo.

    Note that in order for these events to be seen, they must be enabled in lrfCallbackMask in the command in addition to checking for it in the callback function.

    If the generic RX command is used, any case of sync found should lead to a packet received, a CRC error, or a full buffer, except if the length field is larger than the maximum length given in the command.  If it turns out that sync is not found on some packets, it will be difficult to find the root cause. In this case, I would look for general RF issues, such as frequency offsets, link budget, and interferers. (The same applies if packets are lost due to CRC error)

    To enable the lrfCallbackMask, please refer to the RCL command and LRFCC23X0.h documentation.  Using rfEchoTx as an example, you would add such a line in the mainThread

    rclPacketTxCmdGenericTx.common.runtime.lrfCallbackMask.value = LRF_EventSystim2.value | LRF_EventRxNok.value | LRF_EventRxBufFull.value;

    Followed by such statements in the echoCallback:

        if(lrfEvents.systim2)
        {
            // ADD DEBUG CODE HERE
        }
        if(lrfEvents.rxNok)
        {
            // ADD DEBUG CODE HERE
        }
        if(lrfEvents.rxBufFull)
        {
            // ADD DEBUG CODE HERE
        }

    Regards,
    Ryan