【TI毫米波雷达入门-12】myreadDCA1000.m

发布时间:2023年12月26日

需求,读取dca1000的二进制文件,将数据转换成4行(rx0~rx3)实部+虚部的格式

1,先打开二进制文件,结合手册查看格式

如图可知,通过DCA1000得到的数据是按

RX0 实部1;

RX0 实部2;

RX0虚部1;

RX0 虚部2

RX0 实部3;

RX0 实部4;

RX0虚部3;

RX0 虚部4;

...............

RX0 实部N-1;

RX0 实部N

RX0虚部N-1;

RX0 虚部N;

(其中N表示每个chirp的采样个数,目前已知等于256)

RX1 实部1;

RX1 实部2;

RX1虚部1;

RX1 虚部2

RX1 实部3;

RX1 实部4;

RX1虚部3;

RX1 虚部4;

...............

RX1 实部N-1;

RX1 实部N

RX1虚部N-1;

RX1 虚部N;

...............

R2 的N次

R3 的N次

4*1次chirp 采样完成后,再进行一次这样的循环,合计M次。

2,从中得到几个基本参数

  1. 通过解析二进制的数据可以得出数据总数
  2. 总数/2 得到有效数字(/2的原因一半是虚部)
  3. 一个chirp采样数是256
  4. 一共有4个接收天线
  5. 总共的chirp数= 总数/2/4/256

定义好这些全局变量,共后面使用

3,新建一个行矩阵,将所有的二进制数据组合成实部+虚部的格式

4,新建一个4x总chirp数 的矩阵,用于组合存4个天线的M个chirps*256点数据

5,matlab程序代码

  1. 可以先编写测试代码,
  2. 测试代码验证通过后,封装成函数
function [retVal] = myreadDCA1000(fileName)  %新建一个函数名为readDCA1000 的函数,输入fileName,输出retVal 表格

%% 
%全局变量
SampleNumbers = 256; %一个chips 的采样点数
RxNum = 4;          %4路接收
%ChirpNumbers  = 0;%附上一个初始Chirps 默认是0
%dataNumbers= 0;% 有效数据个数
%% 
%% 
%读取原始数据
%fileID = fopen('matlab_lab_adc_data.bin','r');
fileID = fopen(fileName,'r');
data = fread(fileID, 'int16');  %in16显示
fclose(fileID);
dataNumbers = length(data)/2;
ChirpNumbers =dataNumbers/RxNum/SampleNumbers;
RxData = zeros(RxNum,dataNumbers/4);
lvdsData = zeros(dataNumbers,1);
%% 
%将原始数据合并成实部+虚部
lvds_nums = 1;
for j = 1:4:length(data) -3
    lvdsData(lvds_nums,1) = data(j,1) + sqrt(-1)*data(j+2,1);
    lvdsData(lvds_nums+1,1) = data(j+1,1) + sqrt(-1)*data(j+3,1);
    lvds_nums = lvds_nums +2 ;
end

lvds_nums = 1;
for i= 1:ChirpNumbers
   for j = 1: RxNum
       for k = (i-1)*256+1:(i-1)*256+256
         RxData(j,k)= lvdsData(lvds_nums,1);
         lvds_nums = lvds_nums+1;
       end
   end   
end
retVal = RxData;

总结

1,先理解原始数据的存储格式,以及要获得的数据存储格式

2,算出一些已知项目

3,将原始数据转换成实部+虚部的形式

4,转换成想要的格式

可在纸上画出流程和格式,方便理解

文章来源:https://blog.csdn.net/cengqiu4314/article/details/135219277
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。