解析AWR2243+DCA1000采集的数据

news/2025/1/15 7:14:42/

好久不见,甚是想念
        此篇博将对AWR2243的数据包进行解析,关于数据采集部分请参考关于AWR2243数据采集问题这篇。
      关于数据解析,推荐首先阅读TI官网上的毫米波雷达设备 ADC 原始数据捕获 。我的设备是AWR2243+DCA1000,数据解析方式文档未明确给出,我两种都试了一下,发现按照xWR12xx and xWR14xx方式解析正确,即上述文档第7页给出的方式,工作需要,我只进行了一维快速傅里叶变换,得到距离和接收功率。
       下面是Matlab解析Bin文件代码。

%% 参数设置      
FrequencySlope=30e12;       %调频斜率
SampleRate=10e6;       %采样率
%% 文件路径名称
fname='D:\adc_data.bin';
%% 选择文件读取数据包
fid=fopen(fname,'rb');%打开文件
data=fread(fid,256*128*4*1*2,'int16');
data1=reshape(data,8,[]);%将数据按照存储格式分成八路
adcdata = data1(1:4,:)+1i*data1(5:8,:); %将cdata中的实部与虚部相加,使用一根接收天线只有第一行有数据,其余行是零
fclose(fid);
RX0= reshape(adcdata(1,:),256,128);%该行是选择一根接收天线的所有数据%% 距离FFTrange_win = hanning(256); %加汉宁窗,窗长256range_profile = [];for m=1:128temp=RX0(:,m).*range_win;    %加窗函数temp_fft=fft(temp,256);%对每个chirp做N点FFTrange_profile(:,m)=temp_fft;end%% 一维FFT后,距离与接收功率图figure(1);      range_profile_Temp = range_profile';X=(0:255)*SampleRate*3e8/256/2/FrequencySlope;%距离公式Y=20*log10(abs(range_profile_Temp));%接收功率公式plot(X,Y);    xlabel('距离(m)');ylabel('信号幅值');title('一维FFT处理三维视图');

      下面将对代码部分进行详细解析

%% 参数设置      
FrequencySlope=30e12;       %调频斜率
SampleRate=10e6;       %采样率

      首先上面的调频斜率和采样率是根据你的采集设置输入的,samples和chirps数量也是,具体数值请参考你自己设置数值,位置如下图所示在这里插入图片描述

%% 文件路径名称
fname='D:\adc_data.bin';
%% 选择文件读取数据包
fid=fopen(fname,'rb');%打开文件
data=fread(fid,256*128*4*1*2,'int16');
data1=reshape(data,8,[]);%将数据按照存储格式分成八路
adcdata = data1(1:4,:)+1i*data1(5:8,:); %将cdata中的实部与虚部相加,使用一根接收天线只有第一行有数据,其余行是零
fclose(fid);

        选择你的文件和所在路径,目前读取的是一帧数据,如果想要读取多帧数据,你可以尝试着写一个for循环,我设置的是256个samples和128个chirps,我采用的是一根发射天线一根接收天线做的测试,根据数据存储格式将一帧数据分8路(IQ双通道,4个接收天线通道,一共8路),我的只有第1路(实部)和第5 路(虚部)有数据,然后进行序虚部实部相加,最后我们得到RX0。
在这里插入图片描述
分成8路后data1数据如下图所示
在这里插入图片描述

虚部实部相加后,变成4路,第一路是一根接收天线的所有数据,其余三路数据为0,adcdata数据如下图所示
在这里插入图片描述

将第一路数据放入一个256行乘以128列的RX0数组里,然后进行一维FFT变换,FFT之后,纵坐标对应的是距离信息,横坐标对应的是接收功率信息。

RX0= reshape(adcdata(1,:),256,128);%该行是选择一根接收天线的所有数据%% 距离FFTrange_win = hanning(256); %加汉宁窗,窗长256range_profile = [];for m=1:128temp=RX0(:,m).*range_win;    %加窗函数temp_fft=fft(temp,256);%对每个chirp做N点FFTrange_profile(:,m)=temp_fft;end

