文章目录

  • Introduction
  • Modules
  • Porting Guide
    • Step1 - Define mmWaveLink client callback structure
    • Step2 - Implement Communication Interface Callbacks
    • Step3 - Implement Device Control Interface
    • Step4 - Implement Events Handlers
    • Step5 - Implement OS Interface
    • Step6 - Implement CRC Interface and Type
    • Step7 - Implement Debug Interface
    • Final Step - Initializing mmWaveLink Driver
    • CRC Type Implementation
    • Big Endian Support
    • General Notes
    • Application Care Abouts

Introduction

TI汽车和工业毫米波雷达产品时高度集成的77GHz CMOS毫米波器件。这些器件集成了所有的射频和模拟功能,包括VCO、PLL、PA、LNA、混频器和多个TX/RX通道的ADC集成到一个芯片中。

  1. AWR1243是一中射频收发设备,它在一个芯片中包括4个接收通道和3个发射通道。AWR1243还支持多芯片级联。
  2. AWR1443/IWR1443是一种毫米波片上雷达设备,包括4个接收通道和3个发射通道,除此之外还有一个Cortex R4F和硬件FFT加速器
  3. AWR1642和IWR1642是毫米波雷达片上设备,包括4个接收通道和2个发射通道,另外还有一个用于信号处理的Cortex R4F和C674x DSP。

TI毫米波雷达设备包括一个mmWave前端或BIST(内置自测试)处理器,负责事实配置射频/模拟和数字前端,并定期安排校准和功能安全监控。这使得mmwave前端(BIST处理器)能够自成一体,能够自我调整以处理温度和老化效应,并从外部主机的角度实现显著的易用性。

TI mmwave前端是一个封闭的子系统,它的内部快可以使用来自邮箱的消息进行配置。

TI mmWaveLink提供了api生成这些消息并通过邮箱将其发送到mmwave前端。它还包括每个消息的确认和CRC、以提供可靠的通信。

TI mmWaveLink框架:

  • 是应用程序和mmwave前端之间的链接
  • 提供低级API来配置前端并处理与前端的通信
  • 独立于平台和操作系统的,这意味着它可以移植到任何提供通信接口(如SPI和基本操作系统例程)的处理器中。mmWaveLink框架也可以在单线程环境中运行。
  • 集成到mmWave SDK中,可以在R4F或DSP上运行,并通过邮箱接口于mmWave前端进行通信

Modules

为了简单起见,TI的mmWaveLink框架能够划分为多个模块。
这些功能包括设备控制、射频/模拟控制、ADC配置、数据路径(LVDS/CSI2)配置、FMCW线性调频脉冲配置等。
下面列出了mmWaveLink框架中的各个模块:

  1. Device - 控制毫米波雷达设备,包括:
    初始化,如:mmwave设备开机/关机,固件补丁下载,级联设备配置,如添加/连接多个mmWave设备

  2. Sensor - RF/传感器配置模块控制mmWave前端内的不同硬件块

    mmWave前端有以下关键块:

    1. Chirp时序器(雷达定时引擎) - 这个模块负责构建FMCW线性调频脉冲或帧的序列,并对定时引擎进行编程
    2. Rx/Tx通道 - 这个定义了需要启用多少个Rx和Tx信道。并定义了成像雷达在级联模式下如何配置毫米波前端
    3. Rx模拟链 - 定义接收信号的混合方式以及链中不同滤波器的配置方式
    4. ADC和数字前端配置 - 这定义了中频数据如何数字化,以及如何在DSP或硬件加速器中对器进行采样以进一步处理。相同的ADC数据可以通过LVDS/CSI2接口发送到扩展处理器。

    配置API可以进一步分类为:

    1. mmwave静态配置,例如:Tx和Rx通道、ADC配置等
    2. mmwave动态配置,例如:FMCW Chirp配置,profile配置
    3. mmwave高级配置,例如:二进制相位调制、动态节能等
    4. mmwave传感器控制,例如:帧的启动/停止
  3. Data Path - 数据通道配置模块控制mmWave设备中的高速接口

    配置APIs包括如下:

    1. 高速接口(LVDS/CSI2)选择
    2. 数据格式和速率的配置
    3. ADC,Chirp Profile(CP)、Chirp Quality(CQ)数据传输的序列
    4. Lane的配置
    5. LVDS/CSI2指定的配置
  4. Monitoring - 监控/校准模块配置mmWave设备的校准和安全监控功能
    TI-mmWave前端包括由TI编程的内置处理器,用于处理射频校准和安全监控功能。射频校准确保设备在温度和工艺角保持不变

  5. Communication Protocol - mmWave通信协议确保主机(内部或外部)和mmWave前端之间的可靠通信。

    1. 这是一个简单的停止等待协议。在发送下一条消息之前,每个消息都需要接收方确认。
    2. 消息分为"命令"、“响应”和“异步事件”
    3. 如果无法立即处理命令,则立即发送ACK响应(如果请求)。"异步事件"在命令执行完成后发送

