TI mmWave sensor是高集成度的毫米波雷達傳感器SOC,在開發(fā)過程中,SDK及TI DEMO均使用靈活的UART接口發(fā)送CLI命令進行射頻參數(shù)配置及相關算法參數(shù)的配置。對于研發(fā)及測試認證過程中,往往都會有對連續(xù)波點頻率模式設置的要求。本文介紹一種可以把連續(xù)波模式配置增添到應用代碼中的實現(xiàn)方式,同時支持原有串口的CLI配置,僅需增加APP層代碼,無需修改SDK驅(qū)動層代碼,即可完成FMCW chirp模式或連續(xù)波CW模式的設置,旨在給用戶提供一種簡潔的配置方式,方便用戶對毫米波雷達模塊進行RF性能、天線方向圖、頻帶內(nèi)外性能、電源可靠性等測試。本文的測試環(huán)境如下:
- 此方法適用器件型號:I/AWR1443, I/AWR1642, I/AWR1843, I/AWR6843
- 本文測試硬件平臺:IWR6843ISK EVM
1. 使用mmWave studio工具的連續(xù)波(點頻)模式配置方法
DCA1000EVM是一款數(shù)據(jù)采集卡,適配于德州儀器(TI)的77GHz&60GHz 毫米波雷達傳感器EVM高速60PIN接口,采集卡主要功能是使用戶能夠通過DCA1000板卡的以太網(wǎng)獲得從雷達的LVDS接口送出的ADC數(shù)據(jù);于此同時,DCA1000EVM也板載了USB<->SPI接口,方便PC軟件對雷達傳感器芯片進行配置。
mmWave Studio是一款獨立的 Windows GUI,它具有配置和控制 TI 毫米波傳感器模塊以及收集 ADC 數(shù)據(jù)以進行離線分析的功能。該 ADC 數(shù)據(jù)捕獲旨在評估和表征射頻性能,以及進行信號處理算法的 PC 開發(fā)。下圖是使用DCA1000+mmWave Studio 軟件進行毫米波雷達數(shù)據(jù)采集的框圖,PC上使用mmWave Studio 軟件,通過USB?àSPI接口對毫米波雷達芯片進行工作模式配置并采集數(shù)據(jù)。可支持包括chirping mode、advance frame mode、continuous wave mode在內(nèi)的全部毫米波雷達RF配置,并且GUI集成的數(shù)據(jù)分析功能可對采集回來的數(shù)據(jù)進行初步的分析。
圖1. 使用DCA1000+mmWave Studio軟件進行數(shù)據(jù)采集框圖
mmWave studio GUI 中連續(xù)波模式的設置界面如下圖所示,用戶僅需遵循mmWave studio軟件的配置流程,配置毫米波雷達芯片于連續(xù)波工作模式即可,于此同時,DCA1000EVM還可以從LVDS接口獲取在連續(xù)波模式下的接收通道獲取的ADC數(shù)據(jù)。
圖2. mmWave studio GUI 中連續(xù)波模式的設置界面示意圖
小結,使用DCA1000EVM +mmWave Studio軟件組合的要求及優(yōu)勢如下:
- 硬件:mmWave radar sensor EVM + DCA1000EVM + PC
- 軟件:mmWave studio
- Radar硬件所需預留接口:LVDS(ADC數(shù)據(jù)傳輸) + SPI(RF參數(shù)配置) + UART(固件加載)+ SOP(SOC啟動模式配置)
- 優(yōu)勢:RF所有的配置都支持,同時可以獲取點頻模式下的ADC數(shù)據(jù),可以同步分析RX性能。
2. 使用mmWave Studio CLI tools工具的連續(xù)波(點頻)模式配置方法
mmWave Studio CLI tools是使用命令行界面 (CLI) 控制毫米波傳感器的GUI工具,可以替換mmWave Studio的基本功能,對比于完整功能的mmWave Studio,mmWave Studio CLI tools是一個輕量化的工具,它使用與OOB(SDK out-of-box demo) 相同的配置方式與命令,同時,在硬件連接的需求上,省了一個SPI接口,所以在外場測試過程中,能夠簡化硬件連接及操作流程。
圖3. 使用DCA1000+mmWave Studio CLI tools組合的硬件連接框圖
mmWave studio CLI tools的使用較為簡單,直接使用TI已提供的軟件包即可實現(xiàn)高占空比的FMCW波形配置,也可實現(xiàn)點頻模式的配置,下文將要介紹了操作步驟。
-
連續(xù)波點頻發(fā)射模式
- 燒寫bin文件bin到板卡
-
修改串口號". \studio_cli\gui\mmw_cli_tool\mmwaveconfig.txt"
- COM_PORT_NUM=9 修改為Application/User口(命令口),需注意,這個串口跑的是921600bps
-
修改cfg文件為CW模式。修改".\studio_cli\gui\mmw_cli_tool\mmwaveconfig.txt"
- CONFIG_JSON_CFG_PATH=..\..\profile_continuous_mode_xwr68xx.cfg #連續(xù)波模式
- CONFIG_JSON_CFG_PATH=..\..\profile_chirp_mode_xwr68xx.cfg #FMCW chirp模式
- 雙擊運行".\studio_cli\gui\mmw_cli_tool\mmwave_studio_cli.exe"即可按點頻連續(xù)波發(fā)射。
-
設置為其他頻點。修改".\studio_cli\profile_continuous_mode_xwr68xx.cfg"
- contModeCfg 61 0 0 6000 0 0 30 0 1024
- contModeCfg 60 0 0 6000 0 0 30 0 1024
- 61/60即是發(fā)射連續(xù)波時候的頻點。
-
FMCW chirp掃頻發(fā)射模式
- 燒寫bin文件bin到板卡
-
修改串口號".\studio_cli\gui\mmw_cli_tool\mmwaveconfig.txt"
- COM_PORT_NUM=9 修改為Application/User口(命令口),需注意,這個串口跑的是921600bps
-
修改cfg文件為chirp模式。修改".\studio_cli\gui\mmw_cli_tool\mmwaveconfig.txt"
- CONFIG_JSON_CFG_PATH=..\..\profile_continuous_mode_xwr68xx.cfg #連續(xù)波模式
- CONFIG_JSON_CFG_PATH=..\..\profile_chirp_mode_xwr68xx.cfg # FMCW chirp模式
- 雙擊運行".\studio_cli\gui\mmw_cli_tool\mmwave_studio_cli.exe" 即可按設定的FMCW chirp模式發(fā)射。
-
設置為其他頻段,請修改".\studio_cli\profile_chirp_mode_xwr68xx.cfg"。
- profileCfg 0 60.75 30.00 25.00 59.10 0 0 54.71 1 96 2950.00 2 1 36
- chirpCfg 0 0 0 0 0 0 0 1
- chirpCfg 1 1 0 0 0 0 0 2
- chirpCfg 2 2 0 0 0 0 0 4
- frameCfg 0 2 96 0 26 1 0
- 其中framecfg中的26可以修改,比如26ms對應7%占空比。70ms對應36.66%占空比。
小結,使用DCA1000+mmWave Studio CLI tools軟件組合的軟硬件要求及優(yōu)勢如下:
- 硬件:mmWave radar sensor EVM + DCA1000 + PC
- 軟件:mmWave studio CLI tools
- Radar硬件所需預留接口:LVDS(ADC數(shù)據(jù)傳輸) + UART(RF參數(shù)配置及固件加載)+ SOP(SOC啟動模式配置,僅需配置一次)
- 優(yōu)勢:支持FMCW模式及連續(xù)波點頻模式,獲取ADC數(shù)據(jù)則需DCA1000EVM數(shù)據(jù)采集卡的配合,若只需評估TX性能,可以只使用SOC板卡,不需要DCA1000EVM。
3. 使用mmWave SDK out-of-box demo的連續(xù)波(點頻)模式配置方法
3.1. 運行mmWave SDK out-of-box demo的對外接口說明
在現(xiàn)有的TI mmWave SDK及TOOLBOX相關的示例代碼中,均使用兩個串口進行參數(shù)的配置及數(shù)據(jù)的獲取,EVM板載的TM4C MCU是一個板載XDS110仿真器,仿真器自帶兩路串口,可以直接完成SDK DEMO中的參數(shù)配置及數(shù)據(jù)輸出。在客制化產(chǎn)品中,可以使用外部的2個USB<->UART橋接線纜進行調(diào)試,兩個串口的默認使用情況如下:
圖4. 運行mmWave SDK out-of-box demo的對外接口框圖
配置命令口:Application/User Uart: Configuration port 115200bps: UART_RX/TX port <-> USB-UART cable <-> PC
數(shù)據(jù)口:Auxilliary Data Port: Data port 921600bps: MSS_LOGGER-> USB-UART cable -> PC
3.2. 在mmWave SDK out-of-box demo中增加連續(xù)波CW模式配置代碼
在現(xiàn)有的TI mmWave SDK及TOOLBOX相關的示例代碼中,增加配置連續(xù)波點頻的函數(shù),完成對連續(xù)波模式的配置及單次自校準,通過原有的CLI串口調(diào)試接口,將連續(xù)波模式的CFG參數(shù)以CLI的格式配置進去,即可完成連續(xù)波點頻模式的配置,該配置實現(xiàn)代碼較為簡單,可作為應用程序的一部分與應用程序整合,實現(xiàn)代碼如下:
- 在c 增加頭文件
#include
- 在c 增加一條新的CLI指令
cliCfg.tableEntry[cnt].cmd = "ContMode";
cliCfg.tableEntry[cnt].helpString = "";
cliCfg.tableEntry[cnt].cmdHandlerFxn = MmwDemo_CLIContMode;
cnt++;
- 在c 增加以下代碼
#define ROUND_TO_INT32(X) ((int32_t) (X))
//#define CONV_FREQ_GHZ_TO_CODEWORD(X) (uint32_t) ((float)X * (1e9) / 53.644)//77G device
#define CONV_FREQ_GHZ_TO_CODEWORD(X) (uint32_t) ((float)X * (1e9) / 40.233)//60G device
static int32_t MmwDemo_CLIContMode (int32_t argc, char* argv[])
{
int32_t retVal;
float nFreqCent;
rlContModeCfg_t contModeCfg;
rlContModeEn_t contModeEnable;
if (argc != 2)
{
CLI_write ("Error: Invalid usage of basicCfg command\n");
return -1;
}
nFreqCent = atof(argv[1]);
contModeCfg.startFreqConst = (CONV_FREQ_GHZ_TO_CODEWORD(nFreqCent));
contModeCfg.txOutPowerBackoffCode = 0;
contModeCfg.txPhaseShifter = 0;
contModeCfg.digOutSampleRate = 6000;
contModeCfg.hpfCornerFreq1 = 0;
contModeCfg.hpfCornerFreq2 = 0;
contModeCfg.rxGain = 30;
// b0 FORCE_VCO_SEL
// 0 - Use internal VCO selection
// 1 - Forced external VCO selection
// b1 VCO_SEL
// 0 - VCO1 (77G:76 - 78 GHz or 60G:57 - 60.75 GHz)
// 1 - VCO2 (77G:77 - 81 GHz or 60G:60 - 64 GHz)
// //77G device
// if (nFreqCent > 78)
// contModeCfg.vcoSelect = 0x2;
// else
// contModeCfg.vcoSelect = 0x0;
//60G device
contModeCfg.vcoSelect = 0x2;
CLI_write ("CONT_FREQ_CONST=%X,%D\n",contModeCfg.startFreqConst,contModeCfg.startFreqConst);
contModeEnable.contModeEn = 1;
retVal = rlSetContModeConfig(RL_DEVICE_MAP_INTERNAL_BSS, (rlContModeCfg_t*)&contModeCfg);
/* Check for mmWaveLink API call status */
if(retVal != 0)
{
System_printf("Error: rlSetContModeConfig retVal=%d\n", retVal);
return -1;
}
System_printf("Debug: Finished rlSetContModeConfig\n");
int32_t errCode;
MMWave_CalibrationCfg calibrationCfg;
MMWave_ErrorLevel errorLevel;
int16_t mmWaveErrorCode;
int16_t subsysErrorCode;
/* Get the open configuration from the CLI mmWave Extension */
CLI_getMMWaveExtensionOpenConfig (&gMmwMCB.cfg.openCfg);
/* NO: Setup the calibration frequency: */
gMmwMCB.cfg.openCfg.freqLimitLow = 600U;
gMmwMCB.cfg.openCfg.freqLimitHigh = 640U;
// gMmwMssMCB.cfg.openCfg.freqLimitLow = 760U;
// gMmwMssMCB.cfg.openCfg.freqLimitHigh = 810U;
gMmwMCB.cfg.ctrlCfg.dfeDataOutputMode = MMWave_DFEDataOutputMode_CONTINUOUS;
gMmwMCB.cfg.ctrlCfg.u.continuousModeCfg.cfg.startFreqConst = contModeCfg.startFreqConst;
gMmwMCB.cfg.ctrlCfg.u.continuousModeCfg.cfg.txOutPowerBackoffCode = contModeCfg.txOutPowerBackoffCode;
gMmwMCB.cfg.ctrlCfg.u.continuousModeCfg.cfg.txPhaseShifter = contModeCfg.txPhaseShifter;
gMmwMCB.cfg.ctrlCfg.u.continuousModeCfg.cfg.digOutSampleRate = contModeCfg.digOutSampleRate;
gMmwMCB.cfg.ctrlCfg.u.continuousModeCfg.cfg.hpfCornerFreq1 = contModeCfg.hpfCornerFreq1;
gMmwMCB.cfg.ctrlCfg.u.continuousModeCfg.cfg.hpfCornerFreq2 = contModeCfg.hpfCornerFreq2;
gMmwMCB.cfg.ctrlCfg.u.continuousModeCfg.cfg.rxGain = contModeCfg.rxGain;
gMmwMCB.cfg.ctrlCfg.u.continuousModeCfg.cfg.vcoSelect = contModeCfg.vcoSelect;
/* Disable the frame start async event so that small chirp times
are supported. If this event is enabled it will break real-time
for small chirp times and cause 1D processing to crash
due to lack of MIPS*/
gMmwMCB.cfg.openCfg.disableFrameStartAsyncEvent = true;
/* Enable frame stop async event so that we know when BSS has stopped*/
gMmwMCB.cfg.openCfg.disableFrameStopAsyncEvent = false;
/* No custom calibration: */
gMmwMCB.cfg.openCfg.useCustomCalibration = false;
gMmwMCB.cfg.openCfg.customCalibrationEnableMask = 0x0;
/* calibration monitoring base time unit
* setting it to one frame duration as the demo doesnt support any
* monitoring related functionality
*/
gMmwMCB.cfg.openCfg.calibMonTimeUnit = 1;
/* Open the mmWave module: */
if (MMWave_open (gMmwMCB.ctrlHandle, &gMmwMCB.cfg.openCfg, NULL, &errCode) < 0)
{
/* Error: decode and Report the error */
MMWave_decodeError (errCode, &errorLevel, &mmWaveErrorCode, &subsysErrorCode);
CLI_write ("Error: mmWave Open failed [Error code: %d Subsystem: %d]\n",
mmWaveErrorCode, subsysErrorCode);
return -1;
}
CLI_write ("MMWave_open\n");
/* Configure the mmWave module: */
if (MMWave_config (gMmwMCB.ctrlHandle, &gMmwMCB.cfg.ctrlCfg, &errCode) < 0)
{
CLI_write ("Error: MMWDemoMSS mmWave Configuration failed [Error code %d]\n", errCode);
MMWave_decodeError (errCode, &errorLevel, &mmWaveErrorCode, &subsysErrorCode);
CLI_write ("Error: MMWDemoMSS mmWave Configuration failed [mmWave Error: %d Subsys: %d]\n", mmWaveErrorCode, subsysErrorCode);
return -1;
}
CLI_write ("MMWave_config\n");
/* Initialize the calibration configuration: */
memset ((void*)&calibrationCfg, 0, sizeof(MMWave_CalibrationCfg));
// /* Populate the calibration configuration: */
// calibrationCfg.dfeDataOutputMode =
// gMmwMssMCB.cfg.ctrlCfg.dfeDataOutputMode;
// calibrationCfg.u.chirpCalibrationCfg.enableCalibration = true;
// calibrationCfg.u.chirpCalibrationCfg.enablePeriodicity = true;
// calibrationCfg.u.chirpCalibrationCfg.periodicTimeInFrames = 10U;
calibrationCfg.dfeDataOutputMode = gMmwMCB.cfg.ctrlCfg.dfeDataOutputMode;
calibrationCfg.u.contCalibrationCfg.enableOneShotCalibration = true;
/* Start the mmWave module: The configuration has been applied successfully. */
if (MMWave_start (gMmwMCB.ctrlHandle, &calibrationCfg, &errCode) < 0)
{
/* Error: Unable to start the mmWave control */
MMWave_decodeError (errCode, &errorLevel, &mmWaveErrorCode, &subsysErrorCode);
CLI_write ("Error: MMWDemoMSS mmWave Start failed [Error code %x]\n", errCode);
CLI_write ("Error: MMWDemoMSS mmWave Stop failed [mmWave Error: %d Subsys: %d]\n", mmWaveErrorCode, subsysErrorCode);
return -1;
}
CLI_write ("Debug: MMWDemoMSS mmWave Start succeeded \n");
retVal = rlEnableContMode(RL_DEVICE_MAP_INTERNAL_BSS, (rlContModeEn_t*)&contModeEnable);
/* Check for mmWaveLink API call status */
if(retVal != 0)
{
/* Error: Link reported an issue. */
CLI_write("Error: rlEnableContMode retVal=%d\n", retVal);
return -1;
}
CLI_write("Debug: Finished rlEnableContMode\n");
/* Package the command with given data and send it to device */
return 0;
}
- cfg的配置信息如下:
flushCfg
dfeDataOutputMode 2
channelCfg 2 1 0
adcCfg 2 2
adcbufCfg -1 0 0 1 1
lowPower 0 0
ContMode 60
ContMode 60
3.3. 運行測試代碼
將上述代碼集成進測試程序后,編譯成功后,將此BIN文件燒寫到EVM板卡中,通過CLI串口加載配置,即可實現(xiàn)連續(xù)波點頻模式的配置,串口打印信息如下,完成連續(xù)波點頻模式的配置。
******************************************
xWR64xx MMW Demo 03.05.00.04
******************************************
mmwDemo:/>flushCfg
Done
mmwDemo:/>dfeDataOutputMode 2
Done
mmwDemo:/>channelCfg 2 1 0
Done
mmwDemo:/>adcCfg 2 2
Done
mmwDemo:/>adcbufCfg -1 0 0 1 1
Done
mmwDemo:/>lowPower 0 0
Done
mmwDemo:/>ContMode 60
CONT_FREQ_CONST=58E3A1CD,
Debug: Init Calibration Status = 0x1ffe
MMWave_open
MMWave_config
Debug: MMWDemoMSS mmWave Start succeeded
Debug: Finished rlEnableContMode
Done
小結,使用mmWave SDK out-of-box demo的連續(xù)波(點頻)模式配置的軟件組合的軟硬件要求及優(yōu)勢如下:
- 硬件:mmWave radar sensor EVM + PC
- 軟件:mmWave SDK out-of-box demo + 代碼修改
- Radar硬件所需預留接口:UART(RF參數(shù)配置及固件加載)+ SOP(SOC啟動模式配置,僅需配置一次)
- 優(yōu)勢:與應用代碼整合,可以靈活的通過配置函數(shù)切換FMCW模式及點頻模式,獲取ADC數(shù)據(jù)則用戶自己完成ADCBUF取數(shù)的驅(qū)動代碼修改,若只用于評估TX性能,那此方法則不需要更多的修改,即可在應用代碼中預留此接口,方便研發(fā)測試及產(chǎn)線測試。
4. 總結
本文介紹了3種連續(xù)波點頻模式設置的軟件工具及方法,用戶可以根據(jù)實際的使用需求,在早期研發(fā)階段,用靈活的mmWave studio軟件配置RF參數(shù),測試RF性能,在后期量產(chǎn)階段,用代碼固化的方式增加連續(xù)波模式的配置選項,方便測試雷達的點頻性能及天線方向圖等。需注意的是,在配置連續(xù)波模式后,SOC的溫度較高,需要做好散熱措施保證芯片工作溫度在數(shù)據(jù)手冊允許范圍內(nèi)。另外,本文介紹的方式全部都使用mmWave link API實現(xiàn),如客戶需要修改其中的部分配置,請參考mmWave dfp內(nèi)的API文檔。
5. 參考資料
- IWR6843、IWR6443 單芯片 60GHz 至 64GHz 毫米波傳感器 數(shù)據(jù)表 (Rev. D)
- IWR14xx/16xx/18xx/68xx/64xx Industrial Radar Family Technical Reference Manual: https://www.ti.com.cn/cn/lit/pdf/swru522
- DCA1000EVM Data Capture Card User's Guide (Rev. A): https://www.ti.com.cn/cn/lit/pdf/spruij4
- mmWave Radar Interface Control document:
C:\ti\mmwave_dfp_01_02_06_03\docs\mmWave-Radar-Interface-Control.pdf
https://www.ti.com.cn/tool/cn/MMWAVE-DFP
- mmWave SDK: mmWave Software Development Kit
http://www.ti.com/tool/mmwave-sdk
- mmWave SDK User’s Guide: C:\ti\mmwave_sdk_03_05_00_04\docs\mmwave_sdk_user_guide.pdf
- mmWave SDK Out of Box Demo - XWR68XX: C:/ti/mmwave_sdk_03_05_00_04/packages/ti/demo/xwr68xx/mmw/docs/doxygen/html/index.html
-
ti
+關注
關注
112文章
8067瀏覽量
212460 -
連續(xù)波
+關注
關注
0文章
8瀏覽量
10290 -
毫米波雷達
+關注
關注
107文章
1044瀏覽量
64383
發(fā)布評論請先 登錄
相關推薦
評論