SWRA682 December 2020 CC1310 , CC1312PSIP , CC1312R , CC1314R10 , CC1350 , CC1352P , CC1352P7 , CC1352R , CC1354P10 , CC1354R10
To get the wanted dynamic range in the receive chain Automatic Gain Control (AGC) is used. The gain in the receive chain is adjusted according to the input level. The gain always is set to max gain when going into RX and the gain is then adjusted according to the input level. AGC_REF sets for which input signal level the AGC sets the gain to something else than maximum.
Too high AGC_REF will degrade the blocking performance and too low will give increased residual BER.
For CC13x0 the AGC_REF level is set by the following override:
HW_REG_OVERRIDE(0x6088,0xYYXX), where the last byte (0xXX) is wanted AGC_REF. YY sets PA ramping, covered in Chapter 9.
For CC13x2 the AGC_REF level is set by the following override:
HW_REG_OVERRIDE(0x609C,0x00XX), where the last byte is wanted AGC_REF.
The following steps should be done to set the AGC_REF level:
The gain could be read out with a command:
Rfc_CMD_READ_RFREG_t cmdreadRXgain = {
.commandNo = 0x0601,
.address = (0x40046094 & 0xFFFF),
.value = 0,
};
The .address field is 0x40046080 for CC13x0 and 0x40049094 for CC13x2.
Set the chip in RX forever using:
/* Enter RX mode and stay forever in RX */
RF_EventMask terminationReason = RF_runCmd(rfHandle, (RF_Op*)&RF_cmdRxTest,
RF_PrioritNormal, 0,
RF_EventRxEntryDone);
A clock event or similar can be used to read out the gain at given intevals using the following:
RF_runImmediateCmd(rfHandle, (uint32_t*)&cmdreadRXgain);
The AGC_REF level should be set 7- 8 dB higher than the sensitivity limit. To verify the new AGC_REF level, a PER vs level measurement has to be done. The resulting curve should not have residual PER above the sensitivity limit. In other words, the PER should be 0% for all input levels ~3 dB or higher than the sensitivity limit.