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.

[参考译文] AWR2944:配置高级线性调频脉冲 TX_en

Guru**** 1135610 points
Other Parts Discussed in Thread: AWR2944
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/1249629/awr2944-config-advanced-chirp-tx_en

器件型号:AWR2944

您好:

配置高级线性调频脉冲: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");
返回返回值;

谢谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    您在尝试运行此代码时遇到了什么错误。 请分享一段错误代码。

    谢谢。

    Pradipta.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好:

    配置期间无错误

    但射频无法 正常工作,4个 Tx 通道似乎 未启用,电流较低。  

    可能 LUT 阵列有一些问题、BSS 无法解析 TX_EN。

    谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    在通道配置中启用了所有 Tx。 此外、在线性调频脉冲配置中、您必须设置 Tx 使能值。  

    此外、我们还提供了一个示例代码、该代码利用了 mmwavelink 库的所有 API。 我们也在该示例中实现了该功能。  

    路径: C:\ti\**最新 SDK 文件夹****最新 DFP 文件夹**\ti\control\mmwaveink\test

    谢谢。

    Pradipta.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好:

    TX 通道是:4Tx 和4Rx

    /*填充默认配置:*/
    ChanCfg.rxChannelEn = RX_CHANNEL_1_2_3_4_ENABLE;/*/RX_CHANNEL_1_2_3_4_ENABLE*/
    ChanCfg.txChannelEn = TX_CHANNEL_1_2_3_4_ENABLE;
    ChanCfg.cascading = 0U;/*单芯片(无级联)*/
    ChanCfg.cascadingPinoutCfg = 0;
    RetVal = rlSetChannelConfig (RL_DEVICE_MAP_INTERNAL_BSS、&ChanCfg);

    参考 DFP_02_04_08_01示例、 配置期间没有错误。 但射频 TX 没有打开(我想)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    1) 1)您能否确认是否在套件上运行 OOB 演示射频是否有效?

    2) 2)还请提供您在应用代码中进行的 API 调用顺序以及参数集。 您还可以参阅 DFP 中 docs 文件夹中的 ICD 以了解 API 编程序列。  

    谢谢。

    Pradipta.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好:

    1)我们使用通用的线性调频脉冲 API : rlSetChirpConfig (),其他是相同的,射频工作。

    2)高级线性调频脉冲配置序列为:

    2.1通道配置
    /*填充默认配置:*/
    ChanCfg.rxChannelEn = RX_CHANNEL_1_2_3_4_ENABLE;/*/RX_CHANNEL_1_2_3_4_ENABLE*/
    ChanCfg.txChannelEn = TX_CHANNEL_1_2_3_4_ENABLE;
    ChanCfg.cascading = 0U;/*单芯片(无级联)*/
    ChanCfg.cascadingPinoutCfg = 0;
    RetVal = rlSetChannelConfig (RL_DEVICE_MAP_INTERNAL_BSS、&ChanCfg);

    2.2配置文件配置文件配置文件
    RetVal = rlSetProfileConfig (RL_DEVICE_MAP_INTERNAL_BSS、4U、&profileCfg[0]);

    2.3其他配置
    RfMIsCon.miscCtl = 0x3;
    RetVal = rlRfSetMiscConfig (RL_DEVICE_MAP_INTERNAL _BSS 和 RfMIsCon);

    2.4高级线性调频脉冲配置
    #define chirps_per_cycle 192
    #define LUT_ADVCHIRP_TABLE_SIZE 12*1024
    #define dummy_LUT_ADDR_OFFSET 3*1024
    rlInt8_t AdvChirpLUTData[LUT_ADVCHIRP_TABLE_SIZE]={0};

    静态 int32_t AdvancedChirpCfg (空)
    {
    /*配置文件 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};
    rlInt16_t IdleTimeData[chirps_per_cycle]={ 0 };
    rlInt16_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;

    memset (&AdvChirpLUTData[0]、0x0、LUT_ADVCHIRP_TABLE_SIZE);

    /*配置配置文件(参数索引= 0)*/
    /*配置文件参数不支持固定差值抖动*/
    /*所有线性调频脉冲的固定配置文件 ID:0 */
    /*线性调频脉冲配置文件*/
    /* 0-N 0 */
    AdvChirpCfgArgs.chirpParamIdx = RL_LUT_CHIRP_PROFILE_VAR;
    AdvChirpCfgArgs.ltResetPeriod = chirps_per_cycle;/*在第二次突发(512*2)线性调频脉冲后重置为原始偏移*/
    AdvChirpCfgArgs.lutParamUpdatePeriod = chirps_per_cycle/2;//1;//chirps_per_cycle/2;
    AdvChirpCfgArgs.lutPatternAddressOffset = 0;
    AdvChirpCfgArgs.numOfPatterns = 2;

    RetVal = rlSetAdvChirpConfig (RL_DEVICE_MAP_INTERNAL_BSS、&AdvChirpCfgArgs);
    如果(RetVal!= RL_RET_CODE_OK)
    {
    printf ("***失败- RL_LUT_CHIRP_PROFILE_VAR 失败,错误代码为%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);
    如果(RetVal!= RL_RET_CODE_OK)
    {
    printf ("***失败-设置 RL_LUT_CHIRP_PROFILE_VAR 失败,错误代码为%d***\n\n",RetVal);
    返回返回值;

    否则
    {
    printf ("set RL_LUT_CHIRP_PROFILE_VAR lutOffsetInNBytes:%d、chirpParamSize:%d\n"、lutOffsetInNBytes、AdvChirpCfgArgs.lutChirpParamSize);


    /*使用固定抖动时、为 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 = ltOffsetInNBytes;//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 ("***失败- RL_LUT_CHIRP_FREQ_START_VAR 失败,错误代码为%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);
    如果(RetVal!= RL_RET_CODE_OK)
    {
    printf ("***失败-设置 RL_LUT_CHIRP_FREQ_START_VAR 失败,错误代码为%d***\n\n",RetVal);
    返回返回值;

    否则
    {
    printf ("set RL_LUT_CHIRP_FREQ_START_VAR ltOffsetInNBytes:%d、chirpParamSize:%d\n"、lutOffsetInNBytes、ChirpCfgArgs.lutChirpParamSize);

    /*频率斜率(参数索引= 2)*/
    /* LUT 抖动到此线性调频脉冲参数类型*/
    /*斜率线性调频脉冲参数的 LUT 起始地址偏移为2056 */
    memset ((void *)&AdvChirpCfgArgs、0、sizeof (rlAdvChirpCfg_t);
    AdvChirpCfgArgs.chirpParamIdx = RL_LUT_CHIRP_FREQ_SLOPE_VAR;
    AdvChirpCfgArgs.deltaResetPeriod =chirps_per_cycle;//0;//chirps_per_cycle;
    AdvChirpCfgArgs.deltaParamUpdatePeriod =0;//1;//0;
    AdvChirpCfgArgs.lutResetPeriod = chirps_per_cycle;
    AdvChirpCfgArgs.lutParamUpdatePeriod = 1;
    AdvChirpCfgArgs.lutPatternAddressOffset = lutOffsetInNBytes;
    AdvChirpCfgArgs.numOfPatterns = chirps_per_cycle;

    RetVal = rlSetAdvChirpConfig (RL_DEVICE_MAP_INTERNAL_BSS、&AdvChirpCfgArgs);
    如果(RetVal!= RL_RET_CODE_OK)
    {
    printf ("***失败- RL_LUT_CHIRP_FREQ_SLOPE_VAR 失败,错误代码为%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);
    如果(RetVal!= RL_RET_CODE_OK)
    {
    printf ("***失败-设置 RL_LUT_CHIRP_FREQ_SLOPE_VAR 失败,错误代码为%d***\n\n",RetVal);
    返回返回值;

    否则
    {
    printf ("set RL_LUT_CHIRP_FREQ_SLOPE_VAR ltOffsetInNBytes:%d、chirpParamSize:%d\n"、lutOffsetInNBytes、ChirpCfgArgs.lutChirpParamSize);

    /*空闲时间(参数索引= 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)*/

    memset ((void *)&AdvChirpCfgArgs、0、sizeof (rlAdvChirpCfg_t);
    AdvChirpCfgArgs.chirpParamIdx = RL_LUT_CHIRP_IDLE_TIME_VAR;
    AdvChirpCfgArgs.deltaResetPeriod = 1;//0;//1;//chirps_per_cycle*3;/* 512 * 3时的复位差值*/
    AdvChirpCfgArgs.deltaParamUpdatePeriod = 0;//1;//0;//chirps_per_cycle;//在512个线性调频脉冲后添加增量值*/
    AdvChirpCfgArgs.lutResetPeriod = 1;//chirps_per_cycle;//1;
    AdvChirpCfgArgs.lutParamUpdatePeriod = 0;//1;//0;
    AdvChirpCfgArgs.lutPatternAddressOffset = dummy_LUT_ADDR_offset;//lutOffsetInNBytes;//dummy_LUT_ADDR_offset;
    AdvChirpCfgArgs.numOfPatterns = 1;//chirps_per_cycle;
    AdvChirpCfgArgs.lutChirpParamScale = 0;
    AdvChirpCfgArgs.lutChirpParamSize = 0;

    RetVal = rlSetAdvChirpConfig (RL_DEVICE_MAP_INTERNAL_BSS、&AdvChirpCfgArgs);
    如果(RetVal!= RL_RET_CODE_OK)
    {
    printf ("***失败- RL_LUT_CHIRP_IDLE_TIME_VAR 失败,错误代码为%d***\n\n",RetVal);
    返回返回值;

    /* ADC 启动时间(参数索引= 4)*/
    /*没有抖动此线性调频脉冲参数类型*/
    memset ((void *)&AdvChirpCfgArgs、0、sizeof (rlAdvChirpCfg_t);
    AdvChirpCfgArgs.chirpParamIdx = RL_LUT_CHIRP_ADC_START_TIME_VAR;
    AdvChirpCfgArgs.lutResetPeriod = 1;//chirps_per_cycle;//1;
    AdvChirpCfgArgs.lutParamUpdatePeriod = 0;//1;//0;
    AdvChirpCfgArgs.lutPatternAddressOffset = dummy_LUT_ADDR_offset;//lutOffsetInNBytes;//dummy_LUT_ADDR_offset;/*将 LUT 模式固定为零偏移*/
    AdvChirpCfgArgs.numOfPatterns = 1;//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);
    返回返回值;

    /* 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 = chirps_per_cycle;
    AdvChirpCfgArgs.lutParamUpdatePeriod = 1;
    AdvChirpCfgArgs.lutPatternAddressOffset = lutOffsetInNBytes;//lutOffsetInNBytes;//dummy_LUT_ADDR_offset;//2188;
    AdvChirpCfgArgs.numOfPatterns = chirps_per_cycle;//1;//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);
    如果(RetVal!= RL_RET_CODE_OK)
    {
    printf ("***失败-设置 RL_LUT_CHIRP_TX_EN_VAR 失败,错误代码为%d***\n\n",RetVal);
    返回返回值;

    否则
    {
    printf ("set RL_LUT_CHIRP_TX_EN_VAR ltOffsetInNBytes:%d、chirpParamSize:%d\n"、lutOffsetInNBytes、ChirpCfgArgs.lutAdvChirpParamSize);

    /* BPM 启用(参数索引= 6)*/
    /* BPM Enable 参数无 LUT 或 Delta 抖动*/

    memset ((void *)&AdvChirpCfgArgs、0、sizeof (rlAdvChirpCfg_t);
    AdvChirpCfgArgs.chirpParamIdx = RL_LUT_CHIRP_BPM_VAL_VAR;
    AdvChirpCfgArgs.lutResetPeriod = 1;//chirps_per_cycle;//1;
    AdvChirpCfgArgs.lutParamUpdatePeriod = 0;//1;//0;
    AdvChirpCfgArgs.lutPatternAddressOffset = dummy_LUT_ADDR_offset;//lutOffsetInNBytes;//dummy_LUT_ADDR_offset;/*将 LUT 模式固定为偏移*/
    AdvChirpCfgArgs.numOfPatterns = 1;//chirps_per_cycle;

    RetVal = rlSetAdvChirpConfig (RL_DEVICE_MAP_INTERNAL_BSS、&AdvChirpCfgArgs);
    如果(RetVal!= RL_RET_CODE_OK)
    {
    printf ("***失败- RL_LUT_CHIRP_BPM_VAL_VAR 失败,错误代码为%d***\n\n",RetVal);
    返回返回值;

    /* TX0移相器(参数索引= 7)*/
    /* TX0移相器无增量或 LUT 抖动*/
    memset ((void *)&AdvChirpCfgArgs、0、sizeof (rlAdvChirpCfg_t);
    AdvChirpCfgArgs.chirpParamIdx = RL_LUT_TX0_PHASE_SHIFT_VAR;
    AdvChirpCfgArgs.lutResetPeriod = 1;//chirps_per_cycle;//1;
    AdvChirpCfgArgs.lutParamUpdatePeriod = 0;//1;//0;
    AdvChirpCfgArgs.lutPatternAddressOffset = dummy_LUT_ADDR_offset;//lutOffsetInNBytes;/*将 LUT 模式固定为偏移*/
    AdvChirpCfgArgs.numOfPatterns = 1;//chirps_per_cycle;

    RetVal = rlSetAdvChirpConfig (RL_DEVICE_MAP_INTERNAL_BSS、&AdvChirpCfgArgs);
    如果(RetVal!= RL_RET_CODE_OK)
    {
    printf("***失败-rlSetAdvChirpConfig 失败,错误代码为%d***\n\n",RetVal);
    返回返回值;

    /* TX1移相器(参数索引= 8)*/
    /* TX0移相器无增量或 LUT 抖动*/
    memset ((void *)&AdvChirpCfgArgs、0、sizeof (rlAdvChirpCfg_t);
    AdvChirpCfgArgs.chirpParamIdx = RL_LUT_TX1_PHASE_SHIFT_VAR;
    AdvChirpCfgArgs.lutResetPeriod = 1;//chirps_per_cycle;//1;
    AdvChirpCfgArgs.lutParamUpdatePeriod = 0;//1;//0;
    AdvChirpCfgArgs.lutPatternAddressOffset = dummy_LUT_ADDR_offset;//lutOffsetInNBytes;/*将 LUT 模式固定为偏移*/
    AdvChirpCfgArgs.numOfPatterns =1;// chirps_per_cycle;

    RetVal = rlSetAdvChirpConfig (RL_DEVICE_MAP_INTERNAL_BSS、&AdvChirpCfgArgs);
    如果(RetVal!= RL_RET_CODE_OK)
    {
    printf ("***失败- RL_LUT_TX1_PHASE_SHIFT_VAR 失败,错误代码为%d***\n\n",RetVal);
    返回返回值;

    /* TX2移相器(参数索引= 9)*/
    /* TX2移相器无差值或 LUT 抖动*/
    memset ((void *)&AdvChirpCfgArgs、0、sizeof (rlAdvChirpCfg_t);
    AdvChirpCfgArgs.chirpParamIdx = RL_LUT_TX2_PHASE_SHIFT_VAR;
    AdvChirpCfgArgs.lutResetPeriod = 1;//chirps_per_cycle;//1;
    AdvChirpCfgArgs.lutParamUpdatePeriod = 0;//1;//0;
    AdvChirpCfgArgs.lutPatternAddressOffset = dummy_LUT_ADDR_offset;//lutOffsetInNBytes;/*将 LUT 模式固定为偏移*/
    AdvChirpCfgArgs.numOfPatterns = 1;//chirps_per_cycle;

    RetVal = rlSetAdvChirpConfig (RL_DEVICE_MAP_INTERNAL_BSS、&AdvChirpCfgArgs);
    如果(RetVal!= RL_RET_CODE_OK)
    {
    printf ("***失败- RL_LUT_TX2_PHASE_SHIFT_VAR 失败,错误代码为%d***\n\n",RetVal);
    返回返回值;

    /* TX3移相器(参数索引= 10)*/
    /* TX0移相器无增量或 LUT 抖动*/
    memset ((void *)&AdvChirpCfgArgs、0、sizeof (rlAdvChirpCfg_t);
    AdvChirpCfgArgs.chirpParamIdx = RL_LUT_TX3_PHASE_SHIFT_VAR;
    AdvChirpCfgArgs.lutResetPeriod = 1;//chirps_per_cycle;//1;
    AdvChirpCfgArgs.lutParamUpdatePeriod = 0;//1;//0;
    AdvChirpCfgArgs.lutPatternAddressOffset = dummy_LUT_ADDR_offset;//lutOffsetInNBytes;//将 LUT 模式固定为零偏移*/
    AdvChirpCfgArgs.numOfPatterns = 1;//chirps_per_cycle;

    RetVal = rlSetAdvChirpConfig (RL_DEVICE_MAP_INTERNAL_BSS、&AdvChirpCfgArgs);
    如果(RetVal!= RL_RET_CODE_OK)
    {
    printf ("***失败- RL_LUT_CHIRP_TX_EN_VAR 失败,错误代码为%d***\n\n",RetVal);
    返回返回值;

    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");
    返回返回值;

    2.5高级帧配置
    RetVal = rlSetAdvFrameConfig (RL_DEVICE_MAP_INTERNAL _BSS、&advFrameCfg);

    2.6射频开始
    RetVal = rlSensorStart (RL_DEVICE_MAP_INTERNAL_BSS);

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    您正在存储的 Tx 启用 Cfg 数据为0x07、这使得 Tx0、Tx1和 Tx2总共能够容纳3个 Tx。  对于所有4个 Tx、该值都需要为0xF。 如果更改此位、您应该会观察到所有4个 Tx 均已启用。  

    谢谢。

    Pradipta.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好:

    设置 Tx 使能 Cfg 数据:0xF、RF 不工作。

    可能 RF 无法解析存储 LUT 数据格式、将 Tx 启用 Cfg 0xF 设置为0x0、但配置没有错误。

    谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    0xF 应该在这里起作用。  

    您能更新以下内容吗?

    1) 1)您使用的 DFP 版本。

    2) 2)您能否为 AWR2944器件在 DFP 文件夹中构建和运行测试示例?  

    C:\ti\**最新 SDK 文件夹\**最新 DFP 文件夹**\ti\control\mmwaveink\test

     自述文件中提供了构建说明。 这是一个经过测试并可正常工作的示例。 您能告诉我、您在 为前进帧运行示例代码且前进线性调频脉冲变量设置为 true 时观察到的是什么吗?

    谢谢。

    Pradipta.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好:

    1) 1) DFP 为:mmWave_mcuplus_SDK_04_03_00_01\mmWave_DFP_02_04_06_00

    2) 2) C:\ti\mmwave_mcuplus_sdk_04_03_00_01\mmwave_dfp_02_04_06_00\ti\control\mmwavelink

    没有测试文件夹

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    您当前使用的是旧版本 SDK、因此无法找到此文件夹。 将要求您移动到最新的 SDK、您可以在其中找到此文件夹。

    谢谢。

    Pradipta.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好:

    好的、我尝试使用 MMWAVE_mcuplus_SDK_04_00_01\MMWAVE_DFP_02_04_08_01。