This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AWR1642BOOST: Saturation Monitor

Part Number: AWR1642BOOST
Other Parts Discussed in Thread: AWR1642

Hi,

I would like to use the Rx Saturation Monitor on the awr1642 board to monitor the saturation of the channels. In my project I am using mmwave_sdk_03_05_00_04. The tests were run on the board, which are located in the C:\ti\mmwave_sdk_03_05_00_04\packages\ti\control\mmwavelink\dfptest folder. From their results, you can see that MON_RX_IF_SATURATION failed:

Debug: Starting test number 8. StartStop with reconfiguration, iteration number 8
Debug: Finished setLowPowerMode
Debug: Init time calibration status [0x800017fe] 
Debug: RF start successfully
Debug: Received 100 latent fault reports.
Debug: Max latent fault wait = 2.
Debug: Starting Sensor.. 
Debug:  Frame Stop Async Event 
All 300 frames received.
Debug: Received 100 latent fault reports.
Debug: Max latent fault wait = 2.
[Debug]: Received Zero reports for monitoring feature MON_TEMP
[Debug]: Received 150 reports for monitoring feature MON_RX_GAIN_PH        
[Debug]: Received 150 reports for monitoring feature MON_RX_IF_STAGE       
[Debug]: Received 150 reports for monitoring feature MON_TX0_POWER         
[Debug]: Received 150 reports for monitoring feature MON_TX1_POWER         
[Debug]: Received 150 reports for monitoring feature MON_TX0_BALL_BRK      
[Debug]: Received 150 reports for monitoring feature MON_TX1_BALL_BRK      
[Debug]: Received 150 reports for monitoring feature MON_SYNTHESIZER_FREQ  
[Debug]: Received 150 reports for monitoring feature MON_TX0_INT_ANA_SIG   
[Debug]: Received 150 reports for monitoring feature MON_TX1_INT_ANA_SIG   
[Debug]: Received 150 reports for monitoring feature MON_INT_RX_SIG        
[Debug]: Received 150 reports for monitoring feature MON_INT_PMCLKLO_SIG   
[Debug]: Received 150 reports for monitoring feature MON_INT_GPADC_SIG     
[Debug]: Received 150 reports for monitoring feature MON_PLL_CONTROL_VOLT  
[Debug]: Received 150 reports for monitoring feature MON_DCC_CLOCK_FREQ    
Error Monitoring feature MON_RX_IF_SATURATION  : expected 150 reports. Received 0.
[Debug]: Received 100 reports for Digital latent fault.
[Debug]: Received 150 reports for Digital periodic report.
[Debug]: Received 46 reports for periodic calibration.
[Debug]: Received 150 report headers.
--- Test 8 (reconfig) result:
Feature: Test: Failed

Based on the documentation and tests, the following configuration was created and called in mss:

#define CQ_NUM_SLICES    10U
rlMonAnaEnables_t anaMonConfig = {
		.enMask = (1U << 0U | 1U << 15U | 1U << 24U | 1U << 25U),
		.ldoScEn = 0,
};
retVal = rlRfAnaMonConfig(RL_DEVICE_MAP_INTERNAL_BSS, &anaMonConfig);
if (retVal != RL_RET_CODE_OK) {
	System_printf("Error: rlRfAnaMonConfig [Error %d]\n", retVal);
	return retVal;
}
rlRxSatMonConf_t rxSatMonCfg = {
	.profileIndx   = 0U,
	.satMonSel     = 3U,
	.reserved0     = 0U,
.primarySliceDuration = 4U,
	.numSlices     = CQ_NUM_SLICES,
	.rxChannelMask = 0U,
	.reserved1     = 0U,
	.reserved2     = 0U,
	.reserved3     = 0U,
	.reserved4     = 0U
};
/* Set RX IF Stage monitor configuration */
retVal = rlRfRxIfSatMonConfig(RL_DEVICE_MAP_INTERNAL_BSS, &rxSatMonCfg);
/* Check for mmWaveLink API call status */
if (retVal != RL_RET_CODE_OK) {
	/* Error: Link reported an issue. */
	System_printf("Error: rlRfRxIfSatMonConfig retVal=%d\n", retVal);
	return retVal;
}
rlSigImgMonConf_t sigImgMonCfg = {
		.profileIndx   = 0U,
		.numSlices     = CQ_NUM_SLICES,
		.timeSliceNumSamples = 4U,
		.reserved0     = 0U,
		.reserved1     = 0U,
};
/* Set RX IF Stage monitor configuration */
retVal = rlRfRxSigImgMonConfig(RL_DEVICE_MAP_INTERNAL_BSS, &sigImgMonCfg);
/* Check for mmWaveLink API call status */
if (retVal != RL_RET_CODE_OK) {
	/* Error: Link reported an issue. */
	System_printf("Error: rlRfRxSigImgMonConfig retVal=%d\n", retVal);
	return retVal;
}