Porting Guide

将mmWaveLink驱动程序移植到任何新平台都是基于几个简单的步骤。这个指南将带您逐步完成此过程。请仔细遵循说明,以避免在此过程中出现任何问题,并使设备能够高效、正常地工作。请注意,驱动程序地所有修改和移植调整只能在应用程序中进行,不能修改驱动程序。应用程序文件地更改将确保将来顺利地处理到新版本的驱动程序。

Step1 - Define mmWaveLink client callback structure

使用mmWaveLink客户端将mmWaveLink framework移植到不同的平台。这些回调被分为不同的结构,如操作系统回调、通信接口回调和其他。应用程序需要定义这些回调并使用structure初始化mmWaveLink框架。

Step2 - Implement Communication Interface Callbacks

mmWaveLink设备支持SPI和邮箱之间的多种标准通信协议,根据设备的不同,需要选择通信信道。例如xWR1443/xWR1642/xWR1843需要邮箱接口,AWR1243支持SPI接口。对于这个会话通道接口应该包括4个简单的访问函数:

1. rlComlfOpen
2. rlComlfClose
3. rlComlfRead
4. rlComlfWrite

Step3 - Implement Device Control Interface

mmWaveLink的驱动程序内部开启/关闭mmWave雷达设备。这些接口具体实现取决于平台,因此您需要实现以下功能:

1. rlDeviceEnable
2. rlDeviceDisable
3. rlRegisterInterruptHandler

Step4 - Implement Events Handlers

mmWaveLink驱动程序报告异步事件,指示mmwave雷达设备状态、异常等。应用程序可以注册这个回调来接收这些通知并采取适当的措施。

Step5 - Implement OS Interface

mmWaveLink驱动程序可以在操作系统和非操作系统环境下工作。若应用程序更喜欢使用操作系统,则需要实现基本的操作系统例程,如任务、互斥体和信号量。在非操作系统环境下,应用程序需要实现等价形式的互斥体和信号量。

Step6 - Implement CRC Interface and Type

mmWaveLink驱动程序使用CRC来保证消息的完整性。如果应用程序喜欢使用CRC,则需要实现CRC例程并提供CRC例程。

Step7 - Implement Debug Interface

mmWaveLink驱动程序可以打印调试信息。若应用程序希望启用调试信息,则需要实现调试回调

Final Step - Initializing mmWaveLink Driver

一旦实现了上述所有接口,应用程序需要在rlClientCbs_t中填充这些回调,并通过传递客户端回调来初始化mmWaveLink。应用程序还需要定义mmWaveLink驱动程序运行的位置,例如,对于AWR1243,使外部主机,对于xWR1642/xWR1843,是MSS/DSS。

CRC Type Implementation

设备设置和接收命令相同的CRC类型以响应消息。所以,对命令的CRC类型的更改也会导致对响应的CRC类型的更改。[请参阅步骤7-实现调试接口]。mmWave设备(MasterSS&RadarSS)在异步事件消息中默认使用16位CRC类型。如果主机需要将不同的CRC类型设置为Async event,那么它必须实现以下代码片段。

Big Endian Support

默认情况下,mmWaveLink驱动使用的是小端法。对于大端法的支持是通过使用预处理宏MMWL_BIG_ENDIAN作为编译时选型提供的。
对于内存的优化,mmWaveLink不交换结构缓冲区中的数据元素。应用程序负责在讲结构缓冲区传递给mmWaveLink API之前交换多字节数据元素。由于SPI字大小是16位,32位字段(如整数)的交换需要在16位的边界处完成。

General Notes

  1. 主机应确保在CS变低和SPI时钟开始之间至少有2个SPI时钟延迟
  2. 主机应确保通过SPI传输每16位就切换一次CS
  3. 连续CS之间至少应有2个SPI时钟的延迟
  4. SPI需要在模式0(相位1,极性0)下运行
  5. SPI字节长度应为16位(半字)

