目录
0.准备工作
在不使用采集板的情况下,怎么去解析AWR1642 data port打印的数据流,我使用到的工具有串口助手(用于串口数据的打印与查看)、mmw Demo Data Structure v0.1.pdf(这个我的资源有上传https://download.youkuaiyun.com/download/hali52013/12819379)、SDK包中的C:\ti\mmwave_sdk_01_02_00_05\packages\ti\demo\io_interface目录下的mmw_output.h文件、还有目录C:\ti\mmwave_sdk_01_02_00_05\packages\ti\demo\xwr16xx\mmw\common下的mmw_messages.h文件、最后就是目录C:\ti\mmwave_sdk_01_02_00_05\packages\ti\demo\xwr16xx\mmw\docs\doxygen\html下的index.html文件,以上目录是因为我把SDK安装到C盘,所以各位可以根据自己找到自己安装的SDK目录下相应文件。
1.抓取数据
在准备好上述文件后,开始将板子中的bin文件烧录为官方SDK中的demo目录下对应的bin文件,我这里使用的串口调试助手为如下:
这里需要强调的一点是需要将波特率设置为921600,不然接受到的串口数据无法解析,烧录好相应的bin文件,使用mmWave Demo Visualizer将开发板配置发送进去,启动雷达卡发板,然后关闭mmWave Demo Visualizer,使用串口助手连接你的data port,一定要16进制显示,不然会是一堆字符乱码。显示一大堆数据后,保存数据即可;其实还有一种方式可以获取到数据,在mmWave Demo Visualizer软件的plot界面有个record按钮,如下图,点击保存也可以有相应的数据,不过保存的的文件为.dat格式的文件,可以用winHex软件打开。
2.分析数据
在前面的一大堆准备工作做完后,开进入真正的主题——分析数据
接收下来的一大堆数据的如下面所示,刚开始我也是不知所措,不知道哪块对应哪块,比较慌。
所以这个时候之前准备的文档就起到了参看手册的作用,首先需要了解数据每一帧有多大,帧头、帧尾、信息都包含了什么
帧头看文档mmw_output.h,里面有个MmwDemo_output_message_header_t的结构体,介绍了帧头的结构信息是什么。包括含
如下图就是解析出来的帧头数据信息:
找完帧头就是找帧尾了,帧尾其实很简单找,就是一堆F的填充。主要从demo文件中的mss_main.c的代码可以看出:
到这里帧头和帧尾都找到了,接下来就是解析中间的信息了。
中间信息搞清楚必须要了解一帧数据的构成,这个时候mmw Demo Data Structure v0.1.pdf文档就起到关键的作用了
一帧数据包括8个部分,我们只是分析了第一个Header部分和最后一个Padding Bytes 部分
接下来是最重要的部分是Detected Objects,这部分的数据格式是TLV格式的数据
在index.html页面中主要由上图中的三个结构体构成数据,对应的代码也可以在网页中点击结构体跳转,下面是我解析的一段示例:
验证自己分析的数据对不,可以看字节数相加是否等于标定的数据包的长度,这里的公式为 (4+目标数*12)字节,和上图中0x34(52)是否相等。注意一点就是:数据的大小端,还有数据是以16进制显示的
接下来是Range Profile部分的数据解析,这部分的数据我看官方手册有个bug,不知道是按照
上图中的8+(# of range bins)2还是8+(# of range bins)4来解析,我这里按照后面的来解析的。这里涉及到一个range bins,它是
log 2(ADCsamples),这个ADCsamples为配置文件.cfg中profileCfg的倒数第五个数。这是根据查看mmwave_sdk_user_guide.pdf看到的。这段数据的代码暂时没有看到具体的解析。
后面部分的数据也是按照mmw Demo Data Structure v0.1.pdf解析出来的,解析数据时一定要先看代码部分,因为最标准的是代码,其次是数据结构手册,其中我就发现头结构中,代码就和手册有四个字节的出入,多了一个变量。这对后的数据解析很重要。希望大家多交流学习,这是我的一点学习分享。