工具与软件:
我们要参考示例代码 radar_toolbox_2_10_00_04-Kick_to_Open
添加了 MMWAVE_L_SDK_05_05_00_02 - drivers\mcan\mcan_external_read_write
但性能似乎不够、无法正常工作! 您是否有任何其他建议或参考资料?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具与软件:
我们要参考示例代码 radar_toolbox_2_10_00_04-Kick_to_Open
添加了 MMWAVE_L_SDK_05_05_00_02 - drivers\mcan\mcan_external_read_write
但性能似乎不够、无法正常工作! 您是否有任何其他建议或参考资料?
下面是一个代码片段:
char *radarCmdString[MAX_RADAR_CMD] = {
"sensorStop 0 \n\r",
"channelCfg 3 3 0 \n\r",
"chirpComnCfg 21 0 0 128 1 34 0 \n\r",
"chirpTimingCfg 8 20 0 102.98 77 \n\r",
"frameCfg 2 0 200 128 70 0 \n\r",
"sigProcChainCfg2 32 32 1 0.6 1.4 25 4 1 1 \n\r",
"cfarCfg 2 8 3 3 0 7.5 1 0 1 1 0 0 \n\r",
"aoaFovCfg -80 80 -45 45 \n\r",
"rangeSelCfg 0.2 3.4 \n\r",
"cfarMinorMotionCfg 2 8 3 3 7.5 1 \n\r",
"adcDataSource 0 C:/ti/mmwave_lp_sdk/examples/datapath/common/testBench/gesture_recognition_adc_data/radar_data_35frames.bin \n\r",
"adcLogging 0 \n\r",
"boardTiltAngle 0 \n\r",
"pointCloudEnable 1 \n\r",
"guiMonSel 1 1 0 1 \n\r",
"presenceDetectCfg 1 1500 9000 10 \n\r",
"lowPowerCfg 1 \n\r",
//"lowPowerCfg 0 \n\r",
"factoryCalibCfg 1 0 40 0 0x1ff000 \n\r",
"baudRate 1250000 \r\n",
"sensorStart 0 0 0 0 \n\r",
};嗨、Johnny、
根据您的配置、手势模式下的处理时间不应超过6ms。 我强烈建议通过 STATS TLV 或检查 gMmwMssMCB.outStats.interFrameProcessingTime 来验证处理时间。 在后一种方法的情况下、您还必须使用 lowPowerCfg 禁用低功耗模式、以确保调试器不会断开连接。
您是否还检查了通过 CAN 传输数据所需的时间?
此致、
Kristien
您的意思是"frameIdleTime"吗?
static int32_t CLI_MMWaveFrameCfg(int32_t argc, char *argv[])
{
/* Sanity Check: Minimum argument check */
if (argc != 7)
{
CLI_write("Error: Invalid usage of the CLI command\n");
return -1;
}
/* Populate the frame configuration: */
gMmwMssMCB.frameCfg.h_NumOfChirpsInBurst = atoi(argv[1]);
gMmwMssMCB.frameCfg.c_NumOfChirpsAccum = atoi(argv[2]);
gMmwMssMCB.burstPeriod = atof(argv[3]); // us
gMmwMssMCB.frameCfg.h_NumOfBurstsInFrame = atoi(argv[4]);
gMmwMssMCB.frameCfg.w_FramePeriodicity = ((atof(argv[5])) * gSocClk) / 1000; // x crystal_clk_MHz x 1000
gMmwMssMCB.frameCfg.h_NumOfFrames = atoi(argv[6]);
frameIdleTime = (gMmwMssMCB.frameCfg.w_FramePeriodicity * 0.025 - (double)(gMmwMssMCB.burstPeriod * gMmwMssMCB.frameCfg.h_NumOfBurstsInFrame)) / (1000 * 1.0);
if (frameIdleTime < 16) // Check if the frame idle time is less than 16ms (assuming 5ms for processing and 10ms as set in syscfg for deep sleep)
{
flagConditionalSwitch = 1;
}
if (gMmwMssMCB.frameCfg.h_NumOfBurstsInFrame > 128)
{
CLI_write("Error:Max number of bursts supported for this demo is 128\n");
return -1;
}
gMmwMssMCB.frameCfg.w_BurstPeriodicity = 10.0 * gMmwMssMCB.burstPeriod;
return 0;
}
根据上述计算、 frameIdleTime = 44.4ms
此外、根据原始样片程序、我将 lowPowerCfg 设置为0、而系统无法正常运行。
我将测试捕获 CAN 传输所需的时间。
嘿、Johny、
请在下面查看我的回答:
您的意思是"frameIdleTime"吗?
否、frameIdleTime 是 线性调频脉冲之外花费的时间量的估算 这包括处理时间、但也包括可能在低功耗模式下花费的非活动时间。 帧间处理时间 是 测量的处理时间 不是估计值。
此外、根据原始样例程序、我将 lowPowerCfg 设置为0、系统无法正常运行。
要了解、在这种情况下、我建议使用下的雷达工具箱应用可视化工具 /tools/visualizers Applications_Visualizer / Body_And_Chassis_Visualizer /并启用将数据保存到文件的功能。 然后、您可以保持 lowPowerCfg 设置为1、但确保 guiMonSel 的最后一个参数设置为1、从而输出统计信息 TLV。 该值将保存到 binData 文件夹中。
此致、
Kristien
如何计算处理时间= 6ms?
通过 CAN 发送数据需要476 us。
谢谢!
///========= //
uint32_t i100,iProcessingTime; Stamp_Start
iLAN Stamp_Start = Cycleprofiler_getTimeStamp();
app_mcanTxRx();
iProcessingTime =(Cycleprofiler_getTimeStamp ()- i441)/FRAME_REF_TIMER_CLOCK_MHZ Stamp_Start;
CLI_WRITE ("Johnny:处理时间为:%d us。 \n",iProcessingTime);
///========= //
Johnny:处理时间是:476 us。
嗨、Johnny、
如何计算处理时间= 6ms?
处理时间的计算方法是、在线性调频脉冲结束并生成雷达立方体后立即获取时间戳( interFrameStartTimeStamp、然后再执行所有 DPU)。 然后、它在执行最终 DPU 后获取一个时间戳、并从该时间戳中减去初始时间戳以获得总处理时间。 对于脚踢开启、处理时间不包括分类器处理、但分类步骤在这里几乎没有作用。
根据设置、CAN 总线处理时间似乎太长、导致传输 COM 端口超时、binData 文件夹中未生成数据。
控制台中显示的误差可能不是由于 CAN 传输时间(如果它只花费大约500us)所致。 CAN 消息到底何时发送?即、是在 UART 之前或之后调用 App_mcanTxRx? 您可以设置在 UART 完成传输后发送的 CAN 消息。
此致、
Kristien
我按照建议的位置操作、但收到一条错误消息
"错误:没有足够的时间进入低功耗模式。"