Application Care Abouts

  1. RF加电重试的消息是不支持的
  2. 建议主机等待RF Power Async msg,然后再发出任何其他api。缺少射频启动异步消息应视为启动失败
  3. 建议再发出下一个CMD之前等待潜在故障注入API的异步事件
  4. 主机应确保对主机中断的响应延迟为30us,以允许再设备中设置主机后的SPI-DMA配置为高
  5. 当固件下载通过SPI完成时,建议再mmWaveLink/HOST中使用232作为块大小

参考文献:

  1. 《mmWave SDK Module Documentation》

mmWaveLink Framework相关推荐

  1. Xiaojie雷达之路---mmWaveLink Framework概览

    Hello,大家好,我是Xiaojie,欢迎大家能够和Xiaojie来一起学习毫米波雷达知识,本篇文章主要是介绍一下TI毫米波雷达中的mmWaveLink Frame整个框架,一起来看看吧!!! 本篇 ...

  2. Tengine Framework基础

    Tengine Framework基础 最受开发者喜爱的边缘AI计算框架 Tengine是OPEN AI LAB推出的自主知识产权的边缘AI计算框架,致力于解决AIoT产业链碎片化问题,加速AI产业化 ...

  3. EF-Entity Framework 相关技术点收集贴

    不定期.偶尔.添加更新 在网络上看到或者自己开发过程中碰到的EF-Entity Framework相关技术点 本文地址:http://www.cnblogs.com/vnii/archive/2012 ...

  4. Qt Installer Framework实战

    Qt Installer Framework是Qt发布的安装程序支持框架,只需要简单的配置就可以生成安装文件,同时可以通过javascript脚本来定制安装过程. 目录结构 config packag ...

  5. 在虚拟机中 windows 2003 装.net framework 3.5 出现问题.

    错误信息: [11/27/09,08:52:50] Microsoft .NET Framework 2.0a: [2] Error: Installation failed for componen ...

  6. .Net Framework 3.0 概述

    Microsoft .NET Framework 3.0, the managed programming model for Microsoft® Windows®, includes the .N ...

  7. MIS开发中.net Framework的打印功能

    Microsoft .net Framework的打印功能都以组件的方式提供,为程序员提供了很大的方便,但是这几个组件的使用还是很复杂的,有必要解释一下. 打印操作通常包括以下四个功能 1 打印设置 ...

  8. python导入matplotlib出错_解决导入matplotlib的RuntimeError: Python is not installed as a framework....

    import matplotlib.pyplot as plt 报错: RuntimeError: Python is not installed as a framework. The Mac OS ...

  9. ios Standard Framework和Umbrella Framework

    Standard Framework:标准库,通过引用对应的header文件而不是引用master header 文件来引用类(也可以通过引用Master Header file来引用需要使用的类), ...

最新文章

  1. redis持久化方案
  2. [K/3Cloud]进度条控件编程接口
  3. 给销售范围组合分配定价过程
  4. void 类型的指针
  5. [vue] vue过渡动画实现的方式有哪些?
  6. JeeSite 4.0 (1.0)开发环境部署运行
  7. Linux中w r x数学代码,Linux bc命令实现数学计算器
  8. 谷歌硬盘 idm_为什么Google搜索结果比本地硬盘查询要快?
  9. Java常用的框架有哪些?
  10. boobooke视频汇总
  11. 大陆车牌识别算法的背景与技术
  12. 计算机中8位二进制机器数,一个字节由8位二进制数组成,其最大容纳的十进制整数为()...
  13. Hive 核心原理(hive-3.1.2)
  14. 3d游戏开发实训一周总结 3
  15. 【入门教程】必看!TensorFlow中文教程:机器学习从零到一
  16. Anroid app版本更新
  17. [论文解读]Deep active learning for object detection
  18. 无需下载软件,有手就能做的线上个人简历
  19. 十分钟搞定SSD1963液晶屏驱动
  20. 基于Python实现简易学生信息管理系统

热门文章

  1. [MATLAB] BS期权隐含资产(implied asset)和隐含波动率(implied volatility)计算 迭代法 源码程序
  2. 产品经理必修课(5):用户研究
  3. US7ASCII字符集转换为ZHS16GBK
  4. 弘辽科技:新宝贝如何快速打爆手淘首页流量。
  5. Arcgis学习笔记(初级到精通)
  6. 阿里2021最全新的java面试题总结
  7. 页面局部跳转页面(原有窗口跳转/弹框跳转)
  8. nnUnet+braTS2021使用代码解析
  9. 荣耀2023届校园招聘内推码
  10. 手机扫描照片怎么操作?手把手教你操作