當(dāng)前位置: 首頁(yè) > 工業(yè)電氣產(chǎn)品 > 端子與連接器 > 線路板連接器 > FFC連接器
發(fā)布日期:2022-04-28 點(diǎn)擊率:149
Other Parts Discussed in Post: AWR6843, AWR1843, AWR1642, AWR1443, IWR6843ISK, IWR6843
作者:He, Wesley
TI mmWave sensor是高集成度的毫米波雷達(dá)傳感器SOC,在開(kāi)發(fā)過(guò)程中,SDK及TI DEMO均使用靈活的UART接口發(fā)送CLI命令進(jìn)行射頻參數(shù)配置及相關(guān)算法參數(shù)的配置。對(duì)于量產(chǎn)及或者有固化參數(shù)的產(chǎn)品而言,將參數(shù)固化在代碼中會(huì)是一項(xiàng)明確的需求。本文介紹一種可以快速將CFG文件參數(shù)固化到應(yīng)用代碼中的實(shí)現(xiàn)方式,同時(shí)支持原有串口的CLI配置,無(wú)需修改SDK驅(qū)動(dòng)層代碼,可方便快捷的完成參數(shù)的固化。
本文的測(cè)試環(huán)境如下:
此方法適用器件型號(hào):I/AWR1443, I/AWR1642, I/AWR1843, I/AWR6843
本文測(cè)試軟件版本:mmWave SDK 3.5.0.4
本文測(cè)試硬件平臺(tái):IWR6843ISK EVM
在現(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
配置命令口:Application/User Uart: Configuration port 115200bps: UART_RX/TX port
數(shù)據(jù)口:Auxilliary Data Port: Data port 921600bps: MSS_LOGGER-> USB-UART cable -> PC
mmWave sensor的啟動(dòng)配置流程
以SDK內(nèi)的Out of Box demo為例,將BIN文件(比如:.mmwave_sdk_
對(duì)于Toolbox內(nèi)的demo,則需要同時(shí)參考SDK user’s Guide 及toolbox內(nèi)的demo guide,其配置文件有SDK通用的部分,也有屬于此demo獨(dú)有的配置命令,包含SDK參數(shù)、目標(biāo)檢測(cè)層的參數(shù)、追蹤器層的參數(shù),示例如下(.mmwave_industrial_toolbox_4_9_0labspeople_counting68xx_3D_people_countingchirp_configsAOP_6m_default.cfg):
% SDK Parameters
% See the SDK user's guide for more information
% "C: immwave_sdk_[VER]docsmmwave_sdk_user_guide.pdf"
sensorStop
flushCfg
dfeDataOutputMode 1
channelCfg 15 7 0
adcCfg 2 1
adcbufCfg -1 0 1 1 1
lowPower 0 0
% Detection Layer Parameters
% See the Detection Layer Tuning Guide for more information
% "C: immwave_industrial_toolbox_[VER]labspeople_countingdocs3D_people_counting_detection_layer_tuning_guide.pdf"
profileCfg 0 60.75 30.00 25.00 59.10 394758 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 55.00 1 0
dynamicRACfarCfg -1 4 4 2 2 8 12 4 8 5.00 8.00 0.40 1 1
staticRACfarCfg -1 6 2 2 2 8 8 6 4 8.00 15.00 0.30 0 0
dynamicRangeAngleCfg -1 0.75 0.0010 1 0
dynamic2DAngleCfg -1 1.5 0.0300 1 0 1 0.30 0.85 8.00
staticRangeAngleCfg -1 0 8 8
antGeometry0 -1 -1 0 0 -3 -3 -2 -2 -1 -1 0 0
antGeometry1 -1 0 -1 0 -3 -2 -3 -2 -3 -2 -3 -2
antPhaseRot 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1
fovCfg -1 70.0 20.0
compRangeBiasAndRxChanPhase 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
% Tracker Layer Parameters
% See the Tracking Layer Tuning Guide for more information
% "C: immwave_industrial_toolbox_[VER]labspeople_countingdocs3D_people_counting_tracker_layer_tuning_guide.pdf"
staticBoundaryBox -3 3 0.5 7.5 0 3
boundaryBox -4 4 0 8 0 3
sensorPosition 2 0 15
gatingParam 3 2 2 2 4
stateParam 3 3 12 500 5 6000
allocationParam 20 100 0.1 20 0.5 20
maxAcceleration 0.1 0.1 0.1
trackingCfg 1 2 800 30 46 96 55
presenceBoundaryBox -3 3 0.5 7.5 0 3
sensorStart
固化配置參數(shù)有幾種操作方式,如SDK文檔描述(file:///C:/ti/mmwave_sdk_03_05_00_04/packages/ti/demo/xwr68xx/mmw/docs/doxygen/html/index.html#bypassCLI),用戶可以將CFG文件中每一條都使用對(duì)應(yīng)的函數(shù)調(diào)用替換。這種方式比較底層,代碼的改動(dòng)量較大,但是可以節(jié)省一部分代碼空間。實(shí)現(xiàn)方法可參考Toolbox中提供的一個(gè)hard-coded chirp configurations的參考示例代碼,位于:.mmwave_industrial_toolbox_4_9_0labsout_of_box_demo68xx_mmwave_sdk_hcc
本文所介紹的CLI參數(shù)固化方式將保留原有的CLI串口調(diào)試的接口,同時(shí)將現(xiàn)有的CFG參數(shù)以CLI的格式配置進(jìn)去,可視化程度高,實(shí)現(xiàn)更為簡(jiǎn)單,實(shí)現(xiàn)方式如下。
在c 增加頭文件
#include
在c中增加外部結(jié)構(gòu)體的定義。
extern CLI_MCB gCLI;
在c中,增加如下外部函數(shù)定義。
extern void MmwDemo_Bypass_CLI (void);
在c的"void MmwDemo_initTask(UArg arg0, UArg arg1)"函數(shù)中,在CLI_OPEN之后,調(diào)用” MmwDemo_Bypass_CLI”函數(shù)。
MmwDemo_Bypass_CLI();
在C中增加如下配置命令及代碼。
#define CLI_BYPASS 1
#define MAX_RADAR_CMD 30
uint8_t* radarCmdString[MAX_RADAR_CMD] =
{
{"sensorStop "},
{"flushCfg "},
{"dfeDataOutputMode 1 "},
{"channelCfg 15 5 0 "},
{"adcCfg 2 1 "},
{"adcbufCfg -1 0 1 1 1 "},
{"lowPower 0 0 "},
{"profileCfg 0 60 7 3 24 0 0 166 1 256 12500 0 0 158 "},
{"chirpCfg 0 0 0 0 0 0 0 1 "},
{"chirpCfg 1 1 0 0 0 0 0 4 "},
{"frameCfg 0 1 32 0 100 1 0 "},
{"guiMonitor -1 1 1 1 0 0 1 "},
{"cfarCfg -1 0 2 8 4 3 0 15.0 0 "},
{"cfarCfg -1 1 0 4 2 3 1 15.0 0 "},
{"multiObjBeamForming -1 1 0.5 "},
{"calibDcRangeSig -1 0 -5 8 256 "},
{"clutterRemoval -1 0 "},
{"compRangeBiasAndRxChanPhase 0.0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 "},
{"measureRangeBiasAndRxChanPhase 0 1. 0.2 "},
{"aoaFovCfg -1 -90 90 -90 90 "},
{"cfarFovCfg -1 0 0.25 9.0 "},
{"cfarFovCfg -1 1 -20.16 20.16 "},
{"extendedMaxVelocity -1 0 "},
{"CQRxSatMonitor 0 3 4 63 0 "},
{"CQSigImgMonitor 0 127 4 "},
{"analogMonitor 0 0 "},
{"lvdsStreamCfg -1 0 0 0 "},
{"bpmCfg -1 0 0 0 "},
{"calibData 0 0 0 "},
{"sensorStart "}
};
static int32_t CLI_ByPassApi(CLI_Cfg* ptrCLICfg)
{
//uint8_t cmdString[128];
char* tokenizedArgs[CLI_MAX_ARGS];
char* ptrCLICommand;
char delimitter[] = " ";
uint32_t argIndex;
CLI_CmdTableEntry* ptrCLICommandEntry;
int32_t cliStatus;
uint32_t index, idx;
uint16_t numCLICommands = 0U;
if (ptrCLICfg == NULL)
return -1;
for (index = 0; index < CLI_MAX_CMD; index++)
{
if (ptrCLICfg->tableEntry[index].cmd == NULL)
{
break;
}
else
{
numCLICommands = numCLICommands + 1;
}
}
for (idx = 0; idx < MAX_RADAR_CMD; idx++)
{
memset ((void *)&tokenizedArgs, 0, sizeof(tokenizedArgs));
argIndex = 0;
ptrCLICommand = (char*)radarCmdString[idx];
cliStatus = -1;
while (1)
{
tokenizedArgs[argIndex] = strtok(ptrCLICommand, delimitter);
if (tokenizedArgs[argIndex] == NULL)
break;
argIndex++;
if (argIndex >= CLI_MAX_ARGS)
break;
ptrCLICommand = NULL;
}
if (argIndex == 0)
continue;
for (index = 0; index < numCLICommands; index++)
{
ptrCLICommandEntry = &ptrCLICfg->tableEntry[index];
if (strcmp(ptrCLICommandEntry->cmd, tokenizedArgs[0]) == 0)
{
cliStatus = ptrCLICommandEntry->cmdHandlerFxn (argIndex, tokenizedArgs);
if (cliStatus == 0)
{
CLI_write ("Done ");
}
else
{
CLI_write ("Error %d ", cliStatus);
}
break;
}
}
if (index == numCLICommands)
{
if (ptrCLICfg->enableMMWaveExtension == 1U)
{
cliStatus = CLI_MMWaveExtensionHandler (argIndex, tokenizedArgs);
}
if (cliStatus == -1)
{
CLI_write ("'%s' is not recognized as a CLI command ", tokenizedArgs[0]);
}
}
}
return 0;
}
void MmwDemo_Bypass_CLI (void)
{
if (CLI_ByPassApi(&gCLI.cfg) != 0)
{
System_printf ("Error: Unable to CLI_ByPassApi ");
return;
}
return;
}
將上述代碼集成進(jìn)測(cè)試程序后,mmWave sensor成功配置。將此BIN文件燒寫(xiě)到EVM板卡中,可以實(shí)現(xiàn)上電自動(dòng)配置參數(shù)及運(yùn)行的功能,代碼上電自動(dòng)運(yùn)行功能添加成功。
CCS debug運(yùn)行模式下,CCS控制臺(tái)打印信息如下:
[Cortex_R4_0] **********************************************
Debug: Launching the MMW Demo on MSS
**********************************************
Debug: Launched the Initialization Task
Debug: mmWave Control Initialization was successful
Debug: mmWave Control Synchronization was successful
[C674X_0] Debug: DPM Module Sync is done
[Cortex_R4_0] Debug: CLI is operational
Debug: Sending rlRfSetLdoBypassConfig with 0 0 0
============ Heap Memory Stats ============
Size Used Free DPCUsed
System Heap(TCMB) 32768 28016 4752 2048
L3 786432 262144 524288
localRam(TCMB) 4096 512 3584
============ Heap Memory Stats ============
Size Used Free DPCUsed
System Heap(L2) 32768 16112 16656 0
L3 786432 16384 770048
localRam(L2) 50176 15272 34904
localRam(L1) 16384 5728 10656
Starting Sensor (issuing MMWave_start)
直接燒寫(xiě)B(tài)IN文件到EVM板卡,串口打印信息如下:
******************************************
xWR68xx MMW Demo 03.05.00.04
******************************************
mmwDemo:/>Ignored: Sensor is already stopped
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Debug: Init Calibration Status = 0x1ffe
Done
mmwDemo:/>
在部分的demo(比如3D people counting demo)中,會(huì)出現(xiàn)堆棧溢出導(dǎo)致上電后,initTask中,bypasscli配置失敗的情況,此時(shí)只需要需要適當(dāng)增加此task的stacksize為4*1024,即可完成參數(shù)的配置。
Task_Params_init(&taskParams);
taskParams.stackSize = 4*1024;
gMmwMssMCB.taskHandles.initTask = Task_create(MmwDemo_initTask, &taskParams, NULL);
IWR6843、IWR6443 單芯片 60GHz 至 64GHz 毫米波傳感器 數(shù)據(jù)表 (Rev. D)
mmWave SDK: mmWave Software Development Kit http://www.ti.com/tool/mmwave-sdk
mmWave SDK User’s Guide: C: immwave_sdk_03_05_00_04docsmmwave_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
mmWave SDK Out of Box Demo - 68xx Hard-Coded Config Version User's Guide: C:/ti/mmwave_industrial_toolbox_4_9_0/labs/out_of_box_demo/68xx_mmwave_sdk_hcc/docs/mmWave_sdk_68xx_hcc_user_guide.html
下一篇: PLC、DCS、FCS三大控
上一篇: 小體積電源在光模塊里