我将数组进行了转置,现在横坐标对应距离信息,纵坐标对应接收功率信息,然后画图。

figure(1);      range_profile_Temp = range_profile';X=(0:255)*SampleRate*3e8/256/2/FrequencySlope;%距离公式Y=20*log10(abs(range_profile_Temp));%接收功率公式plot(X,Y);    xlabel('距离(m)');ylabel('信号幅值');title('一维FFT处理三维视图');

运行结果如下,我测的是约5M处的目标物。
在这里插入图片描述

      如果你要进行二维三维FFT,在这里非常推荐 “唱跳c++篮球”这位博主写的回波3DFFT处理(测距、测速、测角),这位博主写的很详细,可以参考和学习。


http://www.ppmy.cn/news/186642.html

相关文章

FPGA实现AD9361数据接口逻辑

作者:ShownSun 工作室:时沿科技 文章目录 FPGA实现AD9361数据接口逻辑1 引言2 AD93612.1 芯片简介2.2 参数配置2.3 引脚2.4 接口时序 3 参考代码3.1 SelectIO配置3.2 数据解析 FPGA实现AD9361数据接口逻辑 1 引言 本文通过以高速AD9361芯片为例进行数据…

Xilinx XC7Z020双核ARM+FPGA开发板试用合集——自定义硬件工程

本期测试板卡是一款基于Xilinx Zynq-7000系列XC7Z010/XC7Z020高性能低功耗处理器设计的异构多核SoC工业级核心板,处理器集成PS端双核ARM Cortex-A9 + PL端Artix-7架构28nm可编程逻辑资源。 下面是测试内容,欢迎查阅。 SD卡启动设置 根据《TLZ7x-EasyEVM-S评估板硬件说明书》…

STM32中CAN1_RX0_IRQn和CAN1_RX1_IRQn的使用

“如果你用的CAN引脚是PA11和PA12,接收中断用CAN1_RX0_IRQn。如果CAN引脚用的是PB8和PB9,也就是用重定义的引脚,接收中断用CAN1_RX1_IRQn。由于PA11和PA12也是USB的引脚,所以非互联型且带CAN控制器的微控制器的库文件在起名字时用…

详解机器人标定

相机固定不动, 上往下看引导机器人移动 机器人与视觉标定理论详解 相机固定不动, 上往下看引导机器人移动 1.相机非线性校正 使用标定板做非线性校正 2.相机与机器人做9点标定 可以使用机器人扎9个点,或者机器人抓住工件摆放9个位置,得到9个机械坐标…

GD32F303基于USBD库的usb custom hid 双向通讯实现

默认已经建立好需要移植的GD32F303空白工程 环境:keil GD库版本:V2.1.4 通讯工具: 链接:https://pan.baidu.com/s/1Ukuy0u52C9ufPGz9QcHONA 提取码:d9rf 正文开始 USBD库植步骤: 找到GD官网的软件…

1.ReactiveX - 什么是Rx,Rx的理念和优势

ReactiveX http://reactivex.io/intro.html Rx介绍 ReactiveX的历史 ReactiveX是Reactive Extensions的缩写,一般简写为Rx,最初是LINQ的一个扩展,由微软的架构师Erik Meijer领导的团队开发,在2012年11月开源,Rx是一个编…

GD32F4xx系列CAN通信收发配置

GD32F4xx系列CAN通信收发基础配置: 主要注意2点: 1、波特率的配置: 查找GD32F4xx的用户手册找到CAN外设对应的时钟: 这里可以看到GD32F4xx的时钟在APB1总线上 在GD32F4xx的时钟树上找到APB1外设的时钟频率: 根据GD32F4…

Rx介绍

ReactiveX的历史 ReactiveX是Reactive Extensions的缩写,一般简写为Rx,最初是LINQ的一个扩展,由微软的架构师Erik Meijer领导的团队开发,在2012年11月开源,Rx是一个编程模型,目标是提供一致的编程接口&…