a736015

  • 2020-01-15
  • 回复了主题帖: 颁奖:世健的ADI之路 物联网站,答题打卡赢Kindle等好礼

    感谢EE,确认信息无误,表格已填。

  • 2020-01-14
  • 回复了主题帖: 颁奖:测评有礼!【Discovery 】走进TI毫米波雷达世界 快速获得设计技能

    感谢ti、感谢ee,确认个人信息无误!

  • 2019-12-27
  • 发表了主题帖: 【TI毫米波雷达测评】传感器管理模块介绍

    本帖最后由 a736015 于 2019-12-27 15:50 编辑 IWR1443BOOST开箱测试:http://bbs.eeworld.com.cn/thread-1101610-1-1.html SDK及例程下载:http://bbs.eeworld.com.cn/thread-1102315-1-1.html XWR14XX 数据路径:http://bbs.eeworld.com.cn/forum.php?mod=post&action=newthread&fid=154 IWR1443 BOOST 的CLI命令:http://bbs.eeworld.com.cn/thread-1104699-1-1.html 人体位置检测:http://bbs.eeworld.com.cn/thread-1105760-1-1.html          传感器管理模块源程序位置在工程文件根目录的sensor_mgmt.c文件中,int32_t MmwDemo_sensorMgmtInit (void)先对传感器管理模块进行初始化及设置,之后创建void MmwDemo_sensorMgmtTask (UArg arg0, UArg arg1)任务。void MmwDemo_sensorMgmtTask (UArg arg0, UArg arg1)任务中对LED及按键初始化,之后进入死循环,等待时间发生。          传感器管理模块定义来了以下几中工作状态 MmwDemo_SensorState_INIT:传感器管理模块初始化后的状态。传感器管理模块进行初始化及设置后进入此状态。 MmwDemo_SensorState_START:传感器启动后的状态。通过mmwave_start()启动传感器后进入此状态。 MmwDemo_SensorState_STOP_PENDING:传感器等待停止状态。通过mmwave_stop()停止传感器后进入此状态,等待所有模块(如datapath、Bss等)达到完全停止状态。 MmwDemo_SensorState_STOP:传感器及其所有部件停止的状态。传感器所有模块(如datapath、Bss等)达到完全停止状态后进入此状态。         传感器管理模块定义了以下几种传感器事件 MmwDemo_SensorEvent_START:传感器启动事件。 MmwDemo_SensorEvent_STOP:传感器停止事件。 MmwDemo_SensorEvent_FRAME_START:传感器帧启动事件。 MmwDemo_SensorEvent_KEY_PRESS:传感器按键事件。用户按GPIO1按键后触发该事件。 MmwDemo_SensorEvent_BSS_STOP:BSS停止事件。BSS停止后触发此事件 MmwDemo_SensorEvent_DATAPATH_STOP:datapath停止事件。datapath停止后触发此事件         传感器定义了以下状态机 MmwDemo_sensorSMFunc MmwDemo_sensorStateMachine[MmwDemo_SensorState_MAX]= {     MmwDemo_sensorStateInit,     MmwDemo_sensorStateStart,     MmwDemo_sensorStateStopPending,     MmwDemo_sensorStateStop }; MmwDemo_sensorStateInit:传感器处于初始状态时的事件处理函数。当传感器处于MmwDemo_SensorState_INIT状态时,触发事件后,进入状态机的void MmwDemo_sensorStateInit(MmwDemo_SensorEvent event)函数进行事件处理. MmwDemo_sensorStateStart:传感器处于启动状态时的事件处理函数。当传感器处理MmwDemo_SensorState_START状态时,触发事件后,进入状态机的void MmwDemo_sensorStateStart(MmwDemo_SensorEvent event)函数进行事件处理. MmwDemo_sensorStateStopPending:传感器处于等待停止状态时的事件处理函数。当传感器处于MmwDemo_SensorState_STOP_PENDING状态时,触发事件后,进入状态机的void MmwDemo_sensorStateStopPending(MmwDemo_SensorEvent event)函数进行事件处理. MmwDemo_sensorStateStop:传感器处于停止状态时的事件处理函数。当传感器处于MmwDemo_SensorState_STOP状态时,触发事件后,进入状态机的void MmwDemo_sensorStateStop(MmwDemo_SensorEvent event)函数进行事件处理.   void MmwDemo_sensorMgmtTask (UArg arg0, UArg arg1)任务根据传感器的状态及触发的事件,通过MmwDemo_sensorStateMachine状态机就方便的进行管理,我们也可以通过状态及事件很方便的可以找到处理源函数,了解其处理过程。

  • 回复了主题帖: 【TI毫米波雷达测评】人体位置检测

    alan000345 发表于 2019-12-27 09:00 这么神奇人体位置都能检测,如果要是有什么动物靠近呢,不会出错吧。
    这个只能靠算法去实现了。有看过ti的一个在线培训,介绍区分人体和植物的。

  • 2019-12-26
  • 发表了主题帖: 【TI毫米波雷达测评】人体位置检测

    IWR1443BOOST开箱测试:http://bbs.eeworld.com.cn/thread-1101610-1-1.html SDK及例程下载:http://bbs.eeworld.com.cn/thread-1102315-1-1.html XWR14XX 数据路径:http://bbs.eeworld.com.cn/forum.php?mod=post&action=newthread&fid=154 IWR1443 BOOST 的CLI命令:http://bbs.eeworld.com.cn/thread-1104699-1-1.html   一、mmWave检测结果       out_of_box_demo例程的数据处理放在 void MmwDemo_dataPathTask(UArg arg0, UArg arg1) 函数中。其中包含了1D FFT数据处理、2D FFT数据处理、距离偏差测量、CFAR处理、角度估算、数据通过DAT_port输出等。数据处理完后会存储在MmwDemo_DataPathObj(结构体位置 C:\ti\mmwave_sdk_02_01_00_04\packages\ti\demo\xwr14xx\mmw)结构体中,我们就可以在该结构体当中找到需要的数据进行处理。 二、人体位置信息 新建人体位置信息结构体,用于存储检测范围内人体数量及坐标。 #define MY_MAX_OBJ_OUT 100 /*用于存储检测到的人体的坐标*/ typedef struct my_detectedObj_t {     int32_t  x;             /*单位毫米*/     int32_t  y;             /*单位毫米*/ } my_detectedObj; typedef struct My_DataPathObj_t {     /*检测到的人体数量*/     uint32_t my_numObjOut;     /*输出人体位置数组*/     my_detectedObj objOut[MY_MAX_OBJ_OUT]; } My_DataPathObj; 三、人体位置检测 在main.c文件,加入自定义头文件 结构体初始化   定义打印信息缓存 新建信息处理函数 其中,int32_t My_DataProcess(MmwDemo_DataPathObj *obj)函数用于把SDK中结构体MmwDemo_DataPathObj的数据通过算法得到人体数量及位置信息,这里就不体现源函数了。当检测范围内有检测到人体是,返回 0,否则为其他值。   在void MmwDemo_dataPathTask(UArg arg0, UArg arg1)函数中,注释掉原数据发送函数MmwDemo_transmitProcessedOutput(gMmwMCB.loggingUartHandle,dataPathObj);,加入自定义的函数My_transmitProcessedOutput(gCLI.cfg.cliUartHandle,dataPathObj); 由于原数据发送函数是通过DATA_port串口输出,注释掉后,DATA_port将不会输出数据。新增的数据数据发送函数由CFG_port串口输出。 重新编译工程并烧入程序。通过串口调试助手就可以查看到检测的信息。   至此,就可以通过mmwave来进行人体位置轨迹跟踪,外接的MCU就可以通过串口接收的信息进行相关的处理。  

  • 回复了主题帖: 【TI毫米波雷达测评】SDK及例程下载

    本帖最后由 a736015 于 2019-12-26 17:18 编辑 板子回来后,就可以直接测试了。 以下开箱测试就是板子回来直接测试的。 IWR1443BOOST开箱测试:http://bbs.eeworld.com.cn/thread-1101610-1-1.html

  • 2019-12-24
  • 加入了学习《世健第四期》,观看 全新设计的8通道16位同步采样SAR ADC -- AD7606B

  • 2019-12-19
  • 发表了主题帖: 【TI毫米波雷达测评】IWR1443 BOOST 的CLI命令

    本帖最后由 a736015 于 2019-12-19 10:35 编辑 IWR1443BOOST开箱测试:http://bbs.eeworld.com.cn/thread-1101610-1-1.html SDK及例程下载:http://bbs.eeworld.com.cn/thread-1102315-1-1.html XWR14XX 数据路径:http://bbs.eeworld.com.cn/forum.php?mod=post&action=newthread&fid=154   一、CLI命令及处理函数         out_of_box_demo具有28个CLI命令,具体的命令、处理函数及位置如下: 1、version命令     命令对应处理函数:static int32_t CLI_MMWaveVersion (int32_t argc, char* argv[])     命令对应处理函数的位置:C:\ti\mmwave_sdk_02_01_00_04\packages\ti\utils\cli\src\cli_mmwave.c 2、flushCfg命令     命令对应处理函数:static int32_t CLI_MMWaveFlushCfg (int32_t argc, char* argv[])     命令对应处理函数的位置:C:\ti\mmwave_sdk_02_01_00_04\packages\ti\utils\cli\src\cli_mmwave.c 3、dfeDataOutputMode命令     命令对应处理函数:static int32_t CLI_MMWaveDataOutputMode (int32_t argc, char* argv[])     命令对应处理函数的位置:C:\ti\mmwave_sdk_02_01_00_04\packages\ti\utils\cli\src\cli_mmwave.c 4、channelCfg命令     命令对应处理函数:static int32_t CLI_MMWaveChannelCfg (int32_t argc, char* argv[])     命令对应处理函数的位置:C:\ti\mmwave_sdk_02_01_00_04\packages\ti\utils\cli\src\cli_mmwave.c 5、adcCfg命令     命令对应处理函数:static int32_t CLI_MMWaveADCCfg (int32_t argc, char* argv[])     命令对应处理函数的位置:C:\ti\mmwave_sdk_02_01_00_04\packages\ti\utils\cli\src\cli_mmwave.c 6、profileCfg命令     命令对应处理函数:static int32_t CLI_MMWaveProfileCfg (int32_t argc, char* argv[])     命令对应处理函数的位置:C:\ti\mmwave_sdk_02_01_00_04\packages\ti\utils\cli\src\cli_mmwave.c 7、chirpCfg命令     命令对应处理函数:static int32_t CLI_MMWaveChirpCfg (int32_t argc, char* argv[])     命令对应处理函数的位置:C:\ti\mmwave_sdk_02_01_00_04\packages\ti\utils\cli\src\cli_mmwave.c 8、frameCfg命令     命令对应处理函数:static int32_t CLI_MMWaveFrameCfg (int32_t argc, char* argv[])     命令对应处理函数的位置:C:\ti\mmwave_sdk_02_01_00_04\packages\ti\utils\cli\src\cli_mmwave.c 9、advFrameCfg命令     命令对应处理函数:static int32_t CLI_MMWaveAdvFrameCfg (int32_t argc, char* argv[])     命令对应处理函数的位置:C:\ti\mmwave_sdk_02_01_00_04\packages\ti\utils\cli\src\cli_mmwave.c 10、subFrameCfg命令     命令对应处理函数:static int32_t CLI_MMWaveSubFrameCfg (int32_t argc, char* argv[])     命令对应处理函数的位置:C:\ti\mmwave_sdk_02_01_00_04\packages\ti\utils\cli\src\cli_mmwave.c 11、lowPower命令     命令对应处理函数:static int32_t CLI_MMWaveLowPowerCfg (int32_t argc, char* argv[])     命令对应处理函数的位置:C:\ti\mmwave_sdk_02_01_00_04\packages\ti\utils\cli\src\cli_mmwave.c 12、contModeCfg命令     命令对应处理函数:static int32_t CLI_MMWaveContModeCfg (int32_t argc, char* argv[])     命令对应处理函数的位置:C:\ti\mmwave_sdk_02_01_00_04\packages\ti\utils\cli\src\cli_mmwave.c 13、bpmCfgAdvanced命令     命令对应处理函数:static int32_t CLI_MMWaveBPMCfgAdvanced (int32_t argc, char* argv[])     命令对应处理函数的位置:C:\ti\mmwave_sdk_02_01_00_04\packages\ti\utils\cli\src\cli_mmwave.c 14、sensorStart命令     命令对应处理函数:static int32_t MmwDemo_CLISensorStart (int32_t argc, char* argv[])     命令对应处理函数的位置:工程的根目录下的mmw_cli.c,与main.c同文件夹里。 15、sensorStop命令     命令对应处理函数:static int32_t MmwDemo_CLISensorStop (int32_t argc, char* argv[])     命令对应处理函数的位置:工程的根目录下的mmw_cli.c,与main.c同文件夹里。 16、guiMonitor命令     命令对应处理函数:static int32_t MmwDemo_CLIGuiMonSel (int32_t argc, char* argv[])     命令对应处理函数的位置:工程的根目录下的mmw_cli.c,与main.c同文件夹里。 17、cfarCfg命令     命令对应处理函数:static int32_t MmwDemo_CLICfarCfg (int32_t argc, char* argv[])     命令对应处理函数的位置:工程的根目录下的mmw_cli.c,与main.c同文件夹里。 18、peakGrouping命令     命令对应处理函数:static int32_t MmwDemo_CLIPeakGroupingCfg (int32_t argc, char* argv[])     命令对应处理函数的位置:工程的根目录下的mmw_cli.c,与main.c同文件夹里。 19、multiObjBeamForming命令     命令对应处理函数:static int32_t MmwDemo_CLIMultiObjBeamForming (int32_t argc, char* argv[])     命令对应处理函数的位置:工程的根目录下的mmw_cli.c,与main.c同文件夹里。 20、calibDcRangeSig命令     命令对应处理函数:static int32_t MmwDemo_CLICalibDcRangeSig (int32_t argc, char* argv[])     命令对应处理函数的位置:工程的根目录下的mmw_cli.c,与main.c同文件夹里。 21、clutterRemoval命令     命令对应处理函数:static int32_t MmwDemo_CLIClutterRemoval (int32_t argc, char* argv[])     命令对应处理函数的位置:工程的根目录下的mmw_cli.c,与main.c同文件夹里。 22、adcbufCfg命令     命令对应处理函数:static int32_t MmwDemo_CLIADCBufCfg (int32_t argc, char* argv[])     命令对应处理函数的位置:工程的根目录下的mmw_cli.c,与main.c同文件夹里。 23、compRangeBiasAndRxChanPhase命令     命令对应处理函数:static int32_t MmwDemo_CLICompRangeBiasAndRxChanPhaseCfg (int32_t argc, char* argv[])     命令对应处理函数的位置:工程的根目录下的mmw_cli.c,与main.c同文件夹里。 24、measureRangeBiasAndRxChanPhase命令     命令对应处理函数:static int32_t MmwDemo_CLIMeasureRangeBiasAndRxChanPhaseCfg (int32_t argc, char* argv[])     命令对应处理函数的位置:工程的根目录下的mmw_cli.c,与main.c同文件夹里。 25、CQRxSatMonitor命令     命令对应处理函数:static int32_t MmwDemo_CLIChirpQualityRxSatMonCfg (int32_t argc, char* argv[])     命令对应处理函数的位置:工程的根目录下的mmw_cli.c,与main.c同文件夹里。 26、CQSigImgMonitor命令     命令对应处理函数:static int32_t MmwDemo_CLIChirpQualitySigImgMonCfg (int32_t argc, char* argv[])     命令对应处理函数的位置:工程的根目录下的mmw_cli.c,与main.c同文件夹里。 27、analogMonitor命令     命令对应处理函数:static int32_t MmwDemo_CLIAnalogMonitorCfg (int32_t argc, char* argv[])     命令对应处理函数的位置:工程的根目录下的mmw_cli.c,与main.c同文件夹里。 28、help命令     命令对应处理函数:static int32_t CLI_help (int32_t argc, char* argv[])     命令对应处理函数的位置:C:\ti\mmwave_sdk_02_01_00_04\packages\ti\utils\cli\src\cli.c   仔细看这28个命令的处理函数,就可以知道各个命令的功能,这里就不做具体介绍。   二、不通过命令的方式启动mmwave     由于在out_of_box_demo中,mmwave的参数设置及启动是通过CLI的命令来进行处理的,但是在实际运用中,很多运用是在程序中直接内置参数设置及启动的。接下来介绍mmwave的参数设置及启动直接固化到程序中的方法。     自己建立三个源文件,分别为:users_cli.c、users_cli.h和my_profile.h,并把这三个文件加入到工程中。     users_cli.c参数设置及mmwave启动的函数源文件     users_cli.h参数设置及mmwave启动的函数头文件     my_profile.h为mmwave需要设置的参数,参数需要变更,直接修改里面的参数即可。     在main.c文件中加入users_cli.h头文件     在void MmwDemo_initTask(UArg arg0, UArg arg1)函数任务中,注释掉CLI的命令函数MmwDemo_CLIInit(),并在该地方增加自己的CLI初始化函数CLI_Init()。这样,就没办法通过串口对mmwave进行参数设置。     在启动数据路径处理任务函数前,进行mmwave参数设置并启动mmwave,加入MmwDemo_CLI_Init ()函数      至此,代码已经修改完成。对工程编译并下载到开发板。重新上电后,可以发现有3个指示灯会亮起,说明mmwave已经启动。 同时GPIO1的按键可以进行mmwave的开启和关闭控制。当mmwave关闭时,上图圈圈内的指示灯会灭掉。这样,如果在开发中,有外接MCU的话,就可以通过这2个引脚对mmwave的开启关闭进行操作和监控。 将开发板接入电脑,同时开启串口调试助手,按开发板中的NRST按键进行复位,就可以查看mmwave启动时的信息。 这次就分享到这里,以下为三个源文件的下载链接     

  • 2019-12-09
  • 发表了主题帖: 【TI毫米波雷达测评】XWR14XX 数据路径

    本帖最后由 a736015 于 2019-12-9 10:35 编辑 IWR1443BOOST开箱测试:http://bbs.eeworld.com.cn/thread-1101610-1-1.html SDK及例程下载:http://bbs.eeworld.com.cn/thread-1102315-1-1.html   一、总体             顶层数据路径处理链                                               顶层数据路径时序   如上图所示,数据路径处理包括: 如时序图中所示,在线性调频期间进行处理: 这包括一维(范围)FFT处理,该处理针对每个线性调频(对应于发射天线的线性调频模式)从ADC缓冲区的多个接收天线接收输入,并对其执行FFT,并将转置后的输出生成到L3 RAM中。这是使用HWA和EDMA完成的。 在线性调频结束到下一个线性调频周期开始之间的时间中的处理,在时序图中显示为“帧间周期”。该处理包括: 2D(速度)FFT处理,该处理从L3 RAM中的1D输出获取输入并执行FFT,以在L3 RAM中给出(范围,速度)矩阵。这是使用HWA和EDMA完成的。 使用HWA进行CFAR检测。 使用R4F进行后期处理。 到达估算方向(方位、仰角)。 二、天线配置 下图显示了从EVM xWR14xx板的正面与x,y,z坐标约定一起看到的天线布局。                                 xWR14xx天线布局   毫米波演示支持两种天线配置: 两个发射天线和四个接收天线。发射天线Tx1和Tx3在d = 2 Lambda处水平间隔,其发射交错在一个帧中。该配置允许方位角估计。 三个发射和四个接收天线。第三个Tx天线Tx2位于其他两个Tx天线之间,高度为半λ。该配置允许方位角和仰角估计。 三、一维FFT处理                                                                         数据路径1D                                                                 数据路径1D时序图 上面的图片说明了一种情况,即每帧3 * 16 = 48个片,每个线性调频脉冲每个接收天线有225个采样,如天线配置中提到的那样,在帧内以重复模式(Tx1,Tx3,Tx2)线性调频。这就是3D轮廓(速度和x,y,z)情况。有4个rx天线,其样本被颜色编码并标记为1,2,3,4,每个each具有独特的颜色,以乒乓方式处理以并行化加速器和EDMA处理,并从ADC采集样本。硬件加速器的参数RAM设置为执行256点FFT,该FFT在输入ADC ping和pong缓冲区上运行,以在HWA的M2和M3存储器中产生输出。最初,软件触发(MmwDemo_dataPathTrigger1D)通过激活HWA的伪参数PARAM_0(ping)和PARAM_2(pong)进行处理,而伪参数PARAM_0(ping)和PARAM_3(pong)又激​​活等待ADC满信号的处理PARAM_1(ping)和PARAM_3(pong)。当ADC有采样要在ADC缓冲区Ping或Pong存储器中处理时,相应的处理PARAM将触发FFT计算并将FFT输出传输到M2或M3存储器中。在将ADC样本发送到FFT引擎之前,在HWA中将Blackman窗口应用于它们。FFT的完成还会触发EDMA,该EDMA已设置为执行从M2 / M3存储器到L3 RAM的转置复制(Radar Cube Matrix,MmwDemo_DataPathObj :: radarCube),如图所示。进行此HWA-EDMA乒乓处理48/2(ping / pong)= 24次,以便处理帧的所有chi。设置EDMA,以便在处理每个线性调频脉冲后,从EDMA A和EDMA C通道链接的EDMA B或EDMA D将触发HWA的虚拟PARAM。图片中的EDMA C被设置为在最后一次调频后发出完成中断,该中断通知软件1D处理已完成,并且当该时间到来时,软件可以在下一个调频周期再次触发1D处理。EDMA的影子(链接)PaRAM用于重新加载PaRAM,因此避免了重新编程。EDMA块之间的蓝色箭头表示链接,红色箭头表示链接。 在上面的图片中: A是MMW_EDMA_1D_PING_CH_ID B是MMW_EDMA_1D_PING_CHAIN_CH_ID A_shadow是MMW_EDMA_1D_PING_SHADOW_LINK_CH_ID B_shadow是MMW_EDMA_1D_PING_ONE_HOT_SHADOW_LINK_CH_ID C是MMW_EDMA_1D_PONG_CH_ID, D是MMW_EDMA_1D_PONG_CHAIN_CH_ID C_shadow是MMW_EDMA_1D_PONG_SHADOW_LINK_CH_ID D_shadow是MMW_EDMA_1D_PONG_ONE_HOT_SHADOW_LINK_CH_ID 四、较低精度的二维处理                                                             数据路径2D FFT高级图                                                                                   数据路径2D FFT时序图   如上面的高级图中所示,2D处理对来自1D输出的范围数据执行二维(Doppler)FFT,该处理以乒乓方式进行。它包括以下步骤: 如果启用,则可以消除静态杂波。对于每个测距箱,每个天线,计算样本平均值并从样本中减去。该操作由R4F直接对L3中的数据执行。 来自L3 RAM(MmwDemo_DataPathObj :: radarCube)的数据通过EDMA传输到HWA的M0(偶数对或ping)和M1(奇数对或pong)存储器中,然后执行2D-FFT并在M2中产生输出和M3记忆。在进行FFT操作之前,将输入样本乘以窗口函数。 HWA从上述步骤对M2和M3存储器执行对数幅度运算,并在M0和M1中产生结果。对数幅度输出为Q11格式。 HWA对上述步骤中的M0和M1存储器执行求和运算,并在步骤2的结果之后的M2和M3存储器中生成结果。该和是使用HWA中的FFT完成的,其和是在DC(0th)中获得的斌 该FFT编程的srcScale为2,这意味着将2个冗余位(符号扩展,在这种情况下为无符号)添加到MSB中,并用0填充6个LSB,因此在计算前输入为Q17格式。dstScale设置为8,因此求和输出将被丢弃8位,从而得出Q [17-8] = Q9格式的结果。FFT大小是虚拟天线数量2的下一个幂,并且FFT被编程为启用所有蝶形缩放级,因此FFT输出将为1 / N'* sum(。),其中N'= 2 ^ ceil( log2(numVirtualAntennas))真实平均值为1 / numVirtualAntennas * sum(。)。因此,当设置CFAR阈值时, EDMA将步骤1的结果复制到MmwDemo_DataPathObj :: radarCube的L3 RAM中(与步骤1中的输入相同),然后EDMA将先前步骤的结果复制到MmwDemo_DataPathObj :: rangeDopplerLogMagMatrix的L3 RAM中。 数据以MMW_NUM_RANGE_BINS_PER_TRANSFER行的大块形式传输和处理。上面的时序图中显示了乒乓并行的时序。有关数据流的更多详细信息,例如级之间的存储器中的数据格式,EDMA和HWA资源等,请参阅下面的详细图表。                                                                                             数据路径2D FFT详细图 在详细图中: A是MMW_EDMA_2D_PING_CHAIN_CH_ID2, B是MMW_EDMA_2D_PING_CHAIN_CH_ID3 A_shadow是MMW_EDMA_2D_PING_SHADOW_LINK_CH_ID3 B_shadow是MMW_EDMA_2D_PING_SHADOW_LINK_CH_ID4 C是MMW_EDMA_2D_PONG_CHAIN_CH_ID2, D是MMW_EDMA_2D_PONG_CHAIN_CH_ID3 C_shadow是MMW_EDMA_2D_PONG_SHADOW_LINK_CH_ID3 D_shadow是MMW_EDMA_2D_PONG_SHADOW_LINK_CH_ID4 E是MMW_EDMA_2D_PING_CH_ID, F是MMW_EDMA_2D_PING_CHAIN_CH_ID1(链接到A) E_shadow是MMW_EDMA_2D_PING_SHADOW_LINK_CH_ID1 F_shadow是MMW_EDMA_2D_PING_SHADOW_LINK_CH_ID2 G是MMW_EDMA_2D_PONG_CH_ID, H是MMW_EDMA_2D_PONG_CHAIN_CH_ID1(链接到C) G_shadow是MMW_EDMA_2D_PONG_SHADOW_LINK_CH_ID1 H_shadow是MMW_EDMA_2D_PONG_SHADOW_LINK_CH_ID2 通过启动EDMA A和EDMA C(MmwDemo_dataPathTrigger2D),由软件触发2D处理。 五、高精度的二维处理 在上述数据路径处理中(较低精度的二维处理),FFT输出具有24位精度,但转换为16位以存储在雷达多维数据集中,并且该16位还用于log2处理。该方案的原因是雷达立方体中的存储空间有限。然而,这种精度的损失导致尖峰的噪声分布,这增加了CFAR中的错误检测。解决此问题的一种方法是在log2操作之前将FFT的输出存储为32位而不是16位在M存储器中。但是,这需要存储(以字节为单位)= 3(数量为tx的天线)* 4(数量为rx的天线)* 8(复杂的32位)*多普勒FFT大小。这必须适合四个M存储器中每个存储器的16 KB大小,这将多普勒FFT大小限制为512,但我们最多支持1024。因此,我们必须选择HWA中的选项以直接链接FFT和对数幅度而无需转到M存储器,这保留了24位精度。但是,这是以在DOA计算期间重新计算2D FFT为代价的。因此,这是精度和MIPS之间的权衡。默认情况下,已选择此较高精度方案,但用户可以通过更改以下代码行来更改为较低精度方案main.c将左侧变量设置为DATA_PATH_CHAIN_SEPARATE_LOGMAG。 gMmwMCB.dataPathObj.datapathChainSel = DATA_PATH_CHAIN_COMBINED_LOGMAG; 下图显示了修改后的数据路径2D FFT。由于2D FFT输出未存储在Radar Cube中,因此Radar Cube仍包含1D FFT数据。                                     数据路径2D FFT详细图-结合了2D FFT和对数幅度 在详细图中: A是MMW_EDMA_2D_PING_CHAIN_CH_ID2, B是MMW_EDMA_2D_PING_CHAIN_CH_ID3 A_shadow是MMW_EDMA_2D_PING_SHADOW_LINK_CH_ID3 B_shadow是MMW_EDMA_2D_PING_SHADOW_LINK_CH_ID4 C是MMW_EDMA_2D_PONG_CHAIN_CH_ID2, D是MMW_EDMA_2D_PONG_CHAIN_CH_ID3 C_shadow是MMW_EDMA_2D_PONG_SHADOW_LINK_CH_ID3 D_shadow是MMW_EDMA_2D_PONG_SHADOW_LINK_CH_ID4 E是MMW_EDMA_2D_PING_CH_ID(链接到A), E_shadow是MMW_EDMA_2D_PING_SHADOW_LINK_CH_ID1 G是MMW_EDMA_2D_PONG_CH_ID(链接到C), G_shadow是MMW_EDMA_2D_PONG_SHADOW_LINK_CH_ID1 通过启动EDMA A和EDMA C(MmwDemo_dataPathTrigger2D),由软件触发2D处理。   六、CFAR检测                                                                     数据路径CFAR检测图 如上图所示,CFAR处理包括: 该软件触发(MmwDemo_dataPathTriggerCFAR)EDMA,该EDMA将范围多普勒对数幅度矩阵从L3 RAM MmwDemo_DataPathObj :: rangeDopplerLogMagMatrix(二维处理的输出)传输到M0存储器。 HWA在M0中执行CFAR计算,并在M2存储器中产生输出,并且将来自HWA的CFAR完成中断生成到R4F CPU。 在上图中: 一个是MMW_EDMA_CFAR_INP_CH_ID B是MMW_EDMA_CFAR_INP_CHAIN_CH_ID A_Shadow是MMW_EDMA_CFAR_INP_SHADOW_LINK_CH_ID1 B_Shadow是MMW_EDMA_CFAR_INP_SHADOW_LINK_CH_ID2 以下是默认的CFAR配置参数: MMW_HWA_NOISE_AVG_MODE MMW_HWA_CFAR_THRESHOLD_SCALE MMW_HWA_CFAR_WINDOW_LEN MMW_HWA_CFAR_GUARD_LEN MMW_HWA_CFAR_NOISE_DIVISION_RIGHT_SHIFT MMW_HWA_CFAR_PEAK_GROUPING 可以使用cli配置命令cfarCfg更改这些参数。带有参数的命令如下所述: cfarCfg <averageMode> <winLen> <guardLen> <noiseDiv> <cyclicMode> <peakGrouping> <thresholdScale>   <averageMode>-0-CFAR_CA,1-CFAR_CAGO,2-CFAR_CASO <winLen>-CFAR噪声平均窗口长度 <guardLen>-CFAR保护长度 <noiseDiv>-CFAR噪声平均除数(右移值) <cyclicMode>-禁用0循环模式,启用1循环模式 <peakGrouping>-禁用0峰值分组,启用1峰值分组 <thresholdScale>-检测比例因子 注意:如“ 较低精度的二维处理”一节所述(这也适用于“ 较高精度的二维处理”中的较高精度的处理链),输入到CFAR的总和为Q9格式,因此上面的CFAR thresholdScale也需要采用Q9格式。另外,如果CFAR阈值最初打算以dB表示(例如,为了用户友好),那么我们需要在馈送给HWA CFAR之前进行一些转换。这可以如下得出: 令N为虚拟天线的数量,并且N'= 2 ^ ceil(log2(N)),以dB为单位的用户友好CFAR阈值为TdB(= 20 * log10(|。|))。CFAR通常需要做的事情: CUT = 1 / N * sum(log10(|。|))> TdB / 20 +噪声项的平均值[类似于LHS上的CUT]  给定log10(|。|)= log2(|。|)/ log2(10 ),然后进一步调整各项以进行类似的计算,以匹配低精度第维处理中描述的总和输出: 2 ^ 9 * 1 / N'* sum(log2(|。|))> TdB / 20 * log2(10)* 2 ^ 9 +噪声项的平均值[类似于LHS上的CUT]  因此,要提供给HWA(来自CLI)的 阈值为Tcli = 512 * TdB / 6 * N / N' 七、后处理 后处理包括峰分组和多普勒相移补偿。 峰值分组功能(MmwDemo_peakGrouping)由CFAR处理后的R4F CPU完成。它的输入是: 从M2中的2D输出通过CFAR检测检测到的对象列表。如cfarDetOutput_t所示,每个检测到的对象都由三个参数来描述:范围索引,多普勒索引和CFAR单元中的噪声能量。 雷达立方矩阵,位于L3内存中(MmwDemo_DataPathObj :: radarCube)。 在L3内存中记录幅度范围多普勒矩阵(MmwDemo_DataPathObj :: rangeDopplerLogMagMatrix)。 该函数执行以下操作: 丢弃范围索引超出peakGrouping CLI命令指定的范围的检测到的对象。 丢弃检测到的对象,这些对象的FFT峰在距离多普勒矩阵(MmwDemo_DataPathObj :: rangeDopplerLogMagMatrix)中小于其邻居。 对于每个选定对象,将位于MmwDemo_DataPathObj :: radarCube中的已接收虚拟天线的2维FFT复数值复制到M0(方位角天线)和M1(仰角天线),以进一步进行方位角和仰角FFT计算。 对于每个选定对象,将其(范围,多普勒)索引复制到R4F CPU的本地内存MmwDemo_DataPathObj :: objOut,将在完成方位角和x,y,z计算后最终将其发出。 多普勒补偿功能(MmwDemo_dopplerCompensation)由CFAR和峰值分组处理之后的R4F CPU完成。 它的输入是单独的方位角和海拔符号阵列。 它在与虚拟Rx天线相对应的符号上对多普勒相移进行补偿。在2Tx MIMO方案的情况下,第二组Rx符号被旋转对应于相同Tx天线的后续线性调频脉冲之间的估计多普勒相移的一半。在3Tx MIMO高程方案的情况下,第二组Rx符号旋转了估计的多普勒相移的三分之一,而与第三Tx天线相对应的第三组Rx符号旋转了估计的多普勒相移的2/3 。请参考下面的图片。                                                                 多普勒补偿 最后,该函数返回所选对象的数量。 八、与较低精度的2D处理相对应的FFT计算到达方向 如果后处理阶段之后检测到的峰值数大于零,则由软件(MmwDemo_dataPathTriggerAngleEstimation)触发方位角/高程FFT计算。对于M0(方位角天线)和M1(仰角天线)中的每个检测到的物体,它执行以下步骤: 从M1到M3的仰角天线阵列的复数FFT。 从M0到M2的方位角天线阵列的复数FFT。 从M0到M1的阵列方位角天线的对数FFT(覆盖步骤1的输入)。执行此步骤是为了找到峰值。峰的位置用于查找以上两个步骤中的计算输出,以获得方位角和仰角峰点,分别在“ 到达估计的方向(x,y,z)”中分别称为P1和P2。 当前,FFT的大小由MMW_NUM_ANGLE_BINS进行硬编码和定义。如果Tx高程天线的数量等于零(无高程),则仅执行上面的步骤2。 九、高精度2D处理对应的到达FFT计算方向 要进行更高精度的2D处理,请记住在2D FFT阶段,  HWA无需输出格式化为16位数据即可计算对数幅度和2D FFT,以保留CFAR检测的分辨率。 它仅保存rangeDoppler矩阵,而雷达立方体却被一维FFT数据填充。 在CFAR和峰分组阶段之后,  将针对检测到的对象重新计算2D FFT。 其余角度估计和高程估计与对应于低精度2D处理的到达FFT计算的数据路径方向相同。 在图中: A是MMW_EDMA_2DFFT_SINGLERBIN_CH_ID, B是MMW_EDMA_2DFFT_SINGLERBIN_CHAIN_CH_ID A_shadow是MMW_EDMA_2DFFT_SINGLERBIN_SHADOW_LINK_CH_ID B_shadow是MMW_EDMA_2DFFT_SINGLERBIN_SHADOW_LINK_CH_ID2 十、到达估算方向(x,y,z)                                         图A:坐标几何                                     图wz                                                 图wx 几何图显示x,y,z轴相对于传感器/天线位置的方向。目的是估计每个检测到的对象的(x,y,z)坐标。wx是2D FFT的连续接收方位角天线wz之间的相位差,是方位角和该方位角天线上方相应仰角天线之间的相位差。每个天线的相位在多普勒图中显示。图_wz显示,距离AB代表相交连续高程天线的波阵面之间的相对距离 因此 因此 注意,与上天线相比,下天线的相位提前了,这就是图片X在上天线中显示-Wz项的原因。图_wx显示其表示波阵面相交的连续方位天线之间的相对距离的距离CD 因此因此对于单个障碍物,在8个方位角天线处的信号将为(A1并且ψ是在第一个天线处的任意起始振幅/相位): 上述信号的FFT将产生的峰P1在wx与该峰是的相位ψ即 如果是表示为范围签署指数数幅度FFT峰的指数,然后wx将 4个仰角天线处的信号将为: 上述信号的FFT将产生的峰在与该峰存在的相 从上面, 因此, 计算范围(以米为单位)为: 其中,c是光速(m / sec),是范围索引,是采样频率(Hz),S是线性调频斜率(Hz / sec),是1D FFT大小。基于对上述计算R,并且将(x,y,z)可作为看到计算出的物体的位置几何图,(x,y,z)每个对象的计算出的峰峰值和方位角分别填充在MmwDemo_DataPathObj :: objOut中的相应位置,然后将其运送到UART端口(MmwDemo_transmitProcessedOutput)上。为了能够检测到具有相同距离多普勒指数但角度不同的两个对象,请在方位角FFT中搜索第二个峰,并将其高度与第一个峰高进行比较,如果检测到,则在列表中创建新的对象相同的范围/多普勒指数,并重复上述步骤以计算(x,y,z)坐标。要启用/禁用两个峰值检测或更改检测阈值,请参考MMWDEMO_AZIMUTH_TWO_PEAK_DETECTION_ENABLE和MMWDEMO_AZIMUTH_TWO_PEAK_THRESHOLD_SCALE。    

  • 2019-12-06
  • 加入了学习《浅谈毫米波雷达芯片的选型因素》,观看 浅谈毫米波雷达芯片的选型因素

  • 发表了主题帖: 【TI毫米波雷达测评】SDK及例程下载

    本帖最后由 a736015 于 2019-12-6 09:38 编辑 IWR1443BOOST开箱测试:http://bbs.eeworld.com.cn/thread-1101610-1-1.html   一、软件下载          1、mmWave  SDK下载链接:http://www.ti.com.cn/tool/cn/MMWAVE-SDK          mmWave SDK目前的最新版本是3.03.00.03,下载的例程采用的SDK是2.01.00.04版本,所以我下载的2.01.00.04版本。 2、CCS编译器下载链接:http://software-dl.ti.com/ccs/esd/documents/ccs_downloads.html CCS目前的最新版本是9.2.0.00013,mmWave  SDK需求的的CCS的最低版本是8.1.0。CCS可以根据自己需求下载合适的版本。 3、UniFlash下载:http://www.ti.com.cn/tool/cn/UNIFLASH UniFlash有v3.4.1和v5.2.0 两个版本,为了兼容mmWave传感器,只能下载v5.2.0 版本的软件。 二、例程下载 打开安装好的CCS软件 在CCS软件的点击菜单“View”中的“Resource Explorer”打开资源管理器 在打开的资源管理器中,选择“Software”中的“mmWave  Sensors”,双击“mmwave_industrial_toolbox-V:4.1.0” 在“mmwave_industrial_toolbox-V:4.1.0”的右侧有下载图标,点击下载图标 在弹出的窗口中选择“Dowmload and install”进行下载安装 进入下载及安装的状态,可能需要几分钟的时间进行下载和安装。 下载及安装完成后,点击“OK“。 下载后的SDK可以在C盘中的ti文件夹中找到(C:\ti). mmwave_industrial_toolbox_4_1_0包含的所有文件都会被下载下来。 例程在labs文件夹里面 三、例程的导入和编译 打开CCS编译器,在菜单“Project”中的“Import  CCS  Projects…”进行例程的导入 在弹出的“Import  CCS  Projects”窗口中的“Select  search-directory”,点击右边的“Browse…”按钮 在弹出的“Select  Search  Directory”窗口中选择要打开的例程(这边以out_of_bos_demo中的14xx_mmwave_sdk为例),选择好文件夹后点击“选择文件夹” 选择好例程后,在“Import  CCS  Projects”窗口中的“Discovered projects”中勾选工程名称,在点“Finish”导入工程。 导入工程后CCS的界面如下图所示 导入工程后,在工程名上右键点击“Rebuild  Project”进行工程重新编译。(不要选择“Build  Project”,不然可能报错) 重新编译完成后,可以在“console”窗口中查看编译信息 同时,可以在“Debug”中找到编译后的文件(xwr14xx_mmw_demo.bin和xwr14xx_mmw_demo_mss.xer4f) 四、固件下载 把开发板的SOP0和SOP2接上条线帽,给开发板供电(5V,>2.5A),通过USB线连接到电脑。 打开UniFlash烧录软件 在UniFlash界面中,可以通过自动识别的开发板点击“Start”,也可以通过下方选择开发板平台。 选好要烧录的平台后,在“Program”的界面中,勾选“ Meta Image 1/RadarSS”,并在右侧的“Browse”按钮 在弹出的打开窗口选择需要烧录的二进制文件(xwr14xx_mmw_demo.bin)后打开 选择UniFlash中的“Settings & Utilities”,在“COM Port:”后输入端口号(XDS110 Class Application/User UART对应的端口号) 返回“Program”,点击“Load Image”进行烧录 开始烧录后,进入烧录进度 等待一会后,烧录进度条消失后,可以查看烧录情况 烧录完成后,开发板断电,拔掉SOP2的条线帽,在给开发板通电并通过USB连接电脑,就可以通过mmWave_Demo_Visualizer进行测试(测试方法见上一篇分享)。    

  • 2019-12-03
  • 发表了主题帖: 【TI毫米波雷达测评】IWR1443BOOST开箱测试

    本帖最后由 a736015 于 2019-12-5 10:03 编辑         Texas Instruments IWR1443BOOST毫米波传感器评估模块 (EVM) 是用于IWR1443毫米波传感器的简单易用评估板,可直接连接TI MCU LaunchPad™。该评估板包含开始开发低功率ARM®-R4F控制器所需的一切组件。该评估板包括用于编程和调试的板载仿真设计、板载按钮和LED,可快速集成简单用户界面。该评估板采用标准20引脚BoosterPack排针,因此兼容各种TI MCU LaunchPad,可轻松创建原型。不包含带2.1mm圆柱插头(中心正极)的5V 2.5A电源砖。建议购买符合适用地区安全标准的外部电源。        昨天拿到了 IWR1443BOOST,先来几张开箱照片。        包装正面         包装包装侧面,包含TI的标志,产地和型号。 内部材料:IWR1443BOOST开发板一块,支架一套,螺丝螺母若干,跳线帽2个,USB数据线一条, 支架组装后 开发板正面 开发板背面 开发板在官网上可以直接下载到Altium的源文件,6层板设计: 开发板需要5V供电电源,需要自备一个5V,电流大于2.5A的适配器,手头上刚好有5V4A的适配器。 测试需要软件: ftdi_driver:XDS110的驱动,官网可以下载。 gcruntime:安装mmWave_Demo_Visualizer前需要先安装gcruntime。 mmWave_Demo_Visualizer:由于公司电脑不能直接上网,所以下载了离线版的软件。后面会介绍下载链接。   gcruntime与mmWave_Demo_Visualizer下载链接:https://dev.ti.com/gallery/info/mmwave/,该网站内含有mmWave_Demo_Visualizer的所有版本。 更具自己需求,选择好合适的版本后,点击下载图标(红色圈圈) 点击下载图标后,会出来一个窗口,该窗口会有对应gcruntime的下载链接与mmWave_Demo_Visualizer下载链接,包括Linux、Windows和Mac 3个系统的下载链接。 软件下载安装完成后,把开发板上电病通过USB线连接电脑。打开mmWave_Demo_Visualizer,点击Options,选择Serial Port and Buad Rate进行串口设置。 在串行端口配置根据自己开发板连接的串口进行设置后点击OK。 mmWave_Demo_Visualizer会与开发板进行连接,是否连接上可以查看mmWave_Demo_Visualizer左下角图标。  未连接   已连接 确认mmWave_Demo_Visualizer与开发板连接后,在mmWave_Demo_Visualizer的configure里面选择平台、SDK版本及天线数量,以及场景参数的设置。点击SEND CONFIG TO MMWAVE DEVICE发送配置到开发板。 接下来选择mmWave_Demo_Visualizer的Plots选项,可以查看开发板测试情况(散点图、多普勒等) 在有下角的advanced commands界面可以向开发板发送命令,比如清除杂物,比较范围偏差等。 可发送的命令可以点击问号进行查看。 好了,今天先分享这里。  

  • 2019-12-02
  • 加入了学习《mmWave系列培训》,观看 3.3 mmWave 生命体征实验

  • 加入了学习《mmWave系列培训》,观看 3.2 mmWave 水 VS 地面分类实验

  • 2019-11-29
  • 回复了主题帖: TI毫米波雷达开发板测评活动入围名单出炉啦~

    确认可以完成申请时所评测内容,个人信息无误,感谢TI,感谢EE

  • 2019-11-28
  • 回复了主题帖: 获奖名单--【定向福利】有奖调查|是德科技问卷

    谢谢EE,谢谢是德,麻烦兑换成E金币。谢谢!

  • 2019-11-21
  • 加入了学习《世健的ADI之路主题游第三站:物联网(IoT)站》,观看 ADI - 适合工业物联网应用的无线传感器网络

  • 加入了学习《世健的ADI之路主题游第三站:物联网(IoT)站》,观看 ADI - 能量采集为物联网节点供电

  • 加入了学习《世健的ADI之路主题游第三站:物联网(IoT)站》,观看 ADI - 电化学气体检测平台

  • 2019-11-08
  • 回复了主题帖: 【获奖名单】答题有礼|一起学习 Mentor PCB 手册

    个人信息确认无误,感谢EE!

最近访客

< 1/3 >

统计信息

已有91人来访过

  • 芯币:34
  • 好友:--
  • 主题:7
  • 回复:58
  • 课时:--
  • 资源:--

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言