Xiaojie雷达之路---TI实战笔记---对AWR1843+DCA1000采集的数据进行解析

这篇文章主要是介绍对AWR1843和DCA1000采集的数据进行解析

下面两张图要必须看懂,才能进行以后的操作:
图1:
在这里插入图片描述
这张图片主要说明的意思是对于每个tx的chirp,每个rx都会接收到
在这里插入图片描述
从上面这张图可以看出,lane1包含采样点的实部,lane2指的是采样点的虚部,对于tx发射的一个chirp,4个tx会接收到的数据量为4*采样点,这张图还说明了DCA1000采集到的数据的存储方式(1843里面只有两通道的LVDS,而且数据采用的存储方式是non-interleaved,lane1负责两个采样点的实部,lane2负责采样点的虚部)

下面的这段程序是matlab对数据进行解析,并且最后解析的结果是维度为[Rxnum,numChirps*numADCSamples]的表格

%%% This script is used to read the binary file produced by the DCA1000
%%% and Mmwave Studio
%%% Command to run in Matlab GUI -readDCA1000('<ADC capture bin file>') 
function [retVal] = readDCA1000_1(fileName)
%% global variables
% change based on sensor config
numADCSamples = 256; % number of ADC samples per chirp
numADCBits = 16; % number of ADC bits per sample
numRX = 4; % number of receivers
numLanes = 2; % do not change. number of lanes is always 2
isReal = 0; % set to 1 if real only data, 0 if complex data0
%% read file
% read .bin file
fid = fopen(fileName,'r');
adcData = fread(fid, 'int16');
% if 12 or 14 bits ADC per sample compensate for sign extension
if numADCBits ~= 16
l_max = 2^(numADCBits-1)-1;
adcData(adcData > l_max) = adcData(adcData > l_max) - 2^numADCBits;
end
fclose(fid);
fileSize = size(adcData, 1);
% real data reshape, filesize = numADCSamples*numChirps
if isReal
numChirps = fileSize/numADCSamples/numRX;
LVDS = zeros(1, fileSize);
%create column for each chirp
LVDS = reshape(adcData, numADCSamples*numRX, numChirps);
%each row is data from one chirp
LVDS = LVDS.';
else
% for complex data
% filesize = 2 * numADCSamples*numChirps
numChirps = fileSize/2/numADCSamples/numRX;
LVDS = zeros(1, fileSize/2);
%combine real and imaginary part into complex data
%read in file: 2I is followed by 2Q
counter = 1;
for i=1:4:fileSize-1
LVDS(1,counter) = adcData(i) + sqrt(-1)*adcData(i+2); 
LVDS(1,counter+1) = adcData(i+1)+sqrt(-1)*adcData(i+3); 
counter = counter + 2;
end
% create column for each chirp
LVDS = reshape(LVDS, numADCSamples*numRX, numChirps);
%each row is data from one chirp
LVDS = LVDS.';
end
%organize data per RX
adcData = zeros(numRX,numChirps*numADCSamples);
for row = 1:numRX
for i = 1: numChirps
adcData(row, (i-1)*numADCSamples+1:i*numADCSamples) = LVDS(i, (row-1)*numADCSamples+1:row*numADCSamples);
end
end
% return receiver data
retVal = adcData;

在调用方式:

retVal = readDCA1000_1('adc_data.bin');

上面的代码是同门师兄给的,在TI论坛上也可以找到,下面对这段代码进行验证

采集到的数据集的参数的配置:

发射天线:tx1
接收天线:rx1,rx2,rx3,rx4
采样点:256
帧的数量:8
一个帧中chirp的循环次数:128
chirp的总数:8*128=1024
采样点的类型:complex1x

首先采集到的数据为一个维度为2097152(812842564/2)*1的数据表

通过执行上述的代码会得到如下的数据表:

在这里插入图片描述
可以看到这是一个[4,1024*256]的表格,4代表rx的数量,1024代表chirp的数量,256代表采样点
1~4行,分别是rx0,rx1,rx2,rx3接收到的数据,数据被解析成这样,就可以做后续的数据处理了

参考文献:

  1. 《Mmwave Radar Device ADC Raw Data Capture》
  • 18
    点赞
  • 132
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 24
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

XXXXiaojie

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值