TI mmWave sensor是高集成度的毫米波雷達(dá)傳感器SOC,在開(kāi)發(fā)過(guò)程中,SDK及TI DEMO均使用靈活的UART接口發(fā)送CLI命令進(jìn)行射頻參數(shù)配置及相關(guān)算法參數(shù)的配置。對(duì)于研發(fā)及測(cè)試認(rèn)證過(guò)程中,往往都會(huì)有對(duì)連續(xù)波點(diǎn)頻率模式設(shè)置的要求。本文介紹一種可以把連續(xù)波模式配置增添到應(yīng)用代碼中的實(shí)現(xiàn)方式,同時(shí)支持原有串口的CLI配置,僅需增加APP層代碼,無(wú)需修改SDK驅(qū)動(dòng)層代碼,即可完成FMCW chirp模式或連續(xù)波CW模式的設(shè)置,旨在給用戶(hù)提供一種簡(jiǎn)潔的配置方式,方便用戶(hù)對(duì)毫米波雷達(dá)模塊進(jìn)行RF性能、天線(xiàn)方向圖、頻帶內(nèi)外性能、電源可靠性等測(cè)試。本文的測(cè)試環(huán)境如下:
此方法適用器件型號(hào):I/AWR1443, I/AWR1642, I/AWR1843, I/AWR6843
本文測(cè)試硬件平臺(tái):IWR6843ISK EVM
1. 使用mmWave studio工具的連續(xù)波(點(diǎn)頻)模式配置方法
DCA1000EVM是一款數(shù)據(jù)采集卡,適配于德州儀器(TI)的77GHz&60GHz 毫米波雷達(dá)傳感器EVM高速60PIN接口,采集卡主要功能是使用戶(hù)能夠通過(guò)DCA1000板卡的以太網(wǎng)獲得從雷達(dá)的LVDS接口送出的ADC數(shù)據(jù);于此同時(shí),DCA1000EVM也板載了USB<->SPI接口,方便PC軟件對(duì)雷達(dá)傳感器芯片進(jìn)行配置。
mmWave Studio是一款獨(dú)立的 Windows GUI,它具有配置和控制 TI 毫米波傳感器模塊以及收集 ADC 數(shù)據(jù)以進(jìn)行離線(xiàn)分析的功能。該 ADC 數(shù)據(jù)捕獲旨在評(píng)估和表征射頻性能,以及進(jìn)行信號(hào)處理算法的 PC 開(kāi)發(fā)。下圖是使用DCA1000+mmWave Studio 軟件進(jìn)行毫米波雷達(dá)數(shù)據(jù)采集的框圖,PC上使用mmWave Studio 軟件,通過(guò)USB?àSPI接口對(duì)毫米波雷達(dá)芯片進(jìn)行工作模式配置并采集數(shù)據(jù)??芍С职╟hirping mode、advance frame mode、continuous wave mode在內(nèi)的全部毫米波雷達(dá)RF配置,并且GUI集成的數(shù)據(jù)分析功能可對(duì)采集回來(lái)的數(shù)據(jù)進(jìn)行初步的分析。
圖1. 使用DCA1000+mmWave Studio軟件進(jìn)行數(shù)據(jù)采集框圖
mmWave studio GUI 中連續(xù)波模式的設(shè)置界面如下圖所示,用戶(hù)僅需遵循mmWave studio軟件的配置流程,配置毫米波雷達(dá)芯片于連續(xù)波工作模式即可,于此同時(shí),DCA1000EVM還可以從LVDS接口獲取在連續(xù)波模式下的接收通道獲取的ADC數(shù)據(jù)。
圖2. mmWave studio GUI 中連續(xù)波模式的設(shè)置界面示意圖
小結(jié),使用DCA1000EVM +mmWave Studio軟件組合的要求及優(yōu)勢(shì)如下:
硬件:mmWave radar sensor EVM + DCA1000EVM + PC
軟件:mmWave studio
Radar硬件所需預(yù)留接口:LVDS(ADC數(shù)據(jù)傳輸) + SPI(RF參數(shù)配置) + UART(固件加載)+ SOP(SOC啟動(dòng)模式配置)
優(yōu)勢(shì):RF所有的配置都支持,同時(shí)可以獲取點(diǎn)頻模式下的ADC數(shù)據(jù),可以同步分析RX性能。
2. 使用mmWave Studio CLI tools工具的連續(xù)波(點(diǎn)頻)模式配置方法
mmWave Studio CLI tools是使用命令行界面 (CLI) 控制毫米波傳感器的GUI工具,可以替換mmWave Studio的基本功能,對(duì)比于完整功能的mmWave Studio,mmWave Studio CLI tools是一個(gè)輕量化的工具,它使用與OOB(SDK out-of-box demo) 相同的配置方式與命令,同時(shí),在硬件連接的需求上,省了一個(gè)SPI接口,所以在外場(chǎng)測(cè)試過(guò)程中,能夠簡(jiǎn)化硬件連接及操作流程。
圖3. 使用DCA1000+mmWave Studio CLI tools組合的硬件連接框圖
mmWave studio CLI tools的使用較為簡(jiǎn)單,直接使用TI已提供的軟件包即可實(shí)現(xiàn)高占空比的FMCW波形配置,也可實(shí)現(xiàn)點(diǎn)頻模式的配置,下文將要介紹了操作步驟。
連續(xù)波點(diǎn)頻發(fā)射模式
燒寫(xiě)bin文件bin到板卡
修改串口號(hào)". studio_cliguimmw_cli_toolmmwaveconfig.txt"
COM_PORT_NUM=9 修改為Application/User口(命令口),需注意,這個(gè)串口跑的是921600bps
修改cfg文件為CW模式。修改".studio_cliguimmw_cli_toolmmwaveconfig.txt"
CONFIG_JSON_CFG_PATH=....profile_continuous_mode_xwr68xx.cfg #連續(xù)波模式
CONFIG_JSON_CFG_PATH=....profile_chirp_mode_xwr68xx.cfg #FMCW chirp模式
雙擊運(yùn)行".studio_cliguimmw_cli_toolmmwave_studio_cli.exe"即可按點(diǎn)頻連續(xù)波發(fā)射。
設(shè)置為其他頻點(diǎn)。修改".studio_cliprofile_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ù)波時(shí)候的頻點(diǎn)。
FMCW chirp掃頻發(fā)射模式
燒寫(xiě)bin文件bin到板卡
修改串口號(hào)".studio_cliguimmw_cli_toolmmwaveconfig.txt"
COM_PORT_NUM=9 修改為Application/User口(命令口),需注意,這個(gè)串口跑的是921600bps
修改cfg文件為chirp模式。修改".studio_cliguimmw_cli_toolmmwaveconfig.txt"
CONFIG_JSON_CFG_PATH=....profile_continuous_mode_xwr68xx.cfg #連續(xù)波模式
CONFIG_JSON_CFG_PATH=....profile_chirp_mode_xwr68xx.cfg # FMCW chirp模式
雙擊運(yùn)行".studio_cliguimmw_cli_toolmmwave_studio_cli.exe" 即可按設(shè)定的FMCW chirp模式發(fā)射。
設(shè)置為其他頻段,請(qǐng)修改".studio_cliprofile_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對(duì)應(yīng)7%占空比。70ms對(duì)應(yīng)36.66%占空比。
小結(jié),使用DCA1000+mmWave Studio CLI tools軟件組合的軟硬件要求及優(yōu)勢(shì)如下:
硬件:mmWave radar sensor EVM + DCA1000 + PC
軟件:mmWave studio CLI tools
Radar硬件所需預(yù)留接口:LVDS(ADC數(shù)據(jù)傳輸) + UART(RF參數(shù)配置及固件加載)+ SOP(SOC啟動(dòng)模式配置,僅需配置一次)
優(yōu)勢(shì):支持FMCW模式及連續(xù)波點(diǎn)頻模式,獲取ADC數(shù)據(jù)則需DCA1000EVM數(shù)據(jù)采集卡的配合,若只需評(píng)估TX性能,可以只使用SOC板卡,不需要DCA1000EVM。
3. 使用mmWave SDK out-of-box demo的連續(xù)波(點(diǎn)頻)模式配置方法
3.1. 運(yùn)行mmWave SDK out-of-box demo的對(duì)外接口說(shuō)明
在現(xiàn)有的TI mmWave SDK及TOOLBOX相關(guān)的示例代碼中,均使用兩個(gè)串口進(jìn)行參數(shù)的配置及數(shù)據(jù)的獲取,EVM板載的TM4C MCU是一個(gè)板載XDS110仿真器,仿真器自帶兩路串口,可以直接完成SDK DEMO中的參數(shù)配置及數(shù)據(jù)輸出。在客制化產(chǎn)品中,可以使用外部的2個(gè)USB<->UART橋接線(xiàn)纜進(jìn)行調(diào)試,兩個(gè)串口的默認(rèn)使用情況如下:
圖4. 運(yùn)行mmWave SDK out-of-box demo的對(duì)外接口框圖
配置命令口: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相關(guān)的示例代碼中,增加配置連續(xù)波點(diǎn)頻的函數(shù),完成對(duì)連續(xù)波模式的配置及單次自校準(zhǔn),通過(guò)原有的CLI串口調(diào)試接口,將連續(xù)波模式的CFG參數(shù)以CLI的格式配置進(jìn)去,即可完成連續(xù)波點(diǎn)頻模式的配置,該配置實(shí)現(xiàn)代碼較為簡(jiǎn)單,可作為應(yīng)用程序的一部分與應(yīng)用程序整合,實(shí)現(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 commandn");
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,%Dn",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=%dn", retVal);
return -1;
}
System_printf("Debug: Finished rlSetContModeConfign");
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_openn");
/* 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_confign");
/* 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=%dn", retVal);
return -1;
}
CLI_write("Debug: Finished rlEnableContModen");
/* 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. 運(yùn)行測(cè)試代碼
將上述代碼集成進(jìn)測(cè)試程序后,編譯成功后,將此BIN文件燒寫(xiě)到EVM板卡中,通過(guò)CLI串口加載配置,即可實(shí)現(xiàn)連續(xù)波點(diǎn)頻模式的配置,串口打印信息如下,完成連續(xù)波點(diǎn)頻模式的配置。
******************************************
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
小結(jié),使用mmWave SDK out-of-box demo的連續(xù)波(點(diǎn)頻)模式配置的軟件組合的軟硬件要求及優(yōu)勢(shì)如下:
硬件:mmWave radar sensor EVM + PC
軟件:mmWave SDK out-of-box demo + 代碼修改
Radar硬件所需預(yù)留接口:UART(RF參數(shù)配置及固件加載)+ SOP(SOC啟動(dòng)模式配置,僅需配置一次)
優(yōu)勢(shì):與應(yīng)用代碼整合,可以靈活的通過(guò)配置函數(shù)切換FMCW模式及點(diǎn)頻模式,獲取ADC數(shù)據(jù)則用戶(hù)自己完成ADCBUF取數(shù)的驅(qū)動(dòng)代碼修改,若只用于評(píng)估TX性能,那此方法則不需要更多的修改,即可在應(yīng)用代碼中預(yù)留此接口,方便研發(fā)測(cè)試及產(chǎn)線(xiàn)測(cè)試。
4. 總結(jié)
本文介紹了3種連續(xù)波點(diǎn)頻模式設(shè)置的軟件工具及方法,用戶(hù)可以根據(jù)實(shí)際的使用需求,在早期研發(fā)階段,用靈活的mmWave studio軟件配置RF參數(shù),測(cè)試RF性能,在后期量產(chǎn)階段,用代碼固化的方式增加連續(xù)波模式的配置選項(xiàng),方便測(cè)試?yán)走_(dá)的點(diǎn)頻性能及天線(xiàn)方向圖等。需注意的是,在配置連續(xù)波模式后,SOC的溫度較高,需要做好散熱措施保證芯片工作溫度在數(shù)據(jù)手冊(cè)允許范圍內(nèi)。
-
傳感器
+關(guān)注
關(guān)注
2567文章
53024瀏覽量
767758 -
soc
+關(guān)注
關(guān)注
38文章
4392瀏覽量
222854 -
uart
+關(guān)注
關(guān)注
22文章
1276瀏覽量
104001 -
毫米波雷達(dá)
+關(guān)注
關(guān)注
107文章
1103瀏覽量
65396
發(fā)布評(píng)論請(qǐng)先 登錄
使用毫米波雷達(dá)傳感器框圖的TIDEP-01000人員計(jì)數(shù)和跟蹤參考設(shè)計(jì)
SoC驗(yàn)證平臺(tái)的FPGA綜合怎么實(shí)現(xiàn)?
3種連續(xù)波點(diǎn)頻模式設(shè)置的軟件工具及方法
一種可以把連續(xù)波模式配置增添到應(yīng)用代碼中的實(shí)現(xiàn)方式

適用于TI mmWave sensor的CCS在線(xiàn)調(diào)試腳本教程
適用于TI mmWave sensor單芯片SOC平臺(tái)的連續(xù)波點(diǎn)頻模式設(shè)置方法

適用于TI mmWave sensor的CCS在線(xiàn)調(diào)試腳本上手指南

適用于TI mmWave sensor平臺(tái)的配置隨啟動(dòng)加載的方式

適用于TI mmWave sensor的CCS在線(xiàn)調(diào)試腳本上手指南
什么是步進(jìn)頻連續(xù)波信 步進(jìn)頻連續(xù)波信有何優(yōu)勢(shì)

適用于AR眼鏡的TI DLP? Pico?技術(shù)

適用于TI光傳感器的獨(dú)立評(píng)估平臺(tái)

TI mmWave Radar sensor硬件外設(shè)設(shè)計(jì)參考

適用于TI Sitara?平臺(tái)的WL1837MODCOM8I WLAN MIMO和Bluetooth?模塊評(píng)估板

評(píng)論