国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

一種可以快速將CFG文件參數(shù)固化到應(yīng)用代碼中的實現(xiàn)方式

德州儀器 ? 來源:德州儀器 ? 作者:德州儀器 ? 2022-02-15 13:36 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

TI mmWave sensor是高集成度的毫米波雷達(dá)傳感器SOC,在開發(fā)過程中,SDK及TI DEMO均使用靈活的UART接口發(fā)送CLI命令進(jìn)行射頻參數(shù)配置及相關(guān)算法參數(shù)的配置。對于量產(chǎn)及或者有固化參數(shù)的產(chǎn)品而言,將參數(shù)固化在代碼中會是一項明確的需求。本文介紹一種可以快速將CFG文件參數(shù)固化到應(yīng)用代碼中的實現(xiàn)方式,同時支持原有串口的CLI配置,無需修改SDK驅(qū)動層代碼,可方便快捷的完成參數(shù)的固化。

本文的測試環(huán)境如下:

  • 此方法適用器件型號:I/AWR1443, I/AWR1642, I/AWR1843, I/AWR6843
  • 本文測試軟件版本:mmWave SDK 3.5.0.4
  • 本文測試硬件平臺:IWR6843ISK EVM

1. 運(yùn)行SDK mmWave sensor demo的流程及對外接口說明

在現(xiàn)有的TI mmWave SDK及TOOLBOX相關(guān)的示例代碼中,均使用兩個串口進(jìn)行參數(shù)的配置及數(shù)據(jù)的獲取,EVM板載的TM4C MCU是一個板載XDS110仿真器仿真器自帶兩路串口,可以直接完成SDK DEMO中的參數(shù)配置及數(shù)據(jù)輸出。在客制化產(chǎn)品中,可以使用外部的2個USB<->UART橋接線纜進(jìn)行調(diào)試,兩個串口的默認(rèn)使用情況如下:

一種可以快速將CFG文件參數(shù)固化到應(yīng)用代碼中的實現(xiàn)方式

配置命令口: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

mmWave sensor的啟動配置流程

2. 修改CLI參數(shù)以調(diào)整mmWave sensor 的配置參數(shù)

以SDK內(nèi)的Out of Box demo為例,將BIN文件(比如:.\mmwave_sdk_\packages\ti\demo\xwr68xx\mmw\xwr68xx_mmw_demo.bin)燒寫至板卡后,啟動后,需要通過GUI下發(fā)CFG配置(比如:.\mmwave_sdk_\packages\ti\demo\xwr68xx\mmw\profiles\profile_2d.cfg),成功將配置加載后,IWR6843雷達(dá)芯片及開始射頻發(fā)波及目標(biāo)探測的工作。CFG文件各項配置具體信息在mmWave SDK user’s guide中有詳細(xì)描述(文檔路徑:.\mmwave_sdk_\docs\mmwave_sdk_user_guide.pdf),通過CLI參數(shù)的配置,可靈活修改雷達(dá)的RF參數(shù)及信號處理的參數(shù),方便調(diào)試工作的進(jìn)行。

對于Toolbox內(nèi)的demo,則需要同時參考SDK user’s Guide 及toolbox內(nèi)的demo guide,其配置文件有SDK通用的部分,也有屬于此demo獨有的配置命令,包含SDK參數(shù)、目標(biāo)檢測層的參數(shù)、追蹤器層的參數(shù),示例如下(.\mmwave_industrial_toolbox_4_9_0\labs\people_counting\68xx_3D_people_counting\chirp_configs\AOP_6m_default.cfg):

% SDK Parameters

% See the SDK user's guide for more information

% "C:\ti\mmwave_sdk_[VER]\docs\mmwave_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:\ti\mmwave_industrial_toolbox_[VER]\labs\people_counting\docs\3D_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:\ti\mmwave_industrial_toolbox_[VER]\labs\people_counting\docs\3D_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

3. 固化CLI參數(shù)以實現(xiàn)芯片上電后自動加載配置

