Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

# Power level granularity in blecm_setTxPowerInConnection() and blecm_setTxPowerInADV()

Employee
Employee

[On 5/30/2014, this entry was modified to enhance clarity]

In SDK 1.x.x, the function bleprox_mod_Create() makes calls to blecm_setTxPowerInConnection() and blecm_setTxPowerInADV().

Although SDK 2.x.x does not use bleprox_mod_Create(), we do see calls to the power control functions mentioned in thread title.

Within bleprox_mod_Create(), we see the following comments:

//default is 4dB

// 3 , -1, -5, -9, -13, -17, -21, -25 db

Question: What are the acceptable values to pass and how much granularity is there when controlling the transmitter on the radio?

1 Solution

# Re: Power level granularity in blecm_setTxPowerInConnection() and blecm_setTxPowerInADV()

Employee
Employee

Answer:

Per the technical reference manual, the radio will not transmit at greater than +4.0dBm.

The silicon has nuances -- time, temp, process variation -- which can sway the transmitter.  Since it can never transmit hotter than +4.0dBm, there is a "rounding process" in steps of 4dB.

Think of the transmitter capabilities as entries in an array in C-Code:

signed int Power_Table[] = { 3, -1, -5, -9, -13, -17, -21, -25 };

Function calls to blecm_setTxPowerInConnection() round to the nearest value in the table and the middle value rounds "up".

blecm_setTxPowerInConnection( 4 ) = Maximum radio transmission, not to exceed +4dBm.

blecm_setTxPowerInConnection( 3 ) = Maximum radio transmission, not to exceed +4dBm.

blecm_setTxPowerInConnection( 2 )  = Maximum radio transmission, not to exceed +4dBm.

blecm_setTxPowerInConnection( 1 )  = Maximum radio transmission, not to exceed +4dBm.

blecm_setTxPowerInConnection( 0 )  =  -1dBm plus or minus variance of silicon.

blecm_setTxPowerInConnection( -1) = -1dBm plus or minus variance of silicon.

.

.

.

Passing numbers higher than 4 is permitted but ignored and equivalent to using the value of 4.

5 Replies

# Re: Power level granularity in blecm_setTxPowerInConnection() and blecm_setTxPowerInADV()

Employee
Employee

Answer:

Per the technical reference manual, the radio will not transmit at greater than +4.0dBm.

The silicon has nuances -- time, temp, process variation -- which can sway the transmitter.  Since it can never transmit hotter than +4.0dBm, there is a "rounding process" in steps of 4dB.

Think of the transmitter capabilities as entries in an array in C-Code:

signed int Power_Table[] = { 3, -1, -5, -9, -13, -17, -21, -25 };

Function calls to blecm_setTxPowerInConnection() round to the nearest value in the table and the middle value rounds "up".

blecm_setTxPowerInConnection( 4 ) = Maximum radio transmission, not to exceed +4dBm.

blecm_setTxPowerInConnection( 3 ) = Maximum radio transmission, not to exceed +4dBm.

blecm_setTxPowerInConnection( 2 )  = Maximum radio transmission, not to exceed +4dBm.

blecm_setTxPowerInConnection( 1 )  = Maximum radio transmission, not to exceed +4dBm.

blecm_setTxPowerInConnection( 0 )  =  -1dBm plus or minus variance of silicon.

blecm_setTxPowerInConnection( -1) = -1dBm plus or minus variance of silicon.

.

.

.

Passing numbers higher than 4 is permitted but ignored and equivalent to using the value of 4.

# Re: Power level granularity in blecm_setTxPowerInConnection() and blecm_setTxPowerInADV()

Anonymous
Not applicable

What is the default power output setting without making this call? Is it 0 dB or +4 dB?

# Re: Power level granularity in blecm_setTxPowerInConnection() and blecm_setTxPowerInADV()

Employee
Employee

The default is +4dBm.

The spec calls for a 2.5dB loss via the on-board antenna, so you'll measure a bit less at the output.

# Re: Power level granularity in blecm_setTxPowerInConnection() and blecm_setTxPowerInADV()

Anonymous
Not applicable

Shouldnt changing the txPower levels affect the amount of current the chip draws?

I am cycling through all the dB settings above at the end of the create functon and dont see much of a difference at all in how much current the BT chip is drawin .. is this not the place to try these?

# Re: Power level granularity in blecm_setTxPowerInConnection() and blecm_setTxPowerInADV()

Employee
Employee

One would think the current draw would indeed tightly track the transmit power level.  However the radio is only on for a very short period of time and without a power meter to measure the consumption at very fast intervals, you probably won't even see the increase when using a traditional ammeter.

What equipment are you using to measure the power draw?

Are you sure the new transmit settings are taking effect?