您好:
配置高级线性调频脉冲:tx_en,、但当前值无法正常工作。
配置过程如下:
1.配置文件
2.CONFIG 高级线性调频脉冲
3.config 高级帧
和高级线性调频脉冲代码(TxEnCfgData 为0x7,enable 4 tx):
#define chirps_per_cycle 192
静态 int32_t NSWS_MSS_CLIAdvancedChirpCfg (int32_t argc、char* argv[])
{
/*配置文件 ID LUT 抖动本地缓冲区*/
rlInt8_t ProfileCfgData[2]={ 0 };
rlInt8_t StartFreqSlopeData[chirps_per_cycle]={0};
/* Tx 启用 LUT 抖动本地缓冲器*/
rlUInt8_t TxEnCfgData[chirps_per_cycle]={0};
/* Tx0移相器 LUT 抖动本地缓冲器*/
rlInt8_t Tx0PhShiftData[chirps_per_cycle]={0};
rlAdvChirpLUTTx1PhShiftCfg_t AdvChirpLUTTx1PhShiftCfgArgs ={0};
/* Tx1移相器 LUT 抖动本地缓冲器*/
rlInt8_t Tx1PhShiftData[chirps_per_cycle]={0};
rlAdvChirpLUTTx2PhShiftCfg_t AdvChirpLUTTx2PhShiftCfgArgs ={0};
/* TX2移相器 LUT 抖动本地缓冲器*/
rlInt8_t Tx2PhShiftData[chirps_per_cycle]={0};
/* TX3移相器 LUT 抖动本地缓冲器*/
rlInt8_t Tx3PhShiftData[chirps_per_cycle]={0};
rlUInt8_t BpmEnCfgData[chirps_per_cycle]={0};
rlUInt8_t IdleTimeData[chirps_per_cycle]={0};
rlUInt8_t ADCStartTimeData[chirps_per_cycle]={0};
uint16_t i;
/*频率开始 LUT 抖动本地缓冲器*/
rlInt16_t StartFreqData[chirps_per_cycle]={0};//根据线性调频脉冲参数大小更改此值*/
rlAdvChirpCfg_t AdvChirpCfgArgs ={ 0 };
rlFillLUTParams_t rlFillLUTParamsArgs ={ 0 };
rlAdvChirpLUTCfg_t rlAdvChirpLUTCfgArgs ={0};
rlAdvChirpLUTTx0PhShiftCfg_t AdvChirpLUTTx0PhShiftCfgArgs ={0};
int32_t RetVal = RL_RET_CODE_OK;
int32_t bufIdx = 0;
/*配置配置文件(参数索引= 0)*/
/*配置文件参数不支持固定差值抖动*/
/*所有线性调频脉冲的固定配置文件 ID:0 */
/*线性调频脉冲配置文件*/
/* 0-N 0 */
#IF 1
AdvChirpCfgArgs.chirpParamIdx = RL_LUT_CHIRP_PROFILE_VAR;
AdvChirpCfgArgs.ltResetPeriod = chirps_per_cycle;/*在第二次突发(512*2)线性调频脉冲后重置为原始偏移*/
AdvChirpCfgArgs.lutParamUpdatePeriod = chirps_per_cycle/2;
AdvChirpCfgArgs.lutPatternAddressOffset = 0;
AdvChirpCfgArgs.numOfPatterns = 2;
RetVal = rlSetAdvChirpConfig (RL_DEVICE_MAP_INTERNAL_BSS、&AdvChirpCfgArgs);
如果(RetVal!= RL_RET_CODE_OK)
{
printf("***失败-rlSetAdvChirpConfig 失败,错误代码为%d***\n\n",RetVal);
返回返回值;
}
/*配置文件索引*/
ProfileCfgData[0]= 0;
ProfileCfgData[1]= 1;
// ProfileCfgData[2]= 2;
// ProfileCfgData[3]= 3;
/*填充稍后用于 rlSetAdvChirpLUTConfig API 的线性调频脉冲 LUT 缓冲器*/
rlFillLUTParamsArgs.chirpParamIndex = RL_LUT_CHIRP_PROFILE_VAR;
rlFillLUTParamsArgs.inputSize = AdvChirpCfgArgs.numOfPatterns;
rlFillLUTParamsArgs.lutGlobalOffset = lutOffsetInNBytes;
rlFillLUTParamsArgs.chirpParamSize = AdvChirpCfgArgs.lutChirpParamSize;
RetVal = rlDevSetFillLUTBuff (&rlFillLUTParamsArgs、&ProfileCfgData[0]、&AdvChirpLUTData[lutOffsetInNBytes]、&lutOffsetInNBytes);
#endif
/*使用固定抖动时、为 param 类型保留起始16个字*/
//lutOffsetInNBytes += reserved_dither_lut_size * 4;/*将其转换为字节*/
/*启动频率(参数索引= 1)*/
/*对于给定的调制方案(增加和减少 startFreq 抖动),我们不能使用 delta 抖动,但 LUT 抖动。
*/
/*配置512 *2唯一起始频率 LUT 抖动(+0.0014,+0.0014*2...,+0.0014*511,-0.0014,-0.0014*2...,-0.0014*511) GHz :每一个线性调频脉冲增加1.4MHz,直到512个线性调频脉冲,然后每一个线性调频脉冲减-1.4MHz/
/*每个线性调频脉冲都会选择新的起始频率 LUT 抖动(更新周期= 1)、并且每[512 * 2]个线性调频脉冲(= 2个脉冲时)复位一次*/
/*线性调频脉冲起始频率(来自配置文件)+ LUT 抖动+固定增量抖动
0 77 GHz + 0.0014 GHz + 0
1 77 GHz + 0.0014 *2 GHz + 0
2 77 GHz + 0.0014 *3 GHz + 0
附录四.
附录四.
511 77 GHz + 0.0014 *511 GHz + 0
512 77 GHz - 0.0014 GHz + 0
513 77 GHz - 0.0014 *2 GHz + 0
514 77 GHz - 0.0014 *3 GHz + 0
附录四.
附录四.
1023 77 GHz - 0.0014 *511 GHz + 0
(LUT 抖动复位周期= 1024)等*/
/*生成起始频率线性调频脉冲参数的 LUT 起始地址偏移4 */
/* AdvChirpLUTData[4]是起始地址偏移量(Offset = 4),每个数据参数为2个字节(使用 lutChirpParamSize = 1,lutChirpParamScale = 0)*/
memset ((void *)&AdvChirpCfgArgs、0、sizeof (rlAdvChirpCfg_t);
AdvChirpCfgArgs.chirpParamIdx = RL_LUT_CHIRP_FREQ_START_VAR;
AdvChirpCfgArgs.resetMode = 1;
AdvChirpCfgArgs.deltaResetPeriod = 0;
AdvChirpCfgArgs.deltaParamUpdatePeriod = 1;
AdvChirpCfgArgs.sf0ChirpParamDelta =34953;
AdvChirpCfgArgs.sf1ChirpParamDelta =34953;
AdvChirpCfgArgs.lutResetPeriod = chirps_per_cycle;
AdvChirpCfgArgs.lutParamUpdatePeriod = 1;
AdvChirpCfgArgs.lutPatternAddressOffset =该 chirp_param_type 的 chirps_per_cycle * 1;//4;/*该 chirp_param_type 的起始地址偏移(4字节边界)*/
AdvChirpCfgArgs.numOfPatterns = chirps_per_cycle;
AdvChirpCfgArgs.lutChirpParamSize = 1;/*每个频率的2字节大小*/
AdvChirpCfgArgs.lutChirpParamScale = 0;
RetVal = rlSetAdvChirpConfig (RL_DEVICE_MAP_INTERNAL_BSS、&AdvChirpCfgArgs);
如果(RetVal!= RL_RET_CODE_OK)
{
printf("***失败-rlSetAdvChirpConfig 失败,错误代码为%d***\n\n",RetVal);
返回返回值;
}
/*将输入参数数据除以1 LSB。 1 LSB =((3.6 * 10^9)/2^26)* 2^标度 Hz =(3.6 * 2^标度)/2^26GHz */
for (I=0;I < chirps_per_cycle;I++)
{
StartFreqData[i]= 0;
}
/*填充稍后用于 rlSetAdvChirpLUTConfig API 的线性调频脉冲 LUT 缓冲器*/
rlFillLUTParamsArgs.chirpParamIndex = RL_LUT_CHIRP_FREQ_START_VAR;
rlFillLUTParamsArgs.chirpParamSize = AdvChirpCfgArgs.lutChirpParamSize;
rlFillLUTParamsArgs.inputSize = AdvChirpCfgArgs.numOfPatterns;
rlFillLUTParamsArgs.lutGlobalOffset = lutOffsetInNBytes;
RetVal = rlDevSetFillLUTBuff (&rlFillLUTParamsArgs、(rlInt8_t*)&StartFreqData[0]、&AdvChirpLUTData[lutOffsetInNBytes]、&lutOffsetInNBytes);
/*频率斜率(参数索引= 2)*/
/* LUT 抖动到此线性调频脉冲参数类型*/
/*斜率线性调频脉冲参数的 LUT 起始地址偏移为2056 */
#IF 1
memset ((void *)&AdvChirpCfgArgs、0、sizeof (rlAdvChirpCfg_t);
AdvChirpCfgArgs.chirpParamIdx = RL_LUT_CHIRP_FREQ_SLOPE_VAR;
AdvChirpCfgArgs.deltaResetPeriod =1;
AdvChirpCfgArgs.deltaParamUpdatePeriod =0;
AdvChirpCfgArgs.lutResetPeriod = chirps_per_cycle;
AdvChirpCfgArgs.lutParamUpdatePeriod = 1;
AdvChirpCfgArgs.lutPatternAddressOffset =chirps_per_cycle * 2;;
AdvChirpCfgArgs.numOfPatterns = chirps_per_cycle;
RetVal = rlSetAdvChirpConfig (RL_DEVICE_MAP_INTERNAL_BSS、&AdvChirpCfgArgs);
如果(RetVal!= RL_RET_CODE_OK)
{
printf("***失败-rlSetAdvChirpConfig 失败,错误代码为%d***\n\n",RetVal);
返回返回值;
}
for (I=0;I < chirps_per_cycle;I++)
{
StartFreqSlopeData[i]= 0;
}
/*填充稍后用于 rlSetAdvChirpLUTConfig API 的线性调频脉冲 LUT 缓冲器*/
rlFillLUTParamsArgs.chirpParamIndex = RL_LUT_CHIRP_FREQ_SLOPE_VAR;
rlFillLUTParamsArgs.inputSize = AdvChirpCfgArgs.numOfPatterns;
rlFillLUTParamsArgs.lutGlobalOffset = lutOffsetInNBytes;
RetVal = rlDevSetFillLUTBuff (&rlFillLUTParamsArgs、(rlInt8_t*)&StartFreqSlopeData[0]、&AdvChirpLUTData[lutOffsetInNBytes]、&lutOffsetInNBytes);
#endif
/*空闲时间(参数索引= 3)*/
/*每512个线性调频脉冲的固定空闲时间差值抖动2us (更新周期= 512),它将每512 * 3个线性调频脉冲重置一次。
此处未应用 LUT 抖动。 */
/*线性调频脉冲空闲时间(来自配置文件)+ LUT 抖动+固定增量抖动
0-511 100 us + 0 + 0
512-1023 100us + 0 + 2 us
1024-1535 100us + 0 + 2*2 us
(增量抖动复位周期= 512*3)等等*/
/*唯一 LUT 抖动参数的数量(4)*/
#IF 1
memset ((void *)&AdvChirpCfgArgs、0、sizeof (rlAdvChirpCfg_t);
AdvChirpCfgArgs.chirpParamIdx = RL_LUT_CHIRP_IDLE_TIME_VAR;
AdvChirpCfgArgs.deltaResetPeriod = 1;//chirps_per_cycle*3;/* 512 * 3 *时的复位差值*/
AdvChirpCfgArgs.deltaParamUpdatePeriod = 0;//chirps_per_cycle;//在512个线性调频脉冲后添加增量值*/
AdvChirpCfgArgs.sf0ChirpParamDelta =(uint32_t)((float) CHIRP_IDLE_TIME_DITH * 1000.0 / 10.0);
AdvChirpCfgArgs.lutResetPeriod = chirps_per_cycle;
AdvChirpCfgArgs.lutParamUpdatePeriod = 1;
AdvChirpCfgArgs.ltPatternAddressOffset = dummy_LUT_ADDR_offset;//chirps_per_cycle* 3;
AdvChirpCfgArgs.numOfPatterns = chirps_per_cycle;
AdvChirpCfgArgs.lutChirpParamScale = 0;
AdvChirpCfgArgs.lutChirpParamSize = 0;
RetVal = rlSetAdvChirpConfig (RL_DEVICE_MAP_INTERNAL_BSS、&AdvChirpCfgArgs);
如果(RetVal!= RL_RET_CODE_OK)
{
printf("***失败-rlSetAdvChirpConfig 失败,错误代码为%d***\n\n",RetVal);
返回返回值;
}
for (I=0;I < chirps_per_cycle;I++)
{
IdleTimeData[i]= 0;
}
/* ADC 启动时间(参数索引= 4)*/
/*没有抖动此线性调频脉冲参数类型*/
memset ((void *)&AdvChirpCfgArgs、0、sizeof (rlAdvChirpCfg_t);
AdvChirpCfgArgs.chirpParamIdx = RL_LUT_CHIRP_ADC_START_TIME_VAR;
AdvChirpCfgArgs.lutResetPeriod = 1;
AdvChirpCfgArgs.lutParamUpdatePeriod = 0;
AdvChirpCfgArgs.lutPatternAddressOffset = dummy_LUT_ADDR_offset;/*将 LUT 模式固定为零偏移*/
AdvChirpCfgArgs.numOfPatterns = chirps_per_cycle;
RetVal = rlSetAdvChirpConfig (RL_DEVICE_MAP_INTERNAL_BSS、&AdvChirpCfgArgs);
如果(RetVal!= RL_RET_CODE_OK)
{
printf("***失败-rlSetAdvChirpConfig 失败,错误代码为%d***\n\n",RetVal);
返回返回值;
}
for (I=0;I < chirps_per_cycle;I++)
{
ADCStartTimeData[i]= 0;
}
/*填充稍后用于 rlSetAdvChirpLUTConfig API 的线性调频脉冲 LUT 缓冲器*/
// rlFillLUTParamsArgs.chirpParamIndex = RL_LUT_CHIRP_ADC_START_TIME_VAR;
// rlFillLUTParamsArgs.chirpParamSize = AdvChirpCfgArgs.lutChirpParamSize;
// rlFillLUTParamsArgs.inputSize = AdvChirpCfgArgs.numOfPatterns;
// rlFillLUTParamsArgs.lutGlobalOffset = lutOffsetInNBytes;
// RetVal = rlDevSetFillLUTBuff (&rlFillLUTParamsArgs、&ADCStartTimeData[0]、&AdvChirpLUTData[lutOffsetInNBytes]、&lutOffsetInNBytes);
#endif
/* BPM 启用(参数索引= 6)*/
/* BPM Enable 参数无 LUT 或 Delta 抖动*/
#IF 1
memset ((void *)&AdvChirpCfgArgs、0、sizeof (rlAdvChirpCfg_t);
AdvChirpCfgArgs.chirpParamIdx = RL_LUT_CHIRP_BPM_VAL_VAR;
AdvChirpCfgArgs.lutResetPeriod = chirps_per_cycle;
AdvChirpCfgArgs.lutParamUpdatePeriod = 1;
AdvChirpCfgArgs.ltPatternAddressOffset = dummy_LUT_ADDR_offset;//chirps_per_cycle * 4;/*固定的 LUT 模式至偏移*/
AdvChirpCfgArgs.numOfPatterns = chirps_per_cycle;
RetVal = rlSetAdvChirpConfig (RL_DEVICE_MAP_INTERNAL_BSS、&AdvChirpCfgArgs);
如果(RetVal!= RL_RET_CODE_OK)
{
printf("***失败-rlSetAdvChirpConfig 失败,错误代码为%d***\n\n",RetVal);
返回返回值;
}
for (I=0;I < chirps_per_cycle;I++)
{
BpmEnCfgData[i]= 0;
}
/*填充稍后用于 rlSetAdvChirpLUTConfig API 的线性调频脉冲 LUT 缓冲器*/
// rlFillLUTParamsArgs.chirpParamIndex = RL_LUT_CHIRP_BPM_VAL_VAR;
// rlFillLUTParamsArgs.chirpParamSize = AdvChirpCfgArgs.lutChirpParamSize;
// rlFillLUTParamsArgs.inputSize = AdvChirpCfgArgs.numOfPatterns;
// rlFillLUTParamsArgs.lutGlobalOffset = lutOffsetInNBytes;
// RetVal = rlDevSetFillLUTBuff (&rlFillLUTParamsArgs、&BpmEnCfgData[0]、&AdvChirpLUTData[lutOffsetInNBytes]、&lutOffsetInNBytes);
#endif
/* TX0移相器(参数索引= 7)*/
/* TX0移相器无增量或 LUT 抖动*/
memset ((void *)&AdvChirpCfgArgs、0、sizeof (rlAdvChirpCfg_t);
AdvChirpCfgArgs.chirpParamIdx = RL_LUT_TX0_PHASE_SHIFT_VAR;
AdvChirpCfgArgs.lutResetPeriod = chirps_per_cycle;
AdvChirpCfgArgs.lutParamUpdatePeriod = 1;
AdvChirpCfgArgs.lutPatternAddressOffset = chirps_per_cycle * 3;/*固定的 LUT 模式为偏移*/
AdvChirpCfgArgs.numOfPatterns = chirps_per_cycle;
RetVal = rlSetAdvChirpConfig (RL_DEVICE_MAP_INTERNAL_BSS、&AdvChirpCfgArgs);
如果(RetVal!= RL_RET_CODE_OK)
{
printf("***失败-rlSetAdvChirpConfig 失败,错误代码为%d***\n\n",RetVal);
返回返回值;
}
for (I = 0;I < chirps_per_cycle;I++)
{
Tx0PhShiftData[i]= 0;
}
/*填充稍后用于 rlSetAdvChirpLUTConfig API 的线性调频脉冲 LUT 缓冲器*/
rlFillLUTParamsArgs.chirpParamIndex = RL_LUT_TX0_PHASE_SHIFT_VAR;
rlFillLUTParamsArgs.chirpParamSize = AdvChirpCfgArgs.lutChirpParamSize;
rlFillLUTParamsArgs.inputSize = AdvChirpCfgArgs.numOfPatterns;
rlFillLUTParamsArgs.lutGlobalOffset = lutOffsetInNBytes;
RetVal = rlDevSetFillLUTBuff (&rlFillLUTParamsArgs、&Tx0PhShiftData[0]、&AdvChirpLUTData[lutOffsetInNBytes]、&lutOffsetInNBytes);
/* TX1移相器(参数索引= 8)*/
/* TX0移相器无增量或 LUT 抖动*/
memset ((void *)&AdvChirpCfgArgs、0、sizeof (rlAdvChirpCfg_t);
AdvChirpCfgArgs.chirpParamIdx = RL_LUT_TX1_PHASE_SHIFT_VAR;
AdvChirpCfgArgs.lutResetPeriod = chirps_per_cycle;
AdvChirpCfgArgs.lutParamUpdatePeriod = 1;
AdvChirpCfgArgs.lutPatternAddressOffset = chirps_per_cycle * 4;/*固定的 LUT 模式为偏移*/
AdvChirpCfgArgs.numOfPatterns = chirps_per_cycle;
RetVal = rlSetAdvChirpConfig (RL_DEVICE_MAP_INTERNAL_BSS、&AdvChirpCfgArgs);
如果(RetVal!= RL_RET_CODE_OK)
{
printf("***失败-rlSetAdvChirpConfig 失败,错误代码为%d***\n\n",RetVal);
返回返回值;
}
for (I = 0;I < chirps_per_cycle;I++)
{
Tx1PhShiftData[i]=(rlInt8_t)((13 * 64)/360);
}
/*填充稍后用于 rlSetAdvChirpLUTConfig API 的线性调频脉冲 LUT 缓冲器*/
rlFillLUTParamsArgs.chirpParamIndex = RL_LUT_TX1_PHASE_SHIFT_VAR;
rlFillLUTParamsArgs.chirpParamSize = AdvChirpCfgArgs.lutChirpParamSize;
rlFillLUTParamsArgs.inputSize = AdvChirpCfgArgs.numOfPatterns;
rlFillLUTParamsArgs.lutGlobalOffset = lutOffsetInNBytes;
RetVal = rlDevSetFillLUTBuff (&rlFillLUTParamsArgs、&Tx1PhShiftData[0]、&AdvChirpLUTData[lutOffsetInNBytes]、&lutOffsetInNBytes);
/* TX2移相器(参数索引= 9)*/
/* TX2移相器无差值或 LUT 抖动*/
memset ((void *)&AdvChirpCfgArgs、0、sizeof (rlAdvChirpCfg_t);
AdvChirpCfgArgs.chirpParamIdx = RL_LUT_TX2_PHASE_SHIFT_VAR;
AdvChirpCfgArgs.lutResetPeriod = chirps_per_cycle;
AdvChirpCfgArgs.lutParamUpdatePeriod = 1;
AdvChirpCfgArgs.lutPatternAddressOffset = chirps_per_cycle * 5;/*固定的 LUT 模式出现偏移*/
AdvChirpCfgArgs.numOfPatterns = chirps_per_cycle;
RetVal = rlSetAdvChirpConfig (RL_DEVICE_MAP_INTERNAL_BSS、&AdvChirpCfgArgs);
如果(RetVal!= RL_RET_CODE_OK)
{
printf("***失败-rlSetAdvChirpConfig 失败,错误代码为%d***\n\n",RetVal);
返回返回值;
}
for (I = 0;I < chirps_per_cycle;I++)
{
Tx2PhShiftData[i]=(rlInt8_t)((30 * 64)/ 360);
}
/*填充稍后用于 rlSetAdvChirpLUTConfig API 的线性调频脉冲 LUT 缓冲器*/
rlFillLUTParamsArgs.chirpParamIndex = RL_LUT_TX2_PHASE_SHIFT_VAR;
rlFillLUTParamsArgs.chirpParamSize = AdvChirpCfgArgs.lutChirpParamSize;
rlFillLUTParamsArgs.inputSize = AdvChirpCfgArgs.numOfPatterns;
rlFillLUTParamsArgs.lutGlobalOffset = lutOffsetInNBytes;
RetVal = rlDevSetFillLUTBuff (&rlFillLUTParamsArgs、&Tx2PhShiftData[0]、&AdvChirpLUTData[lutOffsetInNBytes]、&lutOffsetInNBytes);
/* TX3移相器(参数索引= 10)*/
/* TX0移相器无增量或 LUT 抖动*/
memset ((void *)&AdvChirpCfgArgs、0、sizeof (rlAdvChirpCfg_t);
AdvChirpCfgArgs.chirpParamIdx = RL_LUT_TX3_PHASE_SHIFT_VAR;
AdvChirpCfgArgs.lutResetPeriod = chirps_per_cycle;
AdvChirpCfgArgs.lutParamUpdatePeriod = 1;
AdvChirpCfgArgs.lutPatternAddressOffset = chirps_per_cycle * 6;/*将 LUT 模式固定为零偏移*/
AdvChirpCfgArgs.numOfPatterns = chirps_per_cycle;
RetVal = rlSetAdvChirpConfig (RL_DEVICE_MAP_INTERNAL_BSS、&AdvChirpCfgArgs);
如果(RetVal!= RL_RET_CODE_OK)
{
printf("***失败-rlSetAdvChirpConfig 失败,错误代码为%d***\n\n",RetVal);
返回返回值;
}
for (I = 0;I < chirps_per_cycle;I++)
{
Tx3PhShiftData[i]=(rlInt8_t)((50 * 64)/ 360);
}
/*填充稍后用于 rlSetAdvChirpLUTConfig API 的线性调频脉冲 LUT 缓冲器*/
rlFillLUTParamsArgs.chirpParamIndex = RL_LUT_TX0_PHASE_SHIFT_VAR;
rlFillLUTParamsArgs.chirpParamSize = AdvChirpCfgArgs.lutChirpParamSize;
rlFillLUTParamsArgs.inputSize = AdvChirpCfgArgs.numOfPatterns;
rlFillLUTParamsArgs.lutGlobalOffset = lutOffsetInNBytes;
RetVal = rlDevSetFillLUTBuff (&rlFillLUTParamsArgs、&Tx3PhShiftData[0]、&AdvChirpLUTData[lutOffsetInNBytes]、&lutOffsetInNBytes);
/* Tx 启用(参数索引= 5)*/
/* Tx 启用参数不支持固定差值抖动*/
/*在通用软件 LUT 中配置4个唯一的 Tx 启用掩码(7、3、1、2)- LUT 复位周期(4)*/
/*每个线性调频脉冲都会选择新的 Tx 启用掩码(更新周期= 1),且每4个线性调频脉冲会重置一次*/
/*线性调频脉冲(突发) Tx 启用掩码
0-511 1
512-1023 2
1024-1535 4
1536-2047 8、然后复位*/
/*每个数据参数都是4位*/
memset ((void *)&AdvChirpCfgArgs、0、sizeof (rlAdvChirpCfg_t);
AdvChirpCfgArgs.chirpParamIdx = RL_LUT_CHIRP_TX_EN_VAR;
AdvChirpCfgArgs.lutResetPeriod = 1;
AdvChirpCfgArgs.lutParamUpdatePeriod = 1;
AdvChirpCfgArgs.lutPatternAddressOffset = chirps_per_cycle * 7;//dummy_LUT_ADDR_offset;//2188;
AdvChirpCfgArgs.numOfPatterns = chirps_per_cycle;
RetVal = rlSetAdvChirpConfig (RL_DEVICE_MAP_INTERNAL_BSS、&AdvChirpCfgArgs);
如果(RetVal!= RL_RET_CODE_OK)
{
printf("***失败-rlSetAdvChirpConfig 失败,错误代码为%d***\n\n",RetVal);
返回返回值;
}
for (I = 0;I < chirps_per_cycle;I++)
{
TxEnCfgData[i]= 0x7;
}
/*填充稍后用于 rlSetAdvChirpLUTConfig API 的线性调频脉冲 LUT 缓冲器*/
rlFillLUTParamsArgs.chirpParamIndex = RL_LUT_CHIRP_TX_EN_VAR;
rlFillLUTParamsArgs.chirpParamSize = AdvChirpCfgArgs.lutChirpParamSize;
rlFillLUTParamsArgs.inputSize = AdvChirpCfgArgs.numOfPatterns;
rlFillLUTParamsArgs.lutGlobalOffset = lutOffsetInNBytes;
RetVal = rlDevSetFillLUTBuff (&rlFillLUTParamsArgs、(rlInt8_t*)&TxEnCfgData[0]、&AdvChirpLUTData[lutOffsetInNBytes]、&lutOffsetInNBytes);
while (lutOffsetInNBytes%4!= 0)
{
lutOffsetInNBytes+=1;
}
/*将本地编程的 LUT 数据发送至设备*/
rlAdvChirpLUTCfgArgs.lutAddressOffset = 0;
rlAdvChirpLUTCfgArgs.numBytes = lutOffsetInNBytes;
RetVal = rlSetMultiAdvChirpLUTConfig (RL_DEVICE_MAP_INTERNAL _BSS、&rlAdvChirpLUTCfgArgs、&AdvChirpLUTData [0]);
如果(RetVal!= RL_RET_CODE_OK)
{
printf ("deviceMap %u 的 rlSetMultiAdvChirpLUTConfig 失败、错误代码%d \n\n"、RL_DEVICE_MAP_INTERNAL_BSS、RetVal);
}
否则
{
printf ("rlSetMultiAdvChirpLUTConfig deviceMap %u 成功、带 lutAddressOffset =%d、numBytes =%d\n\n"、RL_DEVICE_MAP_INTERNAL_BSS、rlAdvChirpLUTCfgArgs.lutAddressOffset、rlAdvChirpLUTCfgArgs.numBytes);
}
test_print ("高级线性调频脉冲.\n");
返回返回值;
}
谢谢!