固化配置參數(shù)有幾種操作方式,如SDK文檔描述(file:///C:/ti/mmwave_sdk_03_05_00_04/packages/ti/demo/xwr68xx/mmw/docs/doxygen/html/index.html#bypassCLI),用戶可以將CFG文件中每一條都使用對應(yīng)的函數(shù)調(diào)用替換。這種方式比較底層,代碼的改動量較大,但是可以節(jié)省一部分代碼空間。實現(xiàn)方法可參考Toolbox中提供的一個hard-coded chirp configurations的參考示例代碼,位于:.\mmwave_industrial_toolbox_4_9_0\labs\out_of_box_demo\68xx_mmwave_sdk_hcc

本文所介紹的CLI參數(shù)固化方式將保留原有的CLI串口調(diào)試的接口,同時將現(xiàn)有的CFG參數(shù)以CLI的格式配置進(jìn)去,可視化程度高,實現(xiàn)更為簡單,實現(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\r\n"},

{"flushCfg\r\n"},

{"dfeDataOutputMode 1\r\n"},

{"channelCfg 15 5 0\r\n"},

{"adcCfg 2 1\r\n"},

{"adcbufCfg -1 0 1 1 1\r\n"},

{"lowPower 0 0\r\n"},

{"profileCfg 0 60 7 3 24 0 0 166 1 256 12500 0 0 158\r\n"},

{"chirpCfg 0 0 0 0 0 0 0 1\r\n"},

{"chirpCfg 1 1 0 0 0 0 0 4\r\n"},

{"frameCfg 0 1 32 0 100 1 0\r\n"},

{"guiMonitor -1 1 1 1 0 0 1\r\n"},

{"cfarCfg -1 0 2 8 4 3 0 15.0 0\r\n"},

{"cfarCfg -1 1 0 4 2 3 1 15.0 0\r\n"},

{"multiObjBeamForming -1 1 0.5\r\n"},

{"calibDcRangeSig -1 0 -5 8 256\r\n"},

{"clutterRemoval -1 0\r\n"},

{"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\r\n"},

{"measureRangeBiasAndRxChanPhase 0 1. 0.2\r\n"},

{"aoaFovCfg -1 -90 90 -90 90\r\n"},

{"cfarFovCfg -1 0 0.25 9.0\r\n"},

{"cfarFovCfg -1 1 -20.16 20.16\r\n"},

{"extendedMaxVelocity -1 0\r\n"},

{"CQRxSatMonitor 0 3 4 63 0\r\n"},

{"CQSigImgMonitor 0 127 4\r\n"},

{"analogMonitor 0 0\r\n"},

{"lvdsStreamCfg -1 0 0 0\r\n"},

{"bpmCfg -1 0 0 0\r\n"},

{"calibData 0 0 0\r\n"},

{"sensorStart\r\n"}

};

static int32_t CLI_ByPassApi(CLI_Cfg* ptrCLICfg)

{

//uint8_t cmdString[128];

char* tokenizedArgs[CLI_MAX_ARGS];

char* ptrCLICommand;

char delimitter[] = " \r\n";

uint32_t argIndex;

CLI_CmdTableEntry* ptrCLICommandEntry;

int32_t cliStatus;

uint32_t index, idx;

uint16_t numCLICommands = 0U;

/* Sanity Check: Validate the arguments */

if (ptrCLICfg == NULL)

return -1;

/* Cycle through and determine the number of supported CLI commands: */

for (index = 0; index < CLI_MAX_CMD; index++)

{

/* Do we have a valid entry? */

if (ptrCLICfg->tableEntry[index].cmd == NULL)

{

/* NO: This is the last entry */

break;

}

else

{

/* YES: Increment the number of CLI commands */

numCLICommands = numCLICommands + 1;

}

}

/* Execute All Radar Commands */

for (idx = 0; idx < MAX_RADAR_CMD; idx++)

{

/* Reset all the tokenized arguments: */

memset ((void *)&tokenizedArgs, 0, sizeof(tokenizedArgs));

argIndex = 0;

ptrCLICommand = (char*)radarCmdString[idx];

/* Set the CLI status: */

cliStatus = -1;

/* The command has been entered we now tokenize the command message */

while (1)

{

/* Tokenize the arguments: */

tokenizedArgs[argIndex] = strtok(ptrCLICommand, delimitter);

if (tokenizedArgs[argIndex] == NULL)

break;

/* Increment the argument index: */

argIndex++;

if (argIndex >= CLI_MAX_ARGS)

break;

/* Reset the command string */

ptrCLICommand = NULL;

}

/* Were we able to tokenize the CLI command? */

if (argIndex == 0)

continue;

/* Cycle through all the registered CLI commands: */

for (index = 0; index < numCLICommands; index++)

{

ptrCLICommandEntry = &ptrCLICfg->tableEntry[index];

/* Do we have a match? */

if (strcmp(ptrCLICommandEntry->cmd, tokenizedArgs[0]) == 0)

{

/* YES: Pass this to the CLI registered function */

cliStatus = ptrCLICommandEntry->cmdHandlerFxn (argIndex, tokenizedArgs);

if (cliStatus == 0)

{

CLI_write ("Done\n");

}

else

{

CLI_write ("Error %d\n", cliStatus);

}

break;

}

}

/* Did we get a matching CLI command? */

if (index == numCLICommands)

{

/* NO matching command found. Is the mmWave extension enabled? */

if (ptrCLICfg->enableMMWaveExtension == 1U)

{

/* Yes: Pass this to the mmWave extension handler */

cliStatus = CLI_MMWaveExtensionHandler (argIndex, tokenizedArgs);

}

/* Was the CLI command found? */

if (cliStatus == -1)

{

/* No: The command was still not found */

CLI_write ("'%s' is not recognized as a CLI command\n", tokenizedArgs[0]);

}

}

}

return 0;

}

void MmwDemo_Bypass_CLI (void)

{

if (CLI_ByPassApi(&gCLI.cfg) != 0)

{

System_printf ("Error: Unable to CLI_ByPassApi\n");

return;

}

return;

}

4. 運(yùn)行測試?yán)?/h3>

