在使用mmwave sdk进行开发时 配置了ADCBUF 则获取的ADC原始数据格式是什么样的?在哪个手册可以看到?
通过函数ADCBuf_getChanBufAddr获取到ADC数据地址后 该地址下对应数据格式及有效数据长度该如何确定?
如下为adcbuf配置:
在这里我的mmwave配置的为:16位1x复数采样 ADC采样数96 RX开启4个 TX开启3个 TX为TDM-MIMO模式 一帧下有96个chirps
for (channel = 0; channel < SYS_COMMON_NUM_RX_CHANNEL; channel++) { rxChanConf.channel = channel; retVal = ADCBuf_control(MMWave_Global_Params.handle.adcbuf_handle, ADCBufMMWave_CMD_CHANNEL_ENABLE, (void *)&rxChanConf); if (retVal < 0) { System_printf ("Error: ADCBuf Channel Enable failed\n"); } rxChanConf.offset += 128 * 4 * chirpThresholdVal; //chanDataSize * chirpThresholdVal; // 128*4的原因是16位复数采样 就是16*2 换算过来就是4byte 然后ADC只采96个 但要按2^N也就是128对齐 所以每个RX通道第96个byte后面的都是0 }
如下为我获取ADC数据的函数 在chirp有效回调中进行(SOC_XWR68XX_MSS_CHIRP_AVAIL_IRQ)
void MMWave_chirpIntCallback(uintptr_t arg) { int32_t errCode; uint8_t channel=0; uint32_t add=0; for(channel=0;channel<4;channel++) { add = ADCBuf_getChanBufAddr(MMWave_Global_Params.handle.adcbuf_handle,channel,&errCode); memset(&L3_RAM_Buf[chirp_updata_flag*2048+channel*512],0,512); memcpy(&L3_RAM_Buf[chirp_updata_flag*2048+channel*512],(void *)add,512); } chirp_updata_flag++; if(chirp_updata_flag==96) { chirp_updata_flag=0; } }