DCA1000EVM+IWR6843+mmWave数据采集
一、mmWave Studio
1、软件下载安装
(1)软件下载
mmWave Studio是Ti毫米波传感器的工具集
官网德州仪器 德州仪器 直接搜索mmWave Studio 选择第一个下载即可
一定要先注册,不然下载了也要注册,个别邮箱注册接收不到验证码,对应资源在附件
文件
(2)软件安装
安装期间,一般选择默认路径,避免更改路径导致关联问题

安装后,打开mmWave软件,打开view的output显示调试页面
报错“Matlab Runtime Engine is not installed”,下载matlab的runtime软件
MCR_R2015aSP1_win32_installer.exe下载链接
安装后重启mmWave就可以成果打开了,打开界面如下
二、采集硬件
1、DCA1000EVM开发板
DCA1000是对应的数据采集卡,适用于毫米波雷达传感器的EVM高速接口,从雷达的LVD接口送出的ADC数据
参考资料: DCA1000EVMDataCaptureCard,**DCA1000EVM使用指南
2、IWR6843ISK
IWR6843 是一个集成的单芯片调频连续波(FMCW)雷达传感器
四收三发,IWR6843 在 60 至 64GHz 的 4GHz 带宽下运行,最大输出功率为 10dBm,分贝毫瓦;IWR6843ISK 的天线增益约为7dBi,(10dBi就是代表增益10lg(10)))RX的噪声系数-14db,1MHz时的相位噪声92dbc/hz
(1) 正面图示
正面的接口以及按键示意
LED显示
编号 | 颜色 | 使用 | 说明 |
---|---|---|---|
D3 | 橙色 | 电源正常 | 指示PGOOD,亮起表示电压轨在限制范围内 |
D4 | 绿色 | USB枚举LED | 枚举USB时亮起 |
D5 | 绿色 | 复位 | 按下时切换 |
D6 | 绿色 | 5V指示灯 | 表示使用5V电源 |
D7 | 绿色 | GPIO2 | 连接到GPIO2,当GPIO设置为输出的时候使用 |
(2) SOP模式设置
模式 | 1 | 2 | 3 | 4 | 5 | 6 |
---|---|---|---|---|---|---|
刷写模式 | on | off | on | on | off | -随意 |
功能模式 | off | off | on | on | off | -随意 |
DCA1000EVM模式 | off | on | on | off | off | -随意 |
mmWAVEEICBOOST | off | off | off | off | on | -随意 |
3、MMWAVEICBOOST
MMWAVEICBOOST 毫米波雷达承载卡扩展了 60GHz 毫米波评估模块的功能,该板通过TI 的 Code Composers 兼容调试器(ccs)提供高级软件开发、调试功能(例如跟踪和单步执行)。板载 Launchpad 接口可与 TI BoosterPack 兼容的硬件配对,以提供更多的传感器和无线连接。
MMWAVEICBOOST 具有可实现扩展连接的 LaunchPad™ 开发套件接口,例如以太网供电 (PoE)、Wi-Fi®、Sub-1 GHz 等。
特性
模块化连接,可连接到毫米波天线插件模块
BoosterPack插件模块接口
通过板载XDS110 进行调试和仿真
用于采集原始ADC数据的 DCA1000EVM 接口
兼容mmWave Studio (MMWAVE-STUDIO) 工具,包括毫米波演示可视化工具 (MMWAVE-DEMO-VISUALIZER)
(1)模式设置
(2)跳线、开关和LED
毫米波传感器装置可根据 SOP 线的状态设置为在三种不同模式下工作。只有在毫米波传感器器件启动过程中,才会对这些线路进行电源感应。 闭合跳线表示进入毫米波传感器器件的SOP信号的状态 1,断开跳线表示状态 0
JTAG 接口:通过外部 XDS 仿真器进行调试和开发。要使用此接口,必须断开连接到板载仿真器(XDS110)的 JTAG线;此操作是通过 S1 完成的(DIP 开关的第 12 个位置应为打开 状态),同时还必须断开 MIPI 60 引脚连接器上的外部仿真器
CAN 连接器: J1 和 J2 连接器可分别提供来自板载 CAND-FD 收发器(TCAN1042HGVDRQ1)和 CAN 收发器 (SN65HVDA540QDR)的 CAN_L 和 CAN_H 信号,如 图 2-22 所示。与 SPI 接口信号多路复用后,这些信号 将连接到 CAN 总线;必须选择两条路径中的一条。通过关闭开关 S1(将开关第一个位置设为 ON)选择两个 CAN
问题:232连接问题
问题:FPGA连接问题,
[11:23:53] [RadarAPI]: ar1.CaptureCardConfig_EthInit("192.168.33.30", "192.168.33.180", "12:34:56:78:90:12", 4096, 4098)
[11:23:53] [RadarAPI]: ar1.CaptureCardConfig_Mode(1, 2, 1, 2, 3, 30)
[11:23:53] [RadarAPI]: ar1.CaptureCardConfig_PacketDelay(25)
[11:23:53] [RadarAPI]: Sending fpga command to DCA1000
[11:24:03] [RadarAPI]:
[11:24:03] FPGA Configuration :
[11:24:03] Timeout Error! System disconnected
[11:24:03] [RadarAPI]: Sending record command to DCA1000
[11:24:13] [RadarAPI]:
[11:24:13] Configure Record :
[11:24:13] Timeout Error! System disconnected
[11:24:13] [RadarAPI]: ar1.GetCaptureCardFPGAVersion()
[11:24:13] [RadarAPI]: Sending fpga_version command to DCA1000
[11:24:23] [RadarAPI]:
[11:24:23]
[11:24:23] Unable to read FPGA Version. [error -5]
解决办法,重新刷新Fpga的固件flash,或者是关闭防火墙
**设置电脑的IP地址:**DCA1000的数据使用UDP数据包形式通过以太网进行传输,DCA1000上的FPGA已编程,目标地址为192.168.33.30。因此,我们必须将目标PC配置为与FPGA的预期目标地址匹配的静态IP地址,以便从EVM接收数据
三、mmWave数据采集
1、设备连接
硬件连接图如下,其中需要注意的是DCA的mico线需要连接RADAR_FDTI而不是FPGA_JTAG
(1)电源设置
⑨是电源控制按钮,选择供电方式,成功供电后,④会点亮。
- DC_JACK_5V_IN使用5v直流的适配器供电(这里比较坑,这个设备卖的时候需要单独购买适配器)
- RADAR_5V_IN使用和DCA1000EAM连接的IWR6843ISK系列的毫米波传感器EVM板供电,不需要外接5V电源(尝试过,但是后续FPGA中会存在问题,乖乖使用适配器输入吧)
(2)模式设置
SW1 ⑦
设置为110
switch | 1 | 2 | 3 | 描述 |
---|---|---|---|---|
LVDS 12-bit mode | on | off | off | 12位数据模式 |
LVDS 14-bit mode | off | on | off | 14位数据模式 |
LVDS 16-bit mode | off | off | on | 16位数据模式 |
SW2 ⑧
SW2处设置为00001000
switch | usage | 说明 |
---|---|---|
1 | LVDS_CAPTURE | |
1 | DMM_PLAYBACK | |
2 | SD_STORE | |
2 | ETH_STREAM | |
3 | 1243_MODE | |
3 | AR1642_MODE | |
4 | RAW_MODE | |
4 | DATA_MODE | |
6 | USER_SW1 | |
6 | GND | |
7 | USER_SW2 | |
7 | GND | |
8 | USER_SW | |
8 | GND |
**SW3⑥ **
IWR6843ISK设置的为01100X
按键
按键 | usage | 说明 |
---|---|---|
10 | PROGRAMN | 当SPI闪存被重新写入时,按下按钮从SPI闪存对FPGA进行编程 |
11 | Capture start | 当DCA1000处于硬件配置模式时,按下按钮开始启动数据传输,再按下停止数据传输 |
12 | SPARE_GPIO_SW | 未来使用 |
13 | FPGA_RST | 重置FPGA |
(3)串口检查
安装mmWave studio时会安装FTDI驱动,如果驱动失败,手动安装mmwave_studio\ftdi下的驱动
驱动连接时,串口连接图如下,分别是DCA端口,和雷达模块端口
如果没有Silicon的雷达模块端口的话,可以考虑一下SOP模式,对应的是011000;
(4)网络连接
DCA1000的数据使用UDP数据包形式通过以太网进行传输,因此我们需要将PC设置为静态IP地址。
设置以太网的IIPV4的IP地址为192.168.33.30;子网掩码为255.255.255.0;
需要注意的是,正常使用5V适配器供电,这里以太网的备注应该是“未识别的网络”而不是"“网络电缆被拔出”"
2、Connection
mmwave最好使用2.1.1版本,3.0版本的release好像不支持6843
打开mmWave软件,当驱动和软件安装正常,界面显示如下,硬件连接正常的话,会显示连接了一个设备,对应FTDI连接
软件对应操作顺序按照蓝色指示进行
(1) Reset control
直接set
(2) RS232 operations
选择DCA的Enhanced COM端口;波特率选择115200,点击连接,连接之后
通过RS232接口提供雷达设备与PC连接,支持固件加载
设备管理器中 enhanced com port(用户端口),standard com port(数据端口),COM Port选择用户端口,我这里是COM10
(3)operating Frequency
工作频率使用的DCA1000是60Hz
(4)Device Variant
设备类型,使用的IWR6843ISK
(5)BSS FW
下载IWR固件到芯片(对应射频模块软件补丁);对应路径为
D:\ti\mmwave_studio_02_01_01_00\rf_eval_firmware\radarss\xwr68xx_masterss.bin
(6)MSS FW
下载IWR固件到芯片(通信相关的MSS代码,即R4F的代码);对应路径为
D:\ti\mmwave_studio_02_01_01_00\rf_eval_firmware\masterss\xwr68xx_masterss.bin
(7)SPI Connect
SPI连接;mmWave雷达设备使用SPI接口与外部主机处理器进行通信;
如果SPI连接不正常,可以通过使用Uniflash擦除FPGA的闪存
(8)RF Power-UP
射频通电,用户可以通过SPI通信接口向设备发送命令,并评估射频结果
以上操作最好可以将output同时查看,以便于检查输出结果;如果操作正常,界面现实将如下所示
3、StaticConfig
静态配置,配置射频基本参数
(1) Channel Config
使用天性以及级联模式
(2) ADC Config
ADC采样位数、ADC采样输出格式、IQ采样选择
直接set
(3) Advanced Configuration
直接set
(4) LP Mode
选择数字模拟信号输入模式
- Regular ADC:正常模式
- Low Power ADC:低功耗模式,时钟速率降低一半
(5) RF Init
直接执行
3、DataConfig
数据配置选项
4、SencorConfig
传感器配置,对应的关键参数即
profilecfg、chripcfg、framecfg
操作流程
第五步的SetUp,DCA1000,在连接成功的之后,需要确认确实读取到了FPGA的版本号码,在得到了FPGA版本之后才可以采集到数据
正常执行时,获取结果调试记录,方便对比操作问题。
GM: Constructor
GM: Wed Dec 06 15:50:50 2023
RSTD.Transmit("/Settings")
[15:50:51]
[15:50:51] ### Running Startup script: "D:\ti\mmwave_studio_02_01_01_00\mmWaveStudio\Scripts\Startup.lua" ###
[15:50:51] RSTD.SetAndTransmit ("/Settings/Scripter/Display DateTime" , "1")
[15:50:51] RSTD.SetAndTransmit ("/Settings/Scripter/DateTime Format" , "HH:mm:ss")
[15:50:51] Scripter ignored: Attempt to UnBuild() again or before Build.
[15:50:51] RSTD.SetVar ("/Settings/Clients/Client 0/Dll" , "D:\\ti\\mmwave_studio_02_01_01_00\\mmWaveStudio\\Clients\\\\LabClient.dll")
[15:50:51] RSTD.SetVar ("/Settings/Clients/Client 0/Use" , "TRUE")
[15:50:51] RSTD.SetVar ("/Settings/Clients/Client 1/Use" , "FALSE")
[15:50:51] RSTD.SetVar ("/Settings/Clients/Client 2/Use" , "FALSE")
[15:50:51] RSTD.SetVar ("/Settings/Clients/Client 3/Use" , "FALSE")
[15:50:51] RSTD.SetVar ("/Settings/Clients/Client 4/Use" , "FALSE")
[15:50:51] RSTD.SetVar ("/Settings/AL Client/AL Dll" , "D:\\ti\\mmwave_studio_02_01_01_00\\mmWaveStudio\\RunTime\\SAL.dll")
[15:50:51] RSTD.SetVar ("/Settings/Clients/Client 0/GuiDll" , "")
[15:50:51] RSTD.SetVar ("/Settings/AutoUpdate/Enabled" , "TRUE")
[15:50:51] RSTD.SetVar ("/Settings/AutoUpdate/Interval" , "1")
[15:50:51] RSTD.SetVar ("/Settings/Monitors/UpdateDisplay" , "TRUE")
[15:50:51] RSTD.SetVar ("/Settings/Monitors/OneClickStart" , "TRUE")
[15:50:51] RSTD.SetVar ("/Settings/Automation/Automation Mode" , "false")
[15:50:51] RSTD.Transmit("/")
[15:50:51] RSTD.SaveSettings(): Settings saved to "C:\Users\mengzhe\AppData\Roaming\RSTD\config.xml"
[15:50:51] RSTD.Build()
[15:50:51] RSTD.SaveSettings(): Settings saved to "C:\Users\mengzhe\AppData\Roaming\RSTD\config.xml"
[15:50:51] RSTD.Transmit("/")
[15:50:51] RSTD.AL_Build()
[15:50:51] RSTD.AL_LoadXml()
[15:50:51] RSTD.Transmit("/")
[15:50:51] RSTD.AL_Init()
[15:50:51] RSTD.Clients_Build()
[15:50:51] GM: Init
[15:50:51] GM: Loaded 'D:\ti\mmwave_studio_02_01_01_00\mmWaveStudio\Clients\\LabClient.dll'
[15:50:51] GM: 1 Guest (s) init
[15:50:51] GM: 1 Module(s) init
[15:50:51] GM: 2 Tab (s) init
[15:50:51] RSTD.Client_LoadXml()
[15:50:52] [RadarAPI]: ar1.selectRadarMode(0)
[15:50:52] [RadarAPI]: Status: Passed
[15:50:52] Matlab Runtime Engine is installed
[15:50:52] [RadarAPI]: Starting Matlab Engine..
[15:50:59] [RadarAPI]: Matlab Engine Started!
[15:51:01] [RadarAPI]: ar1.selectCascadeMode(0)
[15:51:01] [RadarAPI]: Status: Passed
[15:51:01] [RadarAPI]: ar1.LoadSettings('C:\Users\mengzhe\AppData\Roaming\RSTD\ar1gui.ini')
[15:51:01] TESTING = false
[15:51:01] RstdNet: Port 2777: Listening..
[15:51:01]
[15:51:01] ***Script completed successfully.***
[15:51:07] [RadarAPI]: Opening Gpio Control Port()
[15:51:07] [RadarAPI]: Status: Passed
[15:51:08] [RadarAPI]: Opening Board Control Port()
[15:51:08] [RadarAPI]: Status: Passed
[15:51:09] [RadarAPI]: ar1.FullReset()
[15:51:09] [RadarAPI]: Status: Passed
[15:51:09] [RadarAPI]: Closing Board Control Port()
[15:51:09] [RadarAPI]: Status: Passed
[15:51:09] [RadarAPI]: Closing Gpio Control Port()
[15:51:09] [RadarAPI]: Status: Passed
[15:51:09] [RadarAPI]: ar1.SOPControl(2)
[15:51:09] [RadarAPI]: Status: Passed
[15:52:13] [RadarAPI]: ar1.Connect(10,115200,1000)
[15:52:15] [RadarAPI]: ar1.Calling_IsConnected()
[15:52:16] [RadarAPI]: ar1.SelectChipVersion("IWR6843")
[15:52:16] [RadarAPI]: Status: Passed
[15:52:16] [RadarAPI]: ar1.frequencyBandSelection("60G")
[15:52:16] [RadarAPI]: ar1.SelectChipVersion("IWR6843")
[15:52:16] [RadarAPI]: Status: Passed
[15:52:16] Device Status : IWR6843/QM/SOP:2/ES:2
[15:52:16] [RadarAPI]: ar1.SaveSettings('C:\Users\mengzhe\AppData\Roaming\RSTD\ar1gui.ini')
[15:53:57] [RadarAPI]: ar1.DownloadBSSFw("D:\\ti\\mmwave_studio_02_01_01_00\\rf_eval_firmware\\radarss\\xwr68xx_radarss.bin")
[15:53:57] [RadarAPI]: Downloading BSS ROM RPRC Binary..
[15:54:45] [RadarAPI]: ar1.GetBSSFwVersion()
[15:54:45] [RadarAPI]: BSSFwVersion:(06.02.01.05 (09/03/20))
[15:55:03] [RadarAPI]: ar1.DownloadMSSFw("D:\\ti\\mmwave_studio_02_01_01_00\\rf_eval_firmware\\masterss\\xwr68xx_masterss.bin")
[15:55:03] [RadarAPI]: Downloading MSS RPRC Binary..
[15:55:22] [RadarAPI]: ar1.GetMSSFwVersion()
[15:55:22] [RadarAPI]: MSSFwVersion:(02.00.00.03 (27/08/19))
[15:55:26] [RadarAPI]: ar1.PowerOn(0, 1000, 0, 0)
[15:55:26] MSS power up done async event received!
[15:55:26] [RadarAPI]: Status: Passed
[15:57:39] [RadarAPI]: ar1.SelectChipVersion("IWR6843")
[15:57:39] [RadarAPI]: Status: Passed
[15:57:39] [RadarAPI]: ar1.SelectChipVersion("IWR6843")
[15:57:39] [RadarAPI]: Status: Passed
[15:57:39] Device Status : IWR6843/QM/SOP:2/ES:2
[15:57:39] [RadarAPI]: ar1.RfEnable()
[15:57:39] BSS power up done async event received!
[15:57:39] [RadarAPI]: Status: Passed
[15:57:39] [RadarAPI]: ar1.GetMSSFwVersion()
[15:57:39] [RadarAPI]: MSSFwVersion:(02.00.00.03 (27/08/19))
[15:57:40] [RadarAPI]: ar1.GetBSSFwVersion()
[15:57:40] [RadarAPI]: BSSFwVersion:(06.02.01.05 (09/03/20))
[15:58:47] [RadarAPI]: ar1.ChanNAdcConfig(1, 1, 1, 1, 1, 1, 1, 2, 1, 0)
[15:58:47] [RadarAPI]: Status: Passed
[15:58:52] [RadarAPI]: ar1.LPModConfig(0, 0)
[15:58:52] [RadarAPI]: Status: Passed
[15:59:01] [RadarAPI]: ar1.SetMiscConfig(0)
[15:59:01] [RadarAPI]: Status: Passed
[15:59:04] [RadarAPI]: ar1.RfInit()
[15:59:04] RF Init async event received!
[15:59:04] [RadarAPI]: Time stamp, Temperture: 84875,46; APLL Status, Update: 1, 0; SynthVCO1 Status, Update: 1, 1; SynthVCO2 Status, Update: 1, 1; LODist Status, Update: 1, 1; RxADCDC Status, Update: 1, 1; HPFcutoff Status, Update: 1, 1; LPFcutoff Status, Update: 1, 1; PeakDetector Status, Update: 1, 1; TxPower Status, Update: 1, 1; RxGain Status, Update: 1, 1; TxPhase Status, Update: 1, 1; RxIQMM Status, Update: 1, 1;
[15:59:04] [RadarAPI]: Status: Passed
[16:25:42] [RadarAPI]: ar1.DataPathConfig(513, 1216644097, 0)
[16:25:42] [RadarAPI]: Status: Passed
[16:25:52] [RadarAPI]: ar1.LvdsClkConfig(1, 1)
[16:25:52] [RadarAPI]: Status: Passed
[16:26:05] [RadarAPI]: ar1.LVDSLaneConfig(0, 1, 1, 0, 0, 1, 0, 0)
[16:26:06] [RadarAPI]: Status: Passed
[16:28:06] [RadarAPI]: ar1.ProfileConfig(0, 60, 100, 6, 60, 0, 0, 0, 0, 0, 0, 29.982, 0, 256, 10000, 0, 131072, 30)
[16:28:06] [RadarAPI]: Status: Passed
[16:28:09] [RadarAPI]: ar1.ChirpConfig(0, 0, 0, 0, 0, 0, 0, 1, 0, 0)
[16:28:09] [RadarAPI]: Status: Passed
[16:28:17] Test Source Already Disabled...!!!
[16:28:17] [RadarAPI]: ar1.DisableTestSource(0)
[16:28:17] [RadarAPI]: Status: Passed
[16:28:17] [RadarAPI]: ar1.FrameConfig(0, 0, 8, 128, 40, 0, 0, 1)
[16:28:17] [RadarAPI]: Status: Passed
[16:30:32] [RadarAPI]: ar1.GetCaptureCardDllVersion()
[16:30:32] [RadarAPI]: Sending dll_version command to DCA1000
[16:30:32] [RadarAPI]:
[16:30:32] DLL Version : 1.0
[16:30:32] [RadarAPI]: ar1.SelectCaptureDevice("DCA1000")
[16:30:32] [RadarAPI]: Status: Passed
[16:30:41] [RadarAPI]: ar1.CaptureCardConfig_EthInit("192.168.33.30", "192.168.33.180", "12:34:56:78:90:12", 4096, 4098)
[16:30:41] [RadarAPI]: ar1.CaptureCardConfig_Mode(1, 2, 1, 2, 3, 30)
[16:30:41] [RadarAPI]: ar1.CaptureCardConfig_PacketDelay(25)
[16:30:41] [RadarAPI]: Sending fpga command to DCA1000
[16:30:41] [RadarAPI]:
[16:30:41] FPGA Configuration command : Success
[16:30:41] [RadarAPI]: Sending record command to DCA1000
[16:30:41] [RadarAPI]:
[16:30:41] Configure Record command : Success
[16:30:41] [RadarAPI]: ar1.GetCaptureCardFPGAVersion()
[16:30:41] [RadarAPI]: Sending fpga_version command to DCA1000
[16:30:41] [RadarAPI]:
[16:30:41]
[16:30:41] FPGA Version : 2.9 [Record]
[16:30:41]
[16:30:51] [RadarAPI]: ar1.CaptureCardConfig_StartRecord("D:\\ti\\mmwave_studio_02_01_01_00\\mmWaveStudio\\PostProc\\adc_data20231206.bin", 1)
[16:30:51] [RadarAPI]: Sending start_record command to DCA1000
[16:30:56] [RadarAPI]: ar1.StartFrame()
[16:30:56] [RadarAPI]: Status: Passed
[16:30:56] Frame start async event received!
[16:30:56] Frame End async event received!
[16:30:56] [RadarAPI]: Frame Ended
[16:30:58] [RadarAPI]:
[16:30:58] [RadarAPI]:
[16:30:58] Start Record command : Success
[16:30:58]
[16:30:58] Record is completed
[16:30:58]
[16:30:58] Record stop is done successfully
[16:31:06] [RadarAPI]: ar1.StartMatlabPostProc("D:\\ti\\mmwave_studio_02_01_01_00\\mmWaveStudio\\PostProc\\adc_data20231206.bin")
[16:31:06] [RadarAPI]: No of files Captured: 1, Total no of frames for each device : 8
Frame start async event received!
[16:30:56] Frame End async event received!
[16:30:56] [RadarAPI]: Frame Ended
[16:30:58] [RadarAPI]:
[16:30:58] [RadarAPI]:
[16:30:58] Start Record command : Success
[16:30:58]
[16:30:58] Record is completed
[16:30:58]
[16:30:58] Record stop is done successfully
[16:31:06] [RadarAPI]: ar1.StartMatlabPostProc("D:\\ti\\mmwave_studio_02_01_01_00\\mmWaveStudio\\PostProc\\adc_data20231206.bin")
[16:31:06] [RadarAPI]: No of files Captured: 1, Total no of frames for each device : 8