当前位置: 首页 > news >正文

TI毫米波雷达开发 —— 串口输出数据解析

TI毫米波雷达开发 —— 串口输出解析

  • TLV协议
    • 协议概述
      • Header
      • Body
      • Padding

TI 毫米波雷达芯片计算的结果数据都会从UART发出供上位机进行解析并展示。解析和展示是两个不同的概念,解析指提取有效数据并转换成常见的度量值。展示指数据的可视化。
由于雷达这个领域的特殊性,很多时候理解雷达要拿摄像头类比,在雷达和摄像头的眼里都是“图像”数据,只不过摄像头展示出来的“图像”贴近真实世界,而雷达则在用它自己的视角展示着他看到的“世界”。二者都是对客观世界的反应,只不过形式有所区别,如下图左和图右。

在这里插入图片描述

TI 的毫米波雷达提供了很多的Demo用于功能演示和快速评估,配套相关的GUI也都具备上述 数据解析和展示 两种功能,根据不同的应用特点和类型做对应的处理。由于不同的应用需要关注的数据不同,如数据长度和类型,因此自然而然就引出了TLV协议。

TLV协议

TLV 协议是一种可以适应变长数据传输的常见协议格式,在诸多领域中均有应用。TLV(Type-Length-Value),即该协议由类型字段、长度字段和值字段组成。类型字段指代该数据的类型,长度字段指代值的长度,值字段包含了实际的数据。相比于固定字段和固定长度的数据的协议,TLV在TI mmWave 这种需要灵活性的场景中显的尤为得心应手。

协议概述

TLV 协议包含 Header - Body- Padding三大部分,如下图所示,接下来我们逐渐介绍这三部分的内容。

Header

接下来我们详细看下Header部分由哪些内容构成:

名称数据类型占用字节说明
magicWorduint16_t * [4]8输出缓冲区MagicWord(同步字),初始化为 {0x0102, 0x0304, 0x0506, 0x0708} ,可以用来区分一帧的起始,值无实际意义。
versionuint32_t4软件SDK版本,与芯片中运行的SDK版本相关,一般如 20 00 00 04等。
totalPacketLenuint32_t4包括头部(Header)的数据包总长度(以字节为单位),这个可以用来做数据的校验和区分。
platformuint32_t4芯片类型,AWR1642为1642
frameNumberuint32_t4帧编号 , TLV会连续发送数据包,每发送一个数据包帧编号加一,可以用来判断帧是否存在丢帧的情况。
timeCpuCyclesuint32_t4创建消息时的 CPU 周期时间。对于 XWR16xx:DSP CPU 周期,对于 XWR14xx:R4F CPU 周期
numDetectedObjuint32_t4检测到目标数量
numTLVsuint32_t4TLV 的数量
subFrameNumberuint32_t4对于高级帧配置,这是子帧编号,范围为 0 到(子帧数 - 1)。对于帧配置(非高级),始终设置为 0

Body

Padding

整个TLV包需要满足32Bytes对齐的要求。整个包长必须是32字节的整数倍。Padding部分就是用来填充字节用于让整个包长满足32Byte字节整数倍的要求,所以Padding部分的字节并没有实际的意义。

TI常见的Type 如下表所示:
在这里插入图片描述


http://www.mrgr.cn/news/93703.html

相关文章:

  • 09第三方库的使用
  • VBA 数据库同一表的当前行与其他行的主键重复判断实现方案
  • 迅投miniQMT量化交易之【网格交易】的实现(七)——__init__()方法
  • 【网络】HTTP协议、HTTPS协议
  • 【linux网络编程】套接字编程API详细介绍
  • 08动态库与静态库
  • element-plus中table组件的使用
  • 算法进阶——双指针
  • c语言笔记 数组进阶题目的理解
  • 渗透测试之利用sql拿shell(附完整流程+防御方案)【上】
  • OpenManus:开源版Manus的快速安装及使用「喂饭教程」
  • 数据结构--【顺序表与链表】笔记
  • python中如何正确进行浮点数的大小比较
  • 【让POSTGRESQL支持MS SQLSERVER的 extension】 Babelfish for PostgreSQL介绍及源码安装
  • 数据库原理6
  • mysql8.0使用PXC实现高可用部署
  • 【Git】创建,切换分支
  • 华为配置篇-OSPF基础实验
  • Spark八股
  • 【基础知识】回头看Maven基础