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.

LAUNCHXL-CC1312R1: Question about Partial RX Data

Part Number: LAUNCHXL-CC1312R1
Other Parts Discussed in Thread: CC1200, SYSCONFIG

I am trying to port a CC1200 application over to the CC131.  This application requires as real-time access to the RX'd data as possible.  I was hoping to use Partial Read RX Entry for this purpose, however I am wondering if there are limitations onthis feature.  On the CC1200 for example I would just set the RX FIFO threshold to 2 bytes so that every 2 RX'd bytes I can process the data, not real-time but only a 2 byte lag time.  On the CC131 with partial data enabled and config.irqIntv = 1, I was hoping I could get access to byte by byte data.  However I'm noticing that the RF_EventNDataWritten IRQ isn't happening very fast, we are using slightly over 100k symbol rate, so each byte time should roughly be 80 us or so, plus processing delay round it up to 100 us to be safe, I was expecting to use RF_EventNDataWritten  IRQs every 100 us or so, but as the attached capture shows, the time between IRQs is ~450 us, about 4 or 5 byte times between interrupts.

I'm using the following link for partial read implementation with a change to the IRQ interval to 1.

e2e.ti.com/.../2542723

Thanks for any input on this question.

  • Just wanted to pass along an update, I did confirm that the callback is happening every 6 bytes.  Any config.irqIntv setting less than 6 bytes has the same behavior, it is extended out to 6 bytes between interrupts.  Just wondering if there's a way I can get this going a bit faster.

  • Hi Jeffrey,

    Sorry for the delay, I've assigned this thread to someone. They should contact you shortly. 

    BR,
    Andres

  • Writing to the RX buffers happening in burst, and if more than one bytes are written, you will still only get one IRQ_RX_N_DATA_WRITTEN.

    Setting for example irqIntv =4 only guarantees that you have received at lest 4 bytes in the RX entry, not that you will have an interrupt every 4 bytes.

    Siri

  • I can understand that, but my question is if there is a way to deliver the bytes faster?  On the CC1200 I can get bytes at that symbol rate every 150 us, but on the CC1312 the best I can get data in is in 450 us intervals, this seems a little counter intuitive since we have direct access to the RF core.  Is there a patch or RF driver library change that can enable data delivery on par with the CC1200?

    I can understand that this is a non-standard request, for context our application hops very fast (every couple of milliseconds) and any added latency means less data per hop.  Just wondering if it's possible or not to reduce that latency.

    Thanks,

    Jeff

  • HI Jeffrey

    I just learned from R&D that we have a "secret" override that might give you what you want:

    Try to add this to your override list:

    0x000082C3

    I did a test where I configured the CC1312 for 100 kbps and used partial read entries. irqIntv = 1

    I then got an interrupt every 80 us.

    Please note that if you are using the advanced RX function and have a header that is more than 1 byte, the complete header will be written as a burst before you get the first interrupt. The same is the case for CRC. If you have a 2 byte long CRC, both bytes are written in one burst before you get the interrupt. For the rest of the packets, the interrupt are coming after each byte.

    To modify the override list through sysConfig you can do the following:

    and add an filed called customOverrides.h to you project that should look like this:

    #ifndef _CUSTOM_OVERRIDES_H_
    #define _CUSTOM_OVERRIDES_H_
    
    #define CUSTOM_OVERRIDES()\
        (uint32_t)0x000082C3
    
    #endif // _CUSTOM_OVERRIDES_H_

    BR

    Siri

  • Thanks so much, that indeed did the trick!