Using the sleep timer of the Si4010 for TX duty cycle enforcement

by <a href=""><font color="#000000"><font size="2">Hero Employee</font></font> </a> tanagy on ‎04-16-2014 09:43 AM - edited on ‎09-25-2017 03:39 AM by Administrator Siliconlabs


How to use the sleep timer of the Si4010 for TX duty cycle enforcement.


The Si4010 API sleep timer module supports two use cases of the sleep timer:

A) This module assists the main application to enforce the duty cycle requirements of the ETSI specification.

B) It also provides a way to set the sleep timer power switch which causes the chip to wake up when the timer reaches 0.

The API functions bSleepTim_CheckDutyCycle and vSleepTim_AddTxTimeToCounter are necessary only for A).

For case A) the following steps must be done before each packet transmission:

1. Call lSleepTim_GetCount. It reads the sleep timer and stores the counter value in an internal API global variable and also returns the value. After the current value is read the sleep timer continues to decrement the counter value.

2. Call bSleepTim_CheckDutyCycle. It compares the sleep timer value stored by the prior call to vSleepTim_GetCount() with the value which would take 1 hour for the counter to completely decrement.

If the stored number is larger, the next transmit will violate the duty cycle enforcing, and a value 0 is returned. Do other tasks or wait, then go back to step 1.

If the stored value is smaller, the next transmit will not violate the duty cycle enforcing, and a value 1 is returned. Go to next step.

3. Call vSleepTim_AddTxTimeToCounter with the parameter wiIntegrand that is calculated from the time of the next transmission according to the description on p 96. of AN370. A value calculated from wiIntegrand will be added to the stored counter value and loaded into the sleep timer.

4. Transmit the packet.

5. Sleep timer keeps counting down even in shutdown state.