2.4 mmWave雷达编程模型
Loading the player...
将在30s后自动为您播放下一课程
大家好,欢迎参加 雷达编程模型的 视频培训。 本培训面向 使用毫米波雷达的 软件系统和 测试工程师。 在此,我相信大家 已经基本了解了 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 模拟链 中的总增益。 使用剖面结构定义了 所有这些参数后, 您需要使用 mmWaveLink API 传递该 结构。 在本例中,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。 通过帧触发 延迟,您可以 对硬件信号和实际 传输线性调频脉冲 之间的延迟 进行编程。 填充了所有 参数之后, 您需要调用 API rlSetFrameConfig, 它将会在毫米波 前端中配置该帧。 现在让我们了解一下 如何在毫米波前端中 对其他关键块进行编程。 我们首先从 通道配置开始。 使用通道配置, 我们可以 配置需要在 毫米波前端中 启用多少个接收器 和发射通道。 例如,在 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。 所有配置 都完成后, 我们可以使用 SensorStart API 启动该帧。 mmWaveLink 框架的源代码 和 Doxygen 文档 是 mmWave SDK 的一部分, 深入细致地介绍了 我们讨论的 每个 API。 对此,我希望这次 培训对您有所帮助, 并让您深入了解了如何对 TI 毫米波器件编程。 真诚地感谢您 观看本培训视频。
大家好,欢迎参加 雷达编程模型的 视频培训。 本培训面向 使用毫米波雷达的 软件系统和 测试工程师。 在此,我相信大家 已经基本了解了 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 模拟链 中的总增益。 使用剖面结构定义了 所有这些参数后, 您需要使用 mmWaveLink API 传递该 结构。 在本例中,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。 通过帧触发 延迟,您可以 对硬件信号和实际 传输线性调频脉冲 之间的延迟 进行编程。 填充了所有 参数之后, 您需要调用 API rlSetFrameConfig, 它将会在毫米波 前端中配置该帧。 现在让我们了解一下 如何在毫米波前端中 对其他关键块进行编程。 我们首先从 通道配置开始。 使用通道配置, 我们可以 配置需要在 毫米波前端中 启用多少个接收器 和发射通道。 例如,在 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。 所有配置 都完成后, 我们可以使用 SensorStart API 启动该帧。 mmWaveLink 框架的源代码 和 Doxygen 文档 是 mmWave SDK 的一部分, 深入细致地介绍了 我们讨论的 每个 API。 对此,我希望这次 培训对您有所帮助, 并让您深入了解了如何对 TI 毫米波器件编程。 真诚地感谢您 观看本培训视频。
大家好,欢迎参加 雷达编程模型的
视频培训。
本培训面向 使用毫米波雷达的
软件系统和 测试工程师。
在此,我相信大家 已经基本了解了
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 模拟链 中的总增益。
使用剖面结构定义了 所有这些参数后,
您需要使用 mmWaveLink API 传递该
结构。
在本例中,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。
通过帧触发 延迟,您可以
对硬件信号和实际 传输线性调频脉冲
之间的延迟 进行编程。
填充了所有 参数之后,
您需要调用 API rlSetFrameConfig,
它将会在毫米波 前端中配置该帧。
现在让我们了解一下 如何在毫米波前端中
对其他关键块进行编程。
我们首先从 通道配置开始。
使用通道配置, 我们可以
配置需要在 毫米波前端中
启用多少个接收器 和发射通道。
例如,在 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。
所有配置 都完成后,
我们可以使用 SensorStart API 启动该帧。
mmWaveLink 框架的源代码 和 Doxygen 文档
是 mmWave SDK 的一部分,
深入细致地介绍了 我们讨论的
每个 API。
对此,我希望这次 培训对您有所帮助,
并让您深入了解了如何对 TI 毫米波器件编程。
真诚地感谢您 观看本培训视频。
大家好,欢迎参加 雷达编程模型的 视频培训。 本培训面向 使用毫米波雷达的 软件系统和 测试工程师。 在此,我相信大家 已经基本了解了 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 模拟链 中的总增益。 使用剖面结构定义了 所有这些参数后, 您需要使用 mmWaveLink API 传递该 结构。 在本例中,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。 通过帧触发 延迟,您可以 对硬件信号和实际 传输线性调频脉冲 之间的延迟 进行编程。 填充了所有 参数之后, 您需要调用 API rlSetFrameConfig, 它将会在毫米波 前端中配置该帧。 现在让我们了解一下 如何在毫米波前端中 对其他关键块进行编程。 我们首先从 通道配置开始。 使用通道配置, 我们可以 配置需要在 毫米波前端中 启用多少个接收器 和发射通道。 例如,在 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。 所有配置 都完成后, 我们可以使用 SensorStart API 启动该帧。 mmWaveLink 框架的源代码 和 Doxygen 文档 是 mmWave SDK 的一部分, 深入细致地介绍了 我们讨论的 每个 API。 对此,我希望这次 培训对您有所帮助, 并让您深入了解了如何对 TI 毫米波器件编程。 真诚地感谢您 观看本培训视频。
大家好,欢迎参加 雷达编程模型的
视频培训。
本培训面向 使用毫米波雷达的
软件系统和 测试工程师。
在此,我相信大家 已经基本了解了
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 模拟链 中的总增益。
使用剖面结构定义了 所有这些参数后,
您需要使用 mmWaveLink API 传递该
结构。
在本例中,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。
通过帧触发 延迟,您可以
对硬件信号和实际 传输线性调频脉冲
之间的延迟 进行编程。
填充了所有 参数之后,
您需要调用 API rlSetFrameConfig,
它将会在毫米波 前端中配置该帧。
现在让我们了解一下 如何在毫米波前端中
对其他关键块进行编程。
我们首先从 通道配置开始。
使用通道配置, 我们可以
配置需要在 毫米波前端中
启用多少个接收器 和发射通道。
例如,在 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。
所有配置 都完成后,
我们可以使用 SensorStart API 启动该帧。
mmWaveLink 框架的源代码 和 Doxygen 文档
是 mmWave SDK 的一部分,
深入细致地介绍了 我们讨论的
每个 API。
对此,我希望这次 培训对您有所帮助,
并让您深入了解了如何对 TI 毫米波器件编程。
真诚地感谢您 观看本培训视频。
视频报错
手机看
扫码用手机观看
收藏本课程
视频简介
2.4 mmWave雷达编程模型
所属课程:mmWave系列培训
发布时间:2017.08.11
视频集数:28
本节视频时长:00:24:42
TI mmWave传感器设备培训 - 描述了TI mmWave传感器以及如何使用它们。
//=$v1;?>
//=$v['id']?>//=$v['down_category']?>//=$v['link']?>//=$v['is_dl']?>//=$v['link']?>//=$v['name']?>//=$v['name']?>
//=$v['id']?>//=$v['down_category']?>//=$v['path']?>//=$v['is_dl']?>//=$v['path']?>//=$v['name']?>//=$v['name']?>
////=count($lesson['bbsinfo'])?>
//=$elink?>//=$elink?>//=$tags[0]?>//=$tags[0]?>//=$elink?>//= $elink?>//=$tags[1]?>//=$tags[1]?>
//=$lesson['bbs'];?>
//=count($lesson['bbsinfo'])?>