Other Parts Discussed in Thread: AWR1642, DCA1000EVM
Hi,
I am trying to transmit all 2D fft result for all virtual antennas through lvds with AWR1642 BOOST and modified mmw demo file and DCA1000EVM.
What i am stuck is that when the number of range bins increases from 64 to 256 (now i am using 16 doppler bins and 8 virtual antennas), the radar stops when activate it.
I am currently using 6 user sw lvds buffers with modification at some files with references from https://e2e.ti.com/support/sensors/f/1023/t/795299
And i checked that all 6 buffers work well when tested with 64 range bins.
However when i increase that number of range bins to 256, the board stops
Below is the code that I put 2D fft data to lvds user buffers at dss_lvds_stream.c
For here lvds_data means &gMmwDssMCB.dataPathObj[0]; (I do not use subframe mode. so i just picked first array of dataPathObj)
sessionCfg.u.swCfg.userBufferInfo[0].size = HSIHeader_toCBUFFUnits(sizeof(cmplx16ImRe_t) * lvds_data->numRangeBins * lvds_data->numVirtualAntennas * 3);
sessionCfg.u.swCfg.userBufferInfo[0].address = (uint32_t)(gMmwDssMCB.dataPathObj[0].azimuthStaticHeatMap);
sessionCfg.u.swCfg.userBufferInfo[1].size = HSIHeader_toCBUFFUnits(sizeof(cmplx16ImRe_t) * lvds_data->numRangeBins * lvds_data->numVirtualAntennas * 3);
sessionCfg.u.swCfg.userBufferInfo[1].address = (uint32_t)&(gMmwDssMCB.dataPathObj[0].azimuthStaticHeatMap[lvds_data->numRangeBins * lvds_data->numVirtualAntennas * 3 - 1]);
sessionCfg.u.swCfg.userBufferInfo[2].size = HSIHeader_toCBUFFUnits(sizeof(cmplx16ImRe_t) * lvds_data->numRangeBins * lvds_data->numVirtualAntennas * 3);
sessionCfg.u.swCfg.userBufferInfo[2].address = (uint32_t)&(gMmwDssMCB.dataPathObj[0].azimuthStaticHeatMap[lvds_data->numRangeBins * lvds_data->numVirtualAntennas * 6 - 1]);
sessionCfg.u.swCfg.userBufferInfo[3].size = HSIHeader_toCBUFFUnits(sizeof(cmplx16ImRe_t) * lvds_data->numRangeBins * lvds_data->numVirtualAntennas * 3);
sessionCfg.u.swCfg.userBufferInfo[3].address = (uint32_t)&(gMmwDssMCB.dataPathObj[0].azimuthStaticHeatMap[lvds_data->numRangeBins * lvds_data->numVirtualAntennas * 9 - 1]);
sessionCfg.u.swCfg.userBufferInfo[4].size = HSIHeader_toCBUFFUnits(sizeof(cmplx16ImRe_t) * lvds_data->numRangeBins * lvds_data->numVirtualAntennas * 3);
sessionCfg.u.swCfg.userBufferInfo[4].address = (uint32_t)&(gMmwDssMCB.dataPathObj[0].azimuthStaticHeatMap[lvds_data->numRangeBins * lvds_data->numVirtualAntennas * 12 - 1]);
sessionCfg.u.swCfg.userBufferInfo[5].size = HSIHeader_toCBUFFUnits(sizeof(cmplx16ImRe_t) * lvds_data->numRangeBins * lvds_data->numVirtualAntennas);
sessionCfg.u.swCfg.userBufferInfo[5].address = (uint32_t)&(gMmwDssMCB.dataPathObj[0].azimuthStaticHeatMap[lvds_data->numRangeBins * lvds_data->numVirtualAntennas * 15 - 1]);
And below is the part that i modified at dss_data_path.c to send all 2D fft result about all doppler bins
for (doppler_index_heatmap = 0; doppler_index_heatmap < obj->numDopplerBins; doppler_index_heatmap++)
{
obj->azimuthStaticHeatMap[binIndex * (obj->numDopplerBins) + rangeIdx * obj->numVirtualAntAzim * (obj->numDopplerBins) + doppler_index_heatmap].real =
(int16_t)(obj->fftOut2D[doppler_index_heatmap].real >> (obj->log2NumDopplerBins + 4));
obj->azimuthStaticHeatMap[binIndex * (obj->numDopplerBins) + rangeIdx * obj->numVirtualAntAzim * (obj->numDopplerBins) + doppler_index_heatmap].imag =
(int16_t)(obj->fftOut2D[doppler_index_heatmap].imag >> (obj->log2NumDopplerBins + 4));
}
Does the size of 2D fft result of all doppler bins and virtual antennas is so big to save at dataPathObj[0].azimuthStaticHeatMap? Or do i mistake at some parts?
Thanks a lot
Jinhyeong Kim