SWCU192 November 2021 CC1312R7 , CC1352P7 , CC2652P7 , CC2652R7
Section 26.10.2.3 gives the parameters for the carrier-sense operation, which are common for all the commands. The offset from the first byte used for carrier-sense parameters are also given in Section 26.10.2.3.
The channel can be in one of three states: BUSY, IDLE, or INVALID. BUSY indicates a signal on the channel. IDLE indicates no signal is present on the channel. INVALID indicates that the state cannot be determined. There are two sources of channel information, RSSI and correlation, and a separate state is maintained for each source.
The operation starts when the radio is set up in receive mode. The RSSI or correlation is monitored, according to the enable bits csConf.bEnaRssi and csConf.bEnaCorr. If csConf.bEnaRssi is 1, the RSSI is monitored. If csConf.bEnaCorr is 1, the correlator is set up to correlate against the preamble. It is not possible to set both enable bits to 0.
If csConf.bEnaRssi is 1, the RSSI is monitored every time a new value is available from the radio. At each update, the RSSI is compared against the signed value rssiThr. If the RSSI is below rssiThr and numRssiIdle consecutive RSSI measurements below the threshold have been observed, the RSSI state is IDLE. If the RSSI is above rssiThr and numRssiBusy consecutive RSSI measurements above the threshold have been observed, the RSSI state is BUSY. Otherwise, the RSSI state is INVALID.
If csConf.bEnaCorr is 1, the radio CPU monitors correlation peaks from the modem. When the radio starts, the state is INVALID. If no correlation top is observed until corrPeriod RAT ticks after the carrier sense command was started, the state becomes IDLE. If the state is IDLE and at least corrConfig.numCorrInv correlation tops with at most corrPeriod RAT ticks between them are observed, the state becomes Invalid. If the state is INVALID and at least corrConfig.numCorrBusy correlation tops with at most corrPeriod RAT ticks between them are observed, the state becomes BUSY. If corrConfig.numCorrBusy is 0, the state goes directly to BUSY from IDLE. The value of corrConfig.numCorrIdle must be greater than 0. If the state is not Idle and corrTime RAT ticks pass after the last correlation top, the state becomes IDLE again.
If only one of the enable bits is 1, the channel state is equal to the state of the corresponding source. If both enable bits are 1, the channel state depends on the state of the two sources and the csConf.operation bit, as shown in Table 26-187.
csConf.operation = 0 | |||
---|---|---|---|
RSSI State | Correlation State | ||
INVALID | IDLE | BUSY | |
INVALID | INVALID | INVALID | BUSY |
IDLE | INVALID | IDLE | BUSY |
BUSY | BUSY | BUSY | BUSY |
csConf.operation = 1 | |||
RSSI State | Correlation State | ||
INVALID | IDLE | BUSY | |
INVALID | INVALID | IDLE | INVALID |
IDLE | IDLE | IDLE | IDLE |
BUSY | INVALID | IDLE | BUSY |
If the state of the channel changes to BUSY, the action depends on csConf.busyOp and the command being run. If csConf.busyOp is 0, the operation continues. If csConf.busyOp is 1 and the command is CMD_PROP_CS, the operation ends with PROP_DONE_BUSY as status. If csConf.busyOp is 1 and the command is CMD_PROP_RX_SNIFF or CMD_PROP_RX_ADV_SNIFF, the receive operation continues, but carrier sense is stopped, so the operation is not affected if the channel state later changes to IDLE.
If the state of the channel changes to IDLE, the action depends on csConf.idleOp. If the value of this field is 0, the receiver and carrier sense operation continues. If it is 1, the operation ends with PROP_DONE_IDLE as status.
If the trigger given by csEndTrigger and csEndTime is observed, the action depends on the command being run and the channel state at that time. The details are described in Section 26.10.5.5.2 and Section 26.10.5.5.3.