- 本课程为精品课,您可以登录eeworld继续观看:
- 2.4 mmWave 雷达编程模型
- 登录
- 课程目录
- 相关资源
- 课程笔记
大家好,欢迎参加雷达编程模型的
视频培训。
本培训面向使用毫米波雷达的
软件系统和测试工程师。
在此,我相信大家已经基本了解了
FMCW 雷达,如果还不了解,
我强烈建议大家重温有关 FMCW 的培训材料。
那么,我们开始吧。
本培训的目的是了解如何
对 TI 的毫米波器件进行编程。
本次培训主要重点介绍毫米波前端
或雷达部分。
我们将介绍 FMCW信号的基本知识,
并了解如何使用软件框架,
我们称之为 mmWaveLink,我们可以对前端进行编程。
这是 TI 的毫米波SDK 的高级方框图。
在本次培训中,我们将重点介绍两个主要块。
MmWave 前端:这是我们要进行编程的部分。
编程将使用mmWaveLink 框架来完成。
MmWave 前端是一个封装式系统,
它控制毫米波器件中的射频
和模拟硬件块,还负责
毫米波雷达的运行。
可以使用通过邮箱
传入的消息来配置其所有天线块
和运行。
mmWaveLink框架提供
生成这些消息的 API,
同时还处理与毫米波
前端的通信。
所以,您可以将 mmWaveLink视为毫米波前端的驱动
程序。
顾名思义,它是应用程序和毫米波
前端之间的链路。
它在 Cortex R4F或 DSP 上运行
并提供用于控制毫米波前端的低级
API。
mmWaveLink 框架:它独立于平台,
并且操作系统是不可知的,这基本上意味着
它可以移植到提供诸如 SBI 等
基本通信接口和基本操作系统
例程的任何外部微控制器上,
但此框架也能够在单一线程的环境中
运行。
总之,毫米波前端
在所有 TI 毫米波器件之间是通用的,
mmWaveLink 框架也是如此。
这是 mmWaveLink 框架中的一些 API 的快照,
在今天的活动中,我们将详细介绍这些 API。
概括地说,有两组 API:
设备管理器 API,这些 API 允许应用程序
控制毫米波前端、执行基本初始化
和与前端握手。
传感器控制 API允许应用程序
按照其用例控制毫米波前端。
在详细介绍传感器控制 API 之前,
让我们首先了解一下毫米波前端中
我们要进行编程的一些主要块。
在非常高的级别,毫米波前端
有这些核心块。
第一个块是线性调频脉冲序列发生器或雷达计时
引擎。
这个块负责在帧上构建
FMCW 线性调频脉冲,并控制 VCO
以生成这些信号。
Rx 和 Tx 通道定义需要启用
多少个接收通道和多少个发射通道。
它还定义可以为成像雷达
将多少重毫米波前端级联在一起。
Rx 模拟链定义接收的信号
与发射信号如何混合
以及如何对不同的 LNA和不同的滤波器
进行编程。
最后,ADC 和数字前端
定义如何采集IF 数据的样本
以便在DSP 或硬件
加速器中进一步处理。
相同的 ADC 数据可以通过 LVDS
或 CSI2 等高速接口发送到外部处理器。
稍等片刻,让我们回头看一下 FMCW 的基本知识。
FMCW 表示频率调制
连续波。
在一个非常独特的级别,可以将 FMCW 信号
视为频率斜升,或者我们称其为线性调频脉冲。
线性调频脉冲是以特定频率开始,
并且其频率随着时间而提高的信号。
您在此处看到的第一张图中,
x 轴是时间,y 轴是幅度,
它是一个正弦波,频率随着时间而提高。
第二张图中显示了同样的斜升,
其 x 轴同样是时间,但 y 轴是频率。
正如您看到的那样,这些线性调频脉冲以特定的频率开始,
并且其频率随着时间而提高。
频率的变化率
称为频率斜率或斜坡斜率。
让我们也看一下 FMCW 线性调频脉冲的其他主要特点。
斜坡时间定义斜坡开始到斜坡结束
之间的时间。
连同频率斜率一起,
它基本上定义线性调频脉冲带宽。
线性调频脉冲带宽是斜坡时间和频率
斜率的乘积。
另一个关键参数是空闲时间,
它定义两个连续线性调频脉冲之间的时间。
因此,斜坡开始到斜坡结束就是斜坡时间。
斜坡结束到下一个斜坡的开始就是空闲时间。
ADC 有效时间和 ADC 采样时间
定义您要在线性调频脉冲中的
什么时间点采集要由
DSP 或硬件加速器进行处理的数据样本。
同样,Tx 开始时间定义您要在什么时间点
启动您的发送器。
现在,让我们看一看这些线性调频脉冲特性
如何影响关键参数,例如距离分辨率、
IF 带宽和物体的
最大距离。
正如您所记住的那样,距离分辨率等于 c 乘以 2B,
其中 B 是线性调频脉冲的带宽。
因此,对于4 GHz 的带宽,
分辨率大约为 4 厘米,
其中 IF 带宽取决于线性调频脉冲斜率和最大距离。
因此,对于给定的 IF带宽,最大距离 dmax
与斜率成反比。
让我们借助一个示例来了解这一点。
假设定义两个线性调频脉冲 A1 和 A2。
两者都以相同的频率 77 GHz
开始。
线性调频脉冲 A1 的斜率为每微秒 68 MHz。
在大约 58 微秒的斜坡时间,
您得到大约4GHz 的带宽,
这基本上意味着 A1将会为您提供大约
4 厘米的距离分辨率,而 A2 具有相同的斜坡时间,
但斜率为 A1 的一半,这意味着 A2 的
带宽为 2 Ghz。
因此,您将得到大约 8 厘米的
距离分辨率。
但对于给定的IF 带宽,由于 A2 的
斜率是 A1 的一半,因此对 A2 来说,
物体的 dmax 或最大距离
将是 A1 的两倍。
了解了 FMCW 线性调频脉冲的基本知识后,
现在让我们了解一下如何使用这些线性调频脉冲
构建更大的 FMCW 信号,我们将其称为 FMCW 帧。
FMCW 帧本质上是一系列线性调频脉冲
以及此序列随时间的重复方式。
下面是 FMCW帧的几个示例。
在第一个帧中,只有一个线性调频脉冲,
该线性调频脉冲重复了若干次,形成了一个更大的 FMCW 帧,
而在第二个帧中,我们定义了两个线性调频脉冲,
它们可能具有不同的斜率,
并且重复了多次,形成了一个更大的帧。
同样,您可以定义多达512 个独特的线性调频脉冲,
然后将其序列化在一起以形成一个 FMCW 帧。
构建了该帧后,
我们需要定义此序列的重复方式。
因此您定义了帧周期和
需要传输的帧数。
现在让我们了解一下这个帧周期
和序列如何影响速率分辨率。
正如您所记住的那样,速度分辨率等于 λ
乘以 2Tf。
因此可以通过提高帧时间
来改善速度分辨率。
通常,5 毫秒的帧时间
将会得到每小时
1.5 公里的速度分辨率。
并且可以通过提高帧时间来改善此结果。
但提高帧时间
可能也意味着提高线性调频脉冲数,
因而需要进行更多处理,最终导致
功耗增加,因此需要考虑到这一点。
总之,FMCW 帧和线性调频脉冲
对于 FMCW 雷达的运行至关重要,
需要如何定义它们主要取决于
最终应用的用例,例如,
距离分辨率、最大距离、
速率分辨率和其他关键参数的
主要目标是什么。
现在,让我们了解一下如何在毫米波前端
器件中构建线性调频脉冲。
在此之前,让我们介绍另一个术语,
我们称之为线性调频脉冲剖面。
剖面本质上是一个模板,
它包含有关线性调频脉冲的过程信息。
因此,剖面包含诸如开始频率、
线性调频脉冲斜率、空闲时间、ADC 开始
时间等参数。
您可以定义多达四个这样的剖面。
定义了剖面后,您需要定义一个独特的线性调频脉冲。
要定义线性调频脉冲,您首先要将该线性调频
脉冲与特定的剖面相关联,这意味着该线性调频脉冲
将会继承该剖面中包含的所有信息。
在剖面中的过程信息之上,
您可以为其中的一些参数添加小细节,
例如开始频率、斜率、ADC 开始
时间和空闲时间,这意味着您可以
进一步微调剖面中包含的信息。
您还可以为每个线性调频脉冲定义使用哪个发射通道,
并为其中的每个发射通道定义
采用何种相位调制。
总之,要定义线性调频脉冲,
您首先要定义包含过程信息的剖面。
然后通过将线性调频脉冲与特定剖面相关联
来定义线性调频脉冲,并可以进一步
微调这些参数。
通过毫米波前端和 API,
您可以预先对线性调频脉冲和剖面
进行编程,以便可以对 FMCW 帧进行编程。
现在让我们通过一个示例来了解
如何在毫米波前端中使用 mmWaveLink 框架
构建特定的线性调频脉冲
并对其进行编程。
在本示例中,我们有一个线性调频脉冲,
其开始频率为 77 GHz,
斜坡时间为58 微秒,斜率为
每微秒 68 MHz,并且还有其他关键参数。
因此,要定义一个线性调频脉冲,我们首先需要像前面讨论的那样
定义一个剖面。
那么,这是 mmWaveLink框架内 c 结构的
快照。
我们首先定义一个剖面 ID 为 0 的剖面,
然后填充我们前面讨论的
其他关键参数。
我们定义开始频率、空闲时间、ADC 开始
时间和斜坡时间。
例如,空间时间的分辨率为 10 纳秒,
因此,要空间时间编程为 7 微秒,
我们需要将此值编程为 700。
同样,我们可以对其他关键参数进行编程。
让我们也看一下剖面结构中还有
哪些其他关键参数。
Tx 输出功率退让可以让您确定
是否要以全功率进行发射。
或者您可以在最大功率的基础上实施一些退让。
HPF 转角频率可以让您确定
高通滤波器的截止频率,
以便可以滤除较近物体产生的反射,
例如器件周围的包装
产生的反射。
Rx 增益允许您
配置 Rx 模拟链中的总增益。
使用剖面结构定义了所有这些参数后,
您需要使用 mmWaveLinkAPI 传递该
结构。
在本例中,API 是rlSetProfileConfig,
您在该 API 中传递这个剖面结构。
调用这个 API 后,mmWaveLink 框架
将会构造一条消息,并将其发送到
毫米波前端以对剖面进行编程。
现在,让我们使用 mmWaveLink 框架对两个线性调频脉冲进行编程。
这是 mmWaveLink 框架中的 c 结构,
其中包含线性调频脉冲信息。
要定义一个线性调频脉冲,我们需要定义开始和结束
索引。
在本示例中,它为 0,表示我们将只对一个
线性调频脉冲进行编程。
正如我们讨论过的,我们需要将该线性调频脉冲
与特定的剖面相关联,因此我们与刚才
使用 ProfileConfig API进行编程的剖面 0 关联。
然后,我们可以为关键参数添加小细节。
最后,我们需要配置
将在哪个发射通道上传输该线性调频脉冲。
那么在本示例中,我们在 Tx 0 上进行传输,
因此我们将该值编程为 1。
同样,我们定义第二个线性调频脉冲,
将其开始索引和结束索引定义为 1。
我们将该线性调频脉冲传输到 Tx 2,
而不是在 Tx 0 上传输。
因此我们将Tx 启用为 4。
定义了线性调频脉冲后,我们需要
调用 API,即rlSetChirpConfig,
它会向毫米波前端发送消息
以便配置这两个线性调频脉冲。
现在让我们使用这两个线性调频脉冲构建一个 FMCW 帧。
这是包含帧配置的
c 结构。
在此示例中,我们首先包括两个我们
用 ChirpConfiguration API定义的线性调频脉冲,
即线性调频脉冲 0 和线性调频脉冲 1。
然后我们将其重复32 次以形成一个帧。
正如我们讨论过的,我们需要定义该帧
随时间的重复方式。
因此我们定义了
帧周期和帧数。
如果您要无限地传输该帧,可以将它
设置为 0。
通过 triggerSelect参数,您可以对
传输的触发器类型进行编程。
那么,它可以是使用 API 的基于软件的触发,
或者您也可以允许使用硬件信号进行
帧传输,我们称之为 SYNC_IN。
通过帧触发延迟,您可以
对硬件信号和实际传输线性调频脉冲
之间的延迟进行编程。
填充了所有参数之后,
您需要调用 APIrlSetFrameConfig,
它将会在毫米波前端中配置该帧。
现在让我们了解一下如何在毫米波前端中
对其他关键块进行编程。
我们首先从通道配置开始。
使用通道配置,我们可以
配置需要在毫米波前端中
启用多少个接收器和发射通道。
例如,在 1243和 1443 中,
您可以配置多达4 个接收器通道和 3 个
发射通道,而在 1642 中,
您可以启用多达4 个接收器通道
和 2 个发射通道。
我们知道,毫米波前端
可以进行级联,为成像雷达
形成大的天线阵列。
因此,您可以配置前端是多线性调频
脉冲主器件还是从属器件。
在级联配置中,其中一个器件
通常是主器件,生成 LO 信号,
而其他器件是从属器件,接收高频
LO 信号以进行帧传输。
所有这一切都可以使用通道配置 API 进行
配置。
现在让我们使用mmWaveLink API
配置 ADC 和数字前端。
通过 ADC 配置,我们可以配置
毫米波前端的输出。
因此,我们可以配置ADC 样本的大小,
例如 12 位、14位或 16 位,
并且我们还可以配置
输出数据的格式。
因此,我们可以将其配置为实数数据或复数数据。
如果是复数 1x,前端会滤除
图像频带,而如果是
复数 2x,则会同时发送图像频带和
[? 频带内 ?]。
由于在复数1x 的情况下
图像频率会被滤除,并且由于图像频带
包含干扰信息,
因此毫米波前端还能够以单独的
数据包形式构建此信息,我们将此
称为线性调频脉冲质量或 CQ。
因此,可以将前端配置为
也接收 CQ 数据。
这样,我们便完成了毫米波前端
配置。
所有配置都完成后,
我们可以使用这两个 API 来
开始和停止FMCW 帧的传输。
如果是 1243,则也需要将 ADC 和
其他数据发送到外部处理器以便
进一步处理。
此处的图表显示了数据路径模块中的不同块。
您可以看到,数字前端
生成三种类型的数据。
一种类型是来自每个 Rx通道的原始 ADC 数据。
与该数据一起,还将生成线性调频脉冲剖面。
线性调频脉冲剖面包含有关
ADC 数据属于所配置的
哪个剖面的信息。
它还包含线性调频脉冲数。
因此,接收器可以使用此信息
对 ADC 数据进行簿记和处理。
正如我们讨论过的,线性调频脉冲质量
包含适用于ADC 数据
质量的干扰、ADC 饱和以及其他关键参数。
因此在本次课程中,我们将讨论如何
配置这些数据路径模块以便将数据发送到
外部处理器。
那么,我们首先讨论数据路径配置。
我们需要配置的第一个事项
是数据传输接口。
毫米波前端支持两个高速接口:
CSI2 或 LVDS。
连同这个接口选择一起,
我们还需要配置需要发送的
数据类型,即您是要
只发送 ADC数据,还是要
连同发送CP 和 CQ 数据,
如果您想要发送所有这些数据,则您想要
以什么顺序发送数据。
前端还允许您在两个不同的
数据包中发送此数据。
因此,您可以发送数据包 0 和数据包 1,
其中包含 ADC 数据或者 CP_CQ 数据。
因此,这有助于在接收器中 [? 更好地 ?]
管理 ADC 和 CP_CQ数据并降低
[? 传递 ?] 开销。
例如,在 CSI2 的情况下,包含 ADC 数据的
数据包 0 在虚拟通道 0 上发送,
而包含 CP 和 CQ数据的数据包 1
可以在虚拟通道 1 上发送。
因此,这将有助于在接收器上接收数据
并轻松 [? 传递 ?] 数据。
我们需要配置的下一项内容
是高速接口的数据速率。
那么,这些是器件针对
高速接口而支持的数据速率,
例如 CSI2 和 LVDS。
这些是每个通道的数据速率。
在配置数据速率时,
我们还需要知道毫米波
前端的配置。
前端将会根据样本数
并基于斜坡持续时间
生成数据,并将该数据
移动到 ADC 缓冲器,这是一个乒乓缓冲器。
在发送乒缓冲器中的数据时,
数据速率应足够高,
以便在数据完全发送前,乒缓冲器能够
在下一个线性调频脉冲之前接收到数据。
这些是为毫米波前端
所完成的配置。
还需要对数据路径完成相同的配置。
除了此配置外,
我们还可以配置在复数采样情况下
是否需要捆绑 I数据和 Q 数据。
此外,我们可以配置
是以交错模式还是以非交错
模式发送数据。
在使用交错模式的情况下,
来自所有接收器的样本 0
将存储在一起并发送,而在使用非交错
模式的情况下,来自 1 个接收器的
样本存储在一起并发送,随后
发送来自 [? 其他 ?] 接收器通道的所有样本。
最后,我们需要配置
需要启用多少个通道以便在此接口上
发送数据。
那么,我们可以启用通道 0 和通道 1 或者通道 0 和通道 2。
我们也可以启用使用此 API 的所有通道。
这样,我们便完成了关于雷达编程模型的
培训课程。
总之,为了对 TI毫米波器件编程,
我们首先需要使用器件管理器 API
初始化器件和前端。
然后,我们需要使用传感器控制
API 对毫米波前端和天线块编程。
如果是 1243,由于需要
将 ADC 数据发送到外部处理器,
我们还需要配置高速接口,
例如 CSI2 或 LVDS。
所有配置都完成后,
我们可以使用 SensorStartAPI 启动该帧。
mmWaveLink 框架的源代码和 Doxygen 文档
是 mmWave SDK的一部分,
深入细致地介绍了我们讨论的
每个 API。
对此,我希望这次培训对您有所帮助,
并让您深入了解了如何对TI 毫米波器件编程。
真诚地感谢您观看本培训视频。460
课程介绍
共计14课时,3小时38分23秒
猜你喜欢
换一换
推荐帖子
- 想开发蓝牙灯控系统,嵌入式开发板蓝牙控制多盏灯的问题
- 最近想做这个课题,用一个嵌入式开发板,单片机、ARM、树莓派、Arduino等都可以,然后买几个蓝牙灯泡,然后让开发板蓝牙连接这些蓝牙灯泡,并控制灯泡的开、关、亮度调节。 现在遇到问题,我用树莓派已经蓝牙连接上这些灯泡,但是不知道怎么去控制灯泡,也不知道控制命令是什么。 请问应该怎么解决,有什么好的开发方案吗? 请教高手,谢谢! ...
- bfield 无线连接
- 如何操作U1和U2口
- LM3S9B90有3个串口。按照Stalleris给出的例程操作U0口毫无问题。但按同样的流程操作U1和U2串口就不行,根本不通。因为U0口默认是使用PA0和PA1脚,且只能使用这两个脚。但U1和U2就不同了,可以使用多个管脚。但如何把某个管脚明确地分配给某个串口,我没找到具体的库函数,也没有相关例程(网上下载的周立功的教程倒是有操作U2的,但也是不对的,照着做根本不通,那是操作U0的方法)。请行...
- dlyltm 微控制器 MCU
- Blackfin DSP学习心得与参考资料
- 学习DSP,特别是Blackfin系列的,没数据手册简直是没法学的。 该系列基本上只有英文资料,而就我目前翻过的所有教材基本上都是从数据手册上摘录一个片段,翻译一下就完事了,连个总结都没有。很多关键的地方(比如中断),要想理解完整,必须同时参考多个数据手册,因此只看教材基本上是云里雾里的。 附件里是bf548与bf533的相关手册,与bf561大部分是一样的。bf561是双核的,在编译与链接库...
- Jacktang DSP 与 ARM 处理器
- TMS570LS 如何配置PBIST、STC和ESM?
- 看TI的技术支持,好像HALCoGen支持PBIST和STC的配置,有没有哪个大神给讲一下,到底怎么配置的?? 还有那个ESM的怎么用?HALCoGen配置完,在怎么写程序??...
- xp1678 微控制器 MCU