KW0x clocking considerations to send the xcvr to Sleep and Listen (Idle + Rx) mode

cancel
Showing results for 
Search instead for 
Did you mean: 

KW0x clocking considerations to send the xcvr to Sleep and Listen (Idle + Rx) mode

1,186 Views
CesarM
Contributor III

In a power sensitive application sending both the xcvr and the MCU to a low power mode is necesssary.

Sleep and Idle modes are the lowest consumption modes that can be achieved in the xcvr, with 0.1 uA and 1.2 uA respectively (For

more details refer to the device datasheet)

It's a common practice to feed the xcvr with an external clock and use the CLKOUT signal provided by the xcvr to feed the

MCU. In this scenario considerations need to be taken prior to sending the xcvr to any of the above power modes because the

CLKOUT signal is not available in any of these modes.

Considerations:

*Sleep Mode*

1) Change the MCU to a clocking mode that doesn't feed from the external CLKOUT signal

Example:

Change to an internal clock source like FEI (FLL Engaged Internal)

2) Set Sequencer Off

This is achieved by writting to the corresponding xcvr register: RegOpmode (0x01)

Set bit SequencerOff to 1.

This allows to go direclty to the selected operating mode (Sleep or Idle).

3) Set the desired Operation mode

This is achieved by writting to the corresponding xcvr register: RegOpmode (0x01)

Write bits MODE (4-2) to send the xcvr to the desired mode.

Sleep= 000

*Listen Mode*

Prior to following steps 1-3 the user will need to configure registers RegListen1, RegListen2, RegListen3

to indicate Idle times and RX times.

Step 0)

- Configure RegListen1

Example:

RegListen1(0x0D)= 0xD0 -> This will configure Idle time resolution to 262ms (MAX) and Rx time resolution to 64uS (MIN)

- Configure RegListen2

Example:

RegListen2(0x0E)= 0xFF -> This will set the duration of the Idle phase to 255. TOTAL IDLE PHASE TIIME  = 255 * 262mS= 66.81 Seconds

- Configure RegListen3

Example:

RegListen3(0x0F)= 0x01 -> This will set the duration of the Rx phase to 1. TOTAL RX PHASE TIIME    = 1 * 64uS= 64 uS

After this you can follow steps 1-3 indicated in Sleep Mode.

*Note: In step 3 set the MODE (4-2) bits to "StandBy"

StandBy= 001

Labels (1)
0 Kudos
8 Replies

489 Views
jongsoojeong
Contributor I

Hi,

While I'm looking for articles about 'Listen Mode', I found this page.

If you help me, I'd appreciate it.

1. In the last phrase of your article, I think you missed setting ListenOn bit.

2. For entering Listen On, MUST the Mode bits be "StandBy"?

3. I cannot find anything about aborting Listen Mode in the reference manual. The ListenAbort bit seems to be very related with it. Could you tell me how to use it?

Thank you!

- Jongsoo

0 Kudos

489 Views
luisburgos
NXP Employee
NXP Employee

Hi Jongsoo,

Yes,

To enter in Listen Mode you need to configure Mode bits into Standby mode (001), and also you need to set ListenOn bit (1) both in RegOpMode MKW01's register.

Now,

To exit from Listen Mode to Standby Mode (for example) you need to set ListenAbort bit (1), Turn off ListenOn bit (0) and Set StandBy bits (001) together in RegOpMode register.

Hope this info could be helpful for you.

Regads,

Burgos.

0 Kudos

489 Views
benjaminchang
Contributor V

Hi Burgos,

We are trying to implement Listen mode on KW01.

How to calculate power consumption in Listen mode?

At Xcvr side,

Supply current in Idle mode is 1.2 uA in tListenIdle

Supply current in Standby is 1.25 mA in tListenRx

What about MCU side?

Is it ok to keep MCU in one of the low power mode, till Xcvr make an interrupt?

IDD_LLS is 1.7 uA at 25 C; IDD_VLLS3 is 1.3 uA at 25 C

For ListenEnd in RegListen3,

If PayloadReady interrupt is mapped to DIO0, but this DIO0/PTE2 is not a valid LLWU input pin on KW01,

Should this DIO0/PTE2 be externally connected to such as PTB0/LLUU_P5 pin, and wake-up MCU?

Is there an example design for Listen mode?

Regards,

Benjamin

0 Kudos

489 Views
luisburgos
NXP Employee
NXP Employee

Hi Benjamin,

Listen mode is only for XCVR side, for MCU side there are other operation modes.

There is a low power demo for the SMAC protocol available in the Freescale´s website where you can configure the MCU and the XCVR to the desire operation mode through a serial terminal menu.

To download and install the software follow the next instructions in this post:Download and install SMAC & IEEE 802.15.4 software stacks for the MRB-KW01

