1.准备工作
硬件设施:本实验需要1台IWR6843ISK毫米波雷达,1台DCA1000EVM评估板,2根micro USB线,1根RJ45网线,1个5V/2.5A(电流要求不小于2.5A)电源适配器,1台电脑。
软件设施:①matlab:编程软件,实现数据读取;
②Uniflash8.2.0:程序配置软件,烧录配置文件;
③XDS Emulation Software Package v6.0.579.0 及以上版本:XDS Emulation Software (EMUPack) Download
④mmWave Studio 02.01.01.00:该工具集拥有评估功能、线性调频脉冲原型设计功能和开箱即用演示实验功能
⑤FTDI驱动:mmWave Studio安装时自动安装该驱动
⑥MATLAB Runtime Engine v8.5.1 :即下载安装MCR_R2015aSP1_win32_installer.exe,地址如下:
⑦以太网接口配置:
控制面板→网络和Internet→网络连接→以太网(右击)→属性→Internet协议版本4(TCP/IPv4)属性→IP地址为192.168.33.30
2.实验简介
使用IWR6843isk+DCA1000+mmwave studio进行毫米波雷达原始数据采集。
3.实验步骤
3.1把bin固件烧录到毫米波雷达板子:
将IWR6843ISK与笔记本电脑相连,检查端口是否正确,端口应如下所示,一个为enhanced com port(用户端口),一个为standard com port(数据端口);
将IWR6843ISK SOP值设置为刷写模式,即设置为10110X,设置完成后,再按一下RESET(S2)键;
打开Uniflash,选择IWR6843,再点击start键,选择xwr68xx_mmw_demo.bin文件,设置好端口(即前面的enhanced com port端口),再点击load image键进行烧录;
烧录成功后,由于接下来的工作要和DCA1000配合使用,根据用户手册,将SOP值设为01100X;若烧录不成功,则:①检查bin文件路径中是否有中文,②检查串口是否设置正确,③检查芯片是否选择正确,④若一直烧写不成功,可以在Setting里面点击Format SFLASH清空之后再试试。
3.2 使用mmWaveStudio对mmWave设备进行配置
将IWR6843ISK与DCA1000EVM相连,将电源适配器与DCA1000EVM相连,确定IWR6843ISK的SOP值为01100X,DCA1000EVM SW1处设置为110,SW2处设置为00001000,将SW3设置为1。需注意DCA1000EVM的J1处(RADAR_FTDI)与电脑相连,不要连接成FPGA!!!
具体连接如下图所示
若均设置正确,则在设备管理器中会出现以下6个端口。
打开mmwavestudio,出现以下界面表示mmwavestudio可以正常工作
3.2.1点击setup DCA1000,单击connect,reset and按钮
3.2.2单击蓝色框set(1)
3.2.3端口设置为COM6(enhanced com port),波特率设置为921600,单击蓝色框connect(2)
3.2.4从mmwave studio库中找到BSS FW和MSS FW对应文件进行配置,然后依次单击load键
3.2.5单击按钮 SPI connect(5)
3.2.6单击按钮 RF Power-up(6)
3.2.7配置好的界面如下所示:
3.3基于IWR6843ISK+MMWAVE STUDIO 配置TDM-MIMO
3.3.1根据具体情况选择收发天线数,以三发四收为例,其他配置选择默认,LP Mode的设置,有2个模式:Regular ADC和Low Power ADC,Low Power ADC在这个模式下,为了节省功耗将采样时钟速率降低一半
3.3.2dataconfig页面选择默认配置
3.3.3sensorconfig中profile配置为默认,chirp配置如下所示,
点击manage chirps 出现如下界面
Frame配置如下
3.4数据采集
DCA1000 ARM→triggerframe(触发帧, EVM板开始发射信号)→stop frame→postproc(当数据采集完后,点击PostProc进行数据处理)
采集过程DCAEVM指示灯闪烁
点击PostProc后的界面
MATLAB如何解析DCA1000和IWR6843采集的数据?在MATLAB中读取bin文件代码如下:
%%% 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(~)
%% 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;
大家一定很好奇其他板子在MATLAB中该如何解析,具体参考下面文档,里面有相关maltab代码。链接如下: