当前位置:   article > 正文

【TI毫米波雷达入门-9】TI毫米波雷达基础概念及DCA1000数据解析IWR6843_ti毫米波雷达数据帧

ti毫米波雷达数据帧

1,毫米波雷达相关特性

主要研究:距离,速度,角度 3个维度。

特点:穿透塑料,干燥墙壁,玻璃等材料

适应雨,雾,灰层,关照,黑暗等环境。

2,距离方面4个问题

  1. 毫米波如何测量距离
  2. 如果两个物体,是怎么被同时测量出来
  3. 两个距离多近的物体能被识别。
  4. 毫米波能检测的最大距离

3,FMCW 调频连续波的概念

由初始频率F1开始,以S的速率匀速递增至F2 结束,成为调频连续波

几个概念:

带宽B = F2-F1

TC:一次递增花费的时间

S:斜率

4,混频器的概念

1)输入两个正弦波信号,输出的信号的频率是两个信号的差值。任意时间的频率都是两个输入信号的差值

2)输出信号的起始相位也是两个信号的起始差值

5,距离计算

当混频器输出的中频信号的频率 称为中频信号IF = S*t = S*2d/c 得出,距离d = IF*c/2S

6,距离分辨率

由IF> 1/Tc

S*2dres/c>1/Tc

dres>c/(TC*2S) = c/2B

7,最大距离

由ADC 采样的中频信号反映的是中频信号频率,幅度信息。

如果中频信号的频率过快,超过ADC的采样率,那么信号也会丢失。

故:IF = S2dmax/c < Fs(Fs为ADC的采样率)

得出。dmax = Fs*c/2S

8,思考题

1,以上Chirps 具有相同的带宽B=》距离分辨率一致。

2,最大距离dmax = Fs*c/2S ,由于A的斜率S只有B的一半,当需要检测相同的最大距离时,A的采样率需求也只有B的一半

3,由于斜率更高,一次采样时间更短。

9,距离公式总结

 

中频信号经过ADC 反馈出,频率/ADC值,经过FFT后,得到距离和幅值的波形图

由混频器输出的不同距离的中频信号,他们的峰值也是不一样

10,IWR6843手册特性

  • 60Ghz~64Ghz 4G连续带宽
  • 3发4收
  • 内置ARM Cortex-R4F (MCU),ROM,C674x(DSP),硬件加速器(用于FFT,滤波,CFAR处理恒虚警检测
  • 支持外部QSPI加载程序
  • IWR6843:内部存储,1.75MB = MSS(程序RAM 512KB)+MSS(数据RAM 192KB)+DSP (L1 RAM64KB)+DSP (L2 RAM 256KB)+L3雷达数据立方体RAM 768KB
  • 接口信息:6个ADC(低采样率监控),2个SPI,2个UART,1个CAN-FD,I2C GPIO
  • 双通道LVDS(用于接收原始ADC数据和调式仪表)
  • 电源管理:IO支持3.3V/1.8V
  • 时钟:内部40MHZ,外部40MHZ
  • 功能框图

  • 电源&功耗

11,DCA1000数据解析

包含虚部

  1. %%% This script is used to read the binary file produced by the DCA1000
  2. %%% and Mmwave Studio
  3. %%% Command to run in Matlab GUI -readDCA1000('<ADC capture bin file>')
  4. function [retVal] = readDCA1000(fileName) %新建一个函数名为readDCA1000 的函数,输入fileName,输出retVal 表格
  5. %% global variables
  6. % change based on sensor config
  7. numADCSamples = 256; % number of ADC samples per chirp 采样点数是256
  8. numADCBits = 16; % number of ADC bits per sample ADC的采样位数
  9. numRX = 4; % number of receivers 接收器数量
  10. numLanes = 2; % do not change. number of lanes is always 2 LVDS的平台数
  11. isReal = 0; % set to 1 if real only data, 0 if complex data0 0 是包含虚部
  12. %% read file
  13. % read .bin file
  14. fid = fopen(fileName,'r');%获取二进制文件由文件标识符 fileID
  15. adcData = fread(fid, 'int16'); %返回一个列向量,每个元素以int16 形式格式
  16. % if 12 or 14 bits ADC per sample compensate for sign extension
  17. if numADCBits ~= 16
  18. l_max = 2^(numADCBits-1)-1;
  19. adcData(adcData > l_max) = adcData(adcData > l_max) - 2^numADCBits;
  20. end
  21. fclose(fid);
  22. fileSize = size(adcData, 1); %读取数据长度
  23. % real data reshape, filesize = numADCSamples*numChirps
  24. if isReal
  25. numChirps = fileSize/numADCSamples/numRX;
  26. LVDS = zeros(1, fileSize);
  27. %create column for each chirp
  28. LVDS = reshape(adcData, numADCSamples*numRX, numChirps);
  29. %each row is data from one chirp
  30. LVDS = LVDS.';
  31. else
  32. % for complex data
  33. % filesize = 2 * numADCSamples*numChirps
  34. numChirps = fileSize/2/numADCSamples/numRX;
  35. LVDS = zeros(1, fileSize/2);
  36. %combine real and imaginary part into complex data
  37. %read in file: 2I is followed by 2Q
  38. counter = 1;
  39. for i=1:4:fileSize-1
  40. LVDS(1,counter) = adcData(i) + sqrt(-1)*adcData(i+2);
  41. LVDS(1,counter+1) = adcData(i+1)+sqrt(-1)*adcData(i+3);
  42. counter = counter + 2;
  43. end
  44. % create column for each chirp
  45. LVDS = reshape(LVDS, numADCSamples*numRX, numChirps);
  46. %each row is data from one chirp
  47. LVDS = LVDS.';
  48. end
  49. %organize data per RX
  50. adcData = zeros(numRX,numChirps*numADCSamples);
  51. for row = 1:numRX
  52. for i = 1: numChirps
  53. adcData(row, (i-1)*numADCSamples+1:i*numADCSamples) = LVDS(i, (row-1)*numADCSamples+1:row*numADCSamples);
  54. end
  55. end
  56. % return receiver data
  57. retVal = adcData;

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/961646
推荐阅读
相关标签
  

闽ICP备14008679号