After installing the SMAC stack, follow the next path stored in your PC and download the firmware into your MRB-KW01 (with TWR_RF module) board using IAR 7.4: C:\Freescale\KW01_SMAC_v3.0.2\app\ieee_802_15_4\Low_Power_Demo\mrbkw01_twrrf\build\iar

Header J13 on the MRB allows you to take measurement currents of the MCU and XCVR, refer to the schematics:

current.png

Regarding to your question about DIO0/PTE2 the answer is affirmative, you can make an external connection to a LLWU pin and wake up the MCU.

You can have your MCU in a low power mode until a XCVR interrupt wakes up the MCU.

Best regards,

Burgos.

0 Kudos

489 Views
benjaminchang
Contributor V

Hi Burgos,

Thanks for the information.

We (and Daniel) have downloaded, installed, and running "Low_Power_Demo".

We changed below part of code in "InitApp()"

  /*set rx and idle resolution*/

  //Resolution 64us;

  Phy_SetListenResRx(0x10);

  //Resolution 64us;

  Phy_SetListenResIdle(0x40);

  //62*64 = 3.968 ms

  Phy_SetListenCoefRx(62);

  //187*64 =11.968 ms

  Phy_SetListenCoefIdle(187);

...

Next are the test results:

"RegListen1               "RegListen2 : RegListen3

"Resolution(Rx and Idle)  "(ListenCoefIdle:ListenCOefRx)   "V_RF

------------------------    -----------------------------   ---------

"64us                       1:250                           0.121mA

                            1:200                           0.144mA

                            1:100                           0.281mA

                            1:50                            0.621mA

                            1:25                            1.624mA

"4.1ms                      1:250                           19.713mA

                            1:200                           19.713mA

                            1:100                           19.716mA

                            1:50                            19.717mA

                            1:25                            19.721mA

                            1:5                             19.711mA

       

"262ms                      1:250                           19.711mA

                            1:200                           19.702mA

                            1:100                           19.705mA

                            1:50                            19.713mA

                            1:25                            19.681mA

                            1:5                             19.549mA

As we are checking V_RF using a multimeter, we expect an average ADC reading, but it seems to be the maximum current reading for Rx (16 mA, Supply current in Receive mode, Table 10 of MKW01Z128.pdf). In the original demo code was 3.968 ms (Rx) vs. 11.968 ms (Idle), so we expect an 1/4 power consumption ~= 5 mA, which is still very high. Can you comment on this?

Another issue, what is the criteria to set Rx duration period, such as 3.968 vs. 11.968 ms, in the sample code?

Regards,

Benjamin

0 Kudos

489 Views
benjaminchang
Contributor V

Hi Burgos,

After checking the program code, we found our last testing is void, as we selected

Press [1] Manual Power Modes Configuration

Which seems never get into Listen mode, so the test data listed are all invalid.

After we:

-Press [r] for RX Mode

-Press [2] Listen Mode Scenario

then we can see "Going into listen mode.", then we can get the reasonable mADC reading from meter, as proportional to Rx (~19 mA), while the switching timing is in mS level.

We further change code to use 262 ms as resolution, and extent duration to 4 sec for both Rx and Idle. Then we can see clearly the current switching from 19 mA to 0.0012 mA (using multimeter).

Question:

(1) Rx (16 mA, Supply current in Receive mode in RM spec) in Listen mode is still too high. How to improve?

(2)  What is the criteria to set Rx duration period, such as 3.968 vs. 11.968 ms, in the sample code?

Regards,

Benjamin

0 Kudos

489 Views
luisburgos
NXP Employee
NXP Employee

Hi Benjamin,

I am glad that you was able to solve the issue regarding going into listen mode.

This example code was offered as an example to know how to configure the registers, so to improve that RX current consumption you can try modifying the listen coeficientes as you did (make the radio sleep longer). This is only for the radio side, but you can also configure the MCU into a low power mode (LLS for example) to save more current.

Best regards,

Burgos.

0 Kudos

489 Views
danieltseng
Contributor V

Hi Burgos:

How can I make 「listen mode」 to reduce current?

In the following situation, I try to measure V_RF

<1>

  two board: one set TX, another set RX

  then, press[2]Listen Mode Scenario

  ==> result, V_RF always 3.563mA( the same is Run mode)

 

<2>

  two board: one set TX, another set RX

  then, press[1]Manual --> [6]LLS  -->[2]Listen mode -->[1]

  ==> result V_RF 19.630mA (the same is RX Mode)

  

<3>

  two board: one set TX, another set RX

  then, press[1]Manual --> [6]LLS  -->[1]sleep mode -->[1]

  ==> result V_RF 0.12uA

Conclusion: sleep mode current can be reduced,

            why listen mode did not expect current savings?

Can you help me where wrong?

Regards,

Daniel

0 Kudos