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.

CC1200 RX sniff based on PQT

Other Parts Discussed in Thread: CC1200

Hello,

I am trying to use the CC1200 RX sniff mode. I am transmitting packets via SmartRF Studio. Each packet looks like that: 

Preamble (4 bits) - Sync (32 bit) - Data.

I am trying to recieve the packets using RX sniff mode (eWOR mechanism) with RX termination which is based on PQT. 

I did not succeed in recieving the packets, it seems that the reciever does not recognize the transmission, and thus it does not move to RX mode.

I saw that if I transmit longer preamble (~30 Bytes), I succeed in moving to RX mode. However, I do not wish to transmit such a long preamle (due to receiver energy limitations), but to use the data as some sort of preamble instead. 

In addition I do not want to use RX termination based on CS (again, due to energy limitations).

Is there any way I can use the RX sniff mode with RX termination based on PQT while keeping the transmission as mentioned above?

Is there any other mechanism I can use?

Thanks

Alon

  • Please read this app note: www.ti.com/.../swra428a.pdf carefully and also use the excel sheet linked to in the app note to do calculations. Also check the sniff mode tab in SmartRF Studio which will give you a graph with the calculated on and off times with the wanted settings.

    Datarate is an important parameter in sniff mode.
  • Hello,

    Thank you for your quick answer!

    I have read the app note, and still have some questions:
    Suppose I want to implement myself something that works like "RX sniff mode based on PQT".
    For example: waking the MCU by myself, strobing RX to the CC1200, checking via some GPIO if preamble was found during that short RX, and if yes - opening it for longer RX...

    Is it possible? is there any gpio I can use for that purpose?
    I tried to use the PQT_REACHED gpio but it rises for CW transmission as well...even when I changed the threshold. I tried also to use PQT_VALID gpio but it does not rise in any of the transmission configurations I tested.

    Thanks,
    Alon
  • Why do you not use the built in sniff mode feature. you will save much more power if you let the radio take care of waking up in RX by itself compared to having the MCU waking up every time you want to go to RX.

    Siri

  • Hello,

    I want to implement this mechanism myself because I want to open the reciever every 10 seconds and I can't transmit such a long preamble. I prefer to transmit identical packets continuously which has a short preamble and let the reciever to identify payload as preamble (because of the assumption that random data may contain 0's and 1's flips, like a part of a preamble).

    Thanks,
    Alon
  • PQT looks for a wave pattern that is equal to preamble at least 1 byte long.

    Why do you want to wake up the receiver every 10 s? Could you explain in more detail what you want/ need to do?
  • Hello,
    Due to reciever energy limitations, I want to wake up every 10s for about 10ms and I need an indication for transmission which is not CS (because of false alarms). I thought I can use the PQT mechanism with a more flexible threshold but I didn't succeed, like I have described above.

    Thanks,
    Alon
  • In this case you need a mix of WOR and sniff mode.

    Let say your Tx side sends every 10 s with a given inaccuracy. Then you should on the Rx side use WOR to wake up at 10 s - inaccuracy and use sniff mode after that. You should trade length of preamble with average current consumption when sniffing. You can also use Smart Preamble (see app note) to minimize the time in Rx with long preambles.

    I fail to see that your solution will work. First, it's a lot better to have the radio wake up the MCU when the radio has a valid signal. You can only use PQT on preamble so if you send short packets the Rx side will not always pick up the valid preamble if you just wake up at fixed intervals and just checking a few bytes.