Read RSSI value


I`m wondering whether you could help me with an issue regarding how the RSSI register value should be read.

I’m using AXRadioLab and AXCodeBlocks with your libraries to test an AX8052F143. In the frame configuration I have enabled the MSB first button. From AX5043 Programming Manual (AND9347/D), page 14,

If MSB first is selected (register PKTADDRCFG), then the bits within each byte are swapped when the data is read out from the FIFO.

Then, from that sentence, what I understand is that when I read AX5043_REG_RSSI register I should swap the value. I have the following sentence:

rssi = (radio_read8(AX5043_REG_RSSI)|0xFF00) - axradio_phy_rssioffset;

However, in your default code, you are reading the register directly, without computing the OR product. Well, more specifically, in easyax5043.c lines 378,

int8_t r = radio_read8(AX5043_REG_RSSI); = r - (int16_t)axradio_phy_rssioffset;

Then, which is the correct one to read the RSSI register value? I understand that this should apply to the BGD_RSSI register too. Well, and to the other registers…

Many thanks in advance,


For the query on the RSSI there are these two forum posts on the topic:

The AX5043 doesn`t have a real power detector, but the signal strength is rather calculated from the gains at which the analog gain tracking loop (AGCCOUNTER) and the digital amplitude tracking (TRKAMPL) settle during signal reception (RSSI) or no signal (BGNDRSSI). For this reason a specific constant ‘loss’ value cannot be defined and the RSSI should be threated as a signal strength indicator that correlates to the received power.