检查"demoTimeus"值。
正常状态:
Johnny:slpTimeus:0.000000 us、frmPrdus:70000.000000 us、demoTimeus:41480.000000 us。
Johnny:slpTimeus:0.000000 us、frmPrdus:70000.000000 us、demoTimeus:412000000 97.us。
Johnny:slpTimeus:0.000000 us、frmPrdus:70000.000000 us、demoTimeus:41327.500000 us。
Johnny:slpTimeus:0.000000 us、frmPrdus:500000.000000 us、demoTimeus:41144.500000 us。
Johnny:slpTimeus:0.000000 us、frmPrdus:500000.000000 us、demoTimeus:12474.500000 us。
Johnny:slpTimeus:0.000000 us、frmPrdus:500000.000000 us、demoTimeus:12474.500000 us。
Johnny:slpTimeus:0.000000 us、frmPrdus:500000.000000 us、demoTimeus:12474.500000 us。
Johnny:slpTimeus:0.000000 us、frmPrdus:500000.000000 us、demoTimeus:12474.500000 us。
Johnny:slpTimeus:0.000000 us、frmPrdus:500000.000000 us、demoTimeus:12474.500000 us。
Johnny:slpTimeus:0.000000 us、frmPrdus:500000.000000 us、demoTimeus:12474.500000 us。
Johnny:slpTimeus:0.000000 us、frmPrdus:500000.000000 us、demoTimeus:12474.500000 us。
Johnny:slpTimeus:0.000000 us、frmPrdus:500000.000000 us、demoTimeus:12474.500000 us。
Johnny:slpTimeus:0.000000 us、frmPrdus:500000.000000 us、demoTimeus:12474.500000 us。
Johnny:slpTimeus:0.000000 us、frmPrdus:70000.000000 us、demoTimeus:12474.500000 us。
Johnny:slpTimeus:0.000000 us、frmPrdus:70000.000000 us、demoTimeus:41175.000000 us。
Johnny:slpTimeus:0.000000 us、frmPrdus:70000.000000 us、demoTimeus:41327.500000 us。
打开 App_mcanTxRx()状态:
Johnny: slpTimeus:0.000000 us, frmPrdus:500000.000000 us, demoTimeus:12932.000000 us.
Johnny:slpTimeus:0.000000 us、frmPrdus:500000.000000 us、demoTimeus:2597000000 38.us。
Johnny:slpTimeus:0.000000 us、frmPrdus:500000.000000 us、demoTimeus:308507.500000 us。
Johnny: slpTimeus:0.000000 us, frmPrdus:500000.000000 us, demoTimeus:12932.000000 us.
Johnny: slpTimeus:0.000000 us, frmPrdus:500000.000000 us, demoTimeus:12932.000000 us.
Johnny:slpTimeus:0.000000 us、frmPrdus:500000.000000 us、demoTimeus:259555.000000 us。
Johnny: slpTimeus:0.000000 us, frmPrdus:500000.000000 us, demoTimeus:308294.000000 us.
Johnny: slpTimeus:0.000000 us, frmPrdus:500000.000000 us, demoTimeus:12932.000000 us.
Johnny: slpTimeus:0.000000 us, frmPrdus:500000.000000 us, demoTimeus:12932.000000 us.
Johnny:slpTimeus:0.000000 us、frmPrdus:500000.000000 us、demoTimeus:259341.500000 us。
Johnny:slpTimeus:0.000000 us、frmPrdus:500000.000000 us、demoTimeus:309056.500000 us。
Johnny: slpTimeus:0.000000 us, frmPrdus:500000.000000 us, demoTimeus:12932.000000 us.
Johnny: slpTimeus:0.000000 us, frmPrdus:70000.000000 us, demoTimeus:12932.000000 us.
Johnny:slpTimeus:0.000000 us、frmPrdus:70000.000000 us、demoTimeus:288316.500000 us。
错误:没有足够的时间进入低功耗模式。
我尝试调整"frameCfg 2 0 200 128 70 0 \n\r"、 第五个参数没有改善。
12932 - 12474.5 = 457.5us (CAN 传输时间)
CAN 总线处理程序似乎没有固定的时间。