RF231 states

Go To Last Post
8 posts / 0 new
Author
Message
#1
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Hi all,
I'm working with an RF231 802.15.4 radio transceiver. I can manage reception and transmission, but I have a couple of doubts about the correspondence between the protocol states and the radio's ones.

I see that the three major states are
TRX_OFF
PLL_ON
RX_ON
BUSY_TX

Reading from the RF231 datasheet (DOC8111),
TRX_OFF is an idle state in which the analog circuitry is turned off.

PLL_ON state correspond to TX_ON state of the protocol. When in this state, the freq. synthesizer is turned on and locks to the required carrier frequency (channels 11 to 26).

In order to receive or transmit the PLL must have locked BUT, we can enter RX_ON state (listen/rx state) from TRX_OFF directly (but we must wait for the PLL to lock).

On the contrary, to enter BUSY_TX state we must first be in PLL_ON state.

The datasheet specifies that any carrier sensing (CCA)/ energy detection (ED) operation required the transceiver to be in one RX state (RX_ON corresponding to "listen" or BUSY_RX corresponding to "receiving a frame").

This leads to my questions: how is carrier sense used? What do we do to transmit/receive a frame?
I mean: if I need to transmit a frame, do I need to first enter RX_ON, to perform carrier sense, then enter PLL_ON and finally BUSY_TX? This sounds rather odd..

Again: is there a way to postpone the RX_ON state to the moment in which some energy is really sensed on the channel from PLL_ON state?

Otherwise it looks like such state is no different from RX_ON and I don't see the reason for it to exist..

Thanks in advance
R

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Hello,

It's easiest to use the radio in 'auto' mode, where for example the TX_ARET will do all the CSMA-CA work, as well as handling 802.15.4 ACKs & retries.

Regards,

-Colin

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

c_oflynn wrote:
Hello,

It's easiest to use the radio in 'auto' mode, where for example the TX_ARET will do all the CSMA-CA work, as well as handling 802.15.4 ACKs & retries.

Regards,

-Colin

Cool ! I hadn't read that part of the datasheet (we always stick to "basic"-anything and hope it will be enough for the purpose ;))
Thankx for the answer!!!
R

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Hello,

Yes in this case the 'advanced' section is actually a lot easier! It takes a tiny bit more setup but the advantages are well worth it.

-Colin

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

> This leads to my questions: how is carrier sense used?

It's part of the CSMA/CA algorithm, if you want to implement that
manually (rather than leaving it to the AT86RF231, by using RX_AACK
mode).

> What do we do to transmit/receive a frame?

Did you look at the appnote AVR2022: AT86RF231 - Software Programming Model?

http://www.atmel.com/dyn/resourc...

> I mean: if I need to transmit a frame, do I need to first enter
> RX_ON, to perform carrier sense,

If you want to transmit using CSMA/CA, yes.

If you want to transmit without CSMA/CA, RX_ON is not needed.

> then enter PLL_ON and finally BUSY_TX? This sounds rather odd.

It's not odd... it's normal. Carrier sense requires the digital part
of the receiver (so the bit stream can be matched against the chip
sequence), so the device must be in one of the RX modes for it to
work. Even energy detection requires all the frontend receiver stages
to be working. (CCA can be implemented as both, energy above
threshold, or carrier sense, or a combination of both; see 6.9.9 in
IEEE 802.15.4-2006.)

PLL_ON is basically the PLL running, but the receiver is turned off
(the PLL frequency is still the same as in the RX case, so the
transition from RX_ON to PLL_ON is fairly quick).

BUSY_TX is a state but nothing you intitiate. What you're doing is to
download your frame contents to the FIFO, then issue a TX_START
command, or give a pulse to the SLP_TR pin. This will shift the PLL
to the transmit frequency (which only requires a few microseconds to
complete), and then start transmitting the preamble and frame data.
All this is called "BUSY_TX" state.

> Again: is there a way to postpone the RX_ON state to the moment in
> which some energy is really sensed on the channel from PLL_ON state?

No, without the receiver, how would you be able to sense any energy at
all, or detect a preamble sequence ("carrier")?

Jörg Wunsch

Please don't send me PMs, use email if you want to approach me personally.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

dl8dtl wrote:

No, without the receiver, how would you be able to sense any energy at
all, or detect a preamble sequence ("carrier")?

True, I was just considering the RX state from a MAC perspective. I come from the 802.11 world, where by "reception state" "BUSY_RX" state is intended. That is because in WiFi you are basically always in RX_ON and sensing the channel.That's where my confusion came from. The truth is that you can't sense the media if your transceiver is not in "reception" (listening).
Thanks.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

dl8dtl wrote:

Did you look at the appnote AVR2022: AT86RF231 - Software Programming Model?

http://www.atmel.com/dyn/resourc...

Yes I did. Speaking of it, is there a place where I can find the defines for the transitions timings "t_TRxx"?

Thanks in advance
R

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

> That is because in WiFi you are basically always
> in RX_ON and sensing the channel.

802.15.x, being a network with low-power intention, distinguishs
between both as actually, "rx listen" consumes about as much power
as a frame transmission with 0 dBm output power.

> is there a place where I can find the defines for the
> transitions timings "t_TRxx"

The datasheet, table "State Transition Timing".

Jörg Wunsch

Please don't send me PMs, use email if you want to approach me personally.