In dss I get values ​​from addresses CQ1 = 0x21028800U and CQ2 = 0x21029000U, each chirp. And I get the following values:

CQ2: numSlices=10, p[0]=0, s[0]=0, p[1]=0, s[1]=0, p[2]=0, s[2]=0, p[3]=0, s[3]=0, p[4]=0, s[4]=0
CQ1: numSlices=10, p[0]={r:-100,i:-90}, p[1]={r:-101,i:-94}, p[2]={r:-105,i:-92}, p[3]={r:-102,i:-88}, p[4]={r:-102,i:-88}, p[5]={r:-102,i:-88}, p[6]={r:-102,i:-86}, p[7]={r:-103,i:-90}, p[8]={r:-104,i:-89}, p[9]={r:-102,i:-88}, p[10]={r:0,i:0}, p[11]={r:0,i:0}, p[12]={r:0,i:0}, p[13]={r:0,i:0}, p[14]={r:0,i:0}
CQ2: numSlices=10, p[0]=0, s[0]=0, p[1]=0, s[1]=0, p[2]=0, s[2]=0, p[3]=0, s[3]=0, p[4]=0, s[4]=0
CQ1: numSlices=10, p[0]={r:-99,i:-92}, p[1]={r:-102,i:-91}, p[2]={r:-101,i:-94}, p[3]={r:-102,i:-91}, p[4]={r:-102,i:-90}, p[5]={r:-101,i:-90}, p[6]={r:-105,i:-92}, p[7]={r:-103,i:-92}, p[8]={r:-103,i:-90}, p[9]={r:-102,i:-89}, p[10]={r:0,i:0}, p[11]={r:0,i:0}, p[12]={r:0,i:0}, p[13]={r:0,i:0}, p[14]={r:0,i:0}
CQ2: numSlices=10, p[0]=0, s[0]=0, p[1]=0, s[1]=0, p[2]=0, s[2]=0, p[3]=0, s[3]=0, p[4]=0, s[4]=0
CQ1: numSlices=10, p[0]={r:-99,i:-88}, p[1]={r:-101,i:-92}, p[2]={r:-105,i:-93}, p[3]={r:-102,i:-88}, p[4]={r:-100,i:-91}, p[5]={r:-101,i:-90}, p[6]={r:-103,i:-91}, p[7]={r:-101,i:-90}, p[8]={r:-101,i:-92}, p[9]={r:-101,i:-90}, p[10]={r:0,i:0}, p[11]={r:0,i:0}, p[12]={r:0,i:0}, p[13]={r:0,i:0}, p[14]={r:0,i:0}

Thus, the SigImgMon values ​​change, but the SatMon values ​​always remain zero, even when the corner reflector is close.Have the following questions, does SaturationMonitor work on awr1642 with mmwave_sdk_03_05_00_04? Can you get the most complete information about the work of SaturationMonitor? And are there any working examples for setting up, receiving and processing information from SaturationMonitor?

Regards,

Dmitriy!