將上述代碼集成進(jìn)測試程序后,mmWave sensor成功配置。將此BIN文件燒寫到EVM板卡中,可以實現(xiàn)上電自動配置參數(shù)及運(yùn)行的功能,代碼上電自動運(yùn)行功能添加成功。

CCS debug運(yùn)行模式下,CCS控制臺打印信息如下:

[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)

直接燒寫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:/>

5. 附加說明

在部分的demo(比如3D people counting demo)中,會出現(xiàn)堆棧溢出導(dǎo)致上電后,initTask中,bypasscli配置失敗的情況,此時只需要需要適當(dāng)增加此task的stacksize為4*1024,即可完成參數(shù)的配置。

/* Initialize the Task Parameters. */

Task_Params_init(&taskParams);

taskParams.stackSize = 4*1024;

gMmwMssMCB.taskHandles.initTask = Task_create(MmwDemo_initTask, &taskParams, NULL);

6. 參考資料

  • 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:\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
  • 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
審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 汽車
    +關(guān)注

    關(guān)注

    15

    文章

    4154

    瀏覽量

    41095
  • AWR1443
    +關(guān)注

    關(guān)注

    0

    文章

    4

    瀏覽量

    2468
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    UV膠可以二次固化嗎?

    紫外線(UV)膠是一種在特定波長紫外光照射下發(fā)生聚合反應(yīng)而固化的膠粘劑,廣泛應(yīng)用于電子、光學(xué)、醫(yī)療、珠寶和3D打印等領(lǐng)域。因其快速固化、無溶劑、高透明度等優(yōu)點,受到眾多行業(yè)的青睞。然而
    的頭像 發(fā)表于 01-27 11:27 ?275次閱讀
    UV膠<b class='flag-5'>可以</b>二次<b class='flag-5'>固化</b>嗎?

    三防漆固化方式對比:自然/熱/UV哪種最好? |鉻銳特實業(yè)

    鉻銳特實業(yè)|三防漆固化方式詳解:自然固化需12-48小時、熱固化30分鐘-2小時、UV固化僅幾秒
    的頭像 發(fā)表于 01-23 16:10 ?297次閱讀
    三防漆<b class='flag-5'>固化</b><b class='flag-5'>方式</b>對比:自然/熱/UV哪種最好? |鉻銳特實業(yè)

    如何正確配置AG32 MCU,實現(xiàn)FLASH或者代碼加密?

    功能主要包括兩方式:Lock fash(鎖定Flash)和代碼加密(Code Encryption),它們可以在燒錄過程通過特定工具和配
    發(fā)表于 01-22 15:01

    Vivado+Vitis將程序固化的Flash的操作流程

    ZYNQ 的程序固化是指將程序代碼永久存儲非易失性存儲器,使系統(tǒng)上電后能自動加載運(yùn)行的過程。主要固化
    的頭像 發(fā)表于 01-20 16:17 ?368次閱讀
    Vivado+Vitis將程序<b class='flag-5'>固化</b>的Flash的操作流程

    分析嵌入式軟件代碼的漏洞-代碼注入

    實現(xiàn)自己的目標(biāo)。當(dāng)函數(shù)返回時,攻擊者還可以將指令要被送達(dá)的地址覆蓋重寫。 2、避免代碼注入 避免代碼注入的最佳方法是通過設(shè)計。 如果可以使
    發(fā)表于 12-22 12:53

    固化烘箱物聯(lián)網(wǎng)數(shù)據(jù)臺解決方案

    到MES系統(tǒng)實現(xiàn)集中管理。對此,數(shù)之能提供高效可靠的物聯(lián)網(wǎng)解決方案。 現(xiàn)場固化烘箱主要通過西門子PLC、臺達(dá)PLC等控制器進(jìn)行控制,通過實現(xiàn)PLC數(shù)據(jù)采集數(shù)之能數(shù)據(jù)
    的頭像 發(fā)表于 11-24 16:43 ?520次閱讀
    <b class='flag-5'>固化</b>烘箱物聯(lián)網(wǎng)數(shù)據(jù)<b class='flag-5'>中</b>臺解決方案

    Labview 解析dxf文件并顯示<

    Labview軟件開發(fā)過程,大家會遇到導(dǎo)入dxf文件的需要,今天開個帖子,聊聊如何解析和顯示dxf文件,同時用圖表來顯示。 首先來介紹下dxf, 簡單來說他就是圖形文件
    發(fā)表于 11-14 22:45

    代蜂鳥E203移植普通Artix7核心板IDE的cfg配置文件修改

    XC7A100T的核心板; 在調(diào)整好PL蜂鳥SoC的工程后(注釋部分無效代碼,適配對應(yīng)時鐘,修正引腳約束等),本文中不做展開。然后打開NucleiStudio,新建工程,找到工程cfg
    發(fā)表于 10-29 06:45

    芯來e203移植開發(fā)分享(二)——仿真文件簡述與itcm固化程序

    運(yùn)行時我們可以同觀察pc值,來判斷程序運(yùn)行具體哪步,這也是之后重要的debug地方。 程序固化 既然tb的主要功能是固化程序,那么我們
    發(fā)表于 10-27 06:04

    指令集測試的一種糾錯方法

    本文描述在進(jìn)行指令集測試的一種糾錯方法 1.打開測試指令集對應(yīng)的dump文件 dump文件是指由匯編文件進(jìn)行反匯編之后,可以供人閱讀指令的
    發(fā)表于 10-24 14:04

    突破陰影區(qū)固化難題:UV+濕氣雙重固化三防漆CA6001技術(shù)解析與應(yīng)用指南

    本文深入探討了UV三防漆在復(fù)雜結(jié)構(gòu)PCBA應(yīng)用面臨的陰影區(qū)固化挑戰(zhàn),并重點介紹了一種創(chuàng)新的UV與濕氣雙重固化體系(CA6001)。文章將詳細(xì)解析其技術(shù)原理、關(guān)鍵性能
    的頭像 發(fā)表于 10-20 17:57 ?1610次閱讀
    突破陰影區(qū)<b class='flag-5'>固化</b>難題:UV+濕氣雙重<b class='flag-5'>固化</b>三防漆CA6001技術(shù)解析與應(yīng)用指南

    三防漆的固化方式

    三防漆從黏稠液體變成PCB板上的“防護(hù)鎧甲”,關(guān)鍵在于固化過程。這種轉(zhuǎn)變并非簡單的“變干”,而是通過不同的化學(xué)或物理機(jī)制實現(xiàn)的,常見固化方式可分為三大類,適配不同場景需求。1.常溫自干
    的頭像 發(fā)表于 07-24 15:58 ?951次閱讀
    三防漆的<b class='flag-5'>固化</b><b class='flag-5'>方式</b>

    STM32IDE如何設(shè)定代碼ITCM運(yùn)行?

    近期使用STM32MUX生成STM32IDE的代碼(MCU是STM32H743),目前希望可以將部分代碼定位ITCM運(yùn)行,加快處理速度,
    發(fā)表于 06-24 06:45

    粘接聚酰亞胺PI膜除了使用PI膜專用UV膠粘接,還可以使用熱固化環(huán)氧膠來解決!

    氧膠也是粘接聚酰亞胺(PI)膜的一種常見方法。熱固化環(huán)氧膠是一種在加熱的條件下固化成堅固狀態(tài)的膠水,在涂抹或涂覆膠水后,通過加熱,膠水中的化學(xué)反應(yīng)被觸發(fā),導(dǎo)致其硬
    的頭像 發(fā)表于 05-07 09:11 ?1481次閱讀
    粘接聚酰亞胺PI膜除了使用PI膜專用UV膠粘接,還<b class='flag-5'>可以</b>使用熱<b class='flag-5'>固化</b>環(huán)氧膠來解決!

    openocd的.cfg文件如何寫?

    各位大佬們,最近想學(xué)習(xí)下openocd的.cfg文件如何寫,各位大佬們,有什么入門學(xué)習(xí)的教程嗎?
    發(fā)表于 03-07 09:33