本节是针对TI官方提供的接口配置的文档进行了阅读,并分析了文档中主要将了哪些模块
TI毫米波雷达传感器通信的基础
1.通信的基本结构
1.1 SPI
- AWR2243 / xWR6243雷达设备通过SPI接口与外部主机处理器通信。通过SPI向AWR2243 / xWR6243设备发送命令,从外部主机处理器对雷达设备进行配置和控制。
- SPI这个接口是同步的。该接口包括4路信号( SPICCLK、SPICS、Data In and Data Out)
1.2 Mailbox
这个应该是MSS与BSS的通信接口,但目前并不清楚AW2243中MSS是哪个部分(因为一直以为MSS是指MCU部分,但AWR2243并没有内部处理器)
2.雷达信号结构(MailboxRadar Message Structure)
Radar Message Structure应该就是雷达传感器与外界通信时,彼此遵循的一种信号格式
2.1 SYNC
消息的起始位,标志着消息的开始
2.2 MSGHDR
2.2.1 OPCODE
- MSGID尚未完全研究清楚,应该是一些更细节的分类,比如是错误响应,静态参数设置命令之类的
2.2.2 LENGTH
就是message header+message data+CRC的长度
LENGTH的最小长度为12byte,最大长度为252byte(因为LEN最多有12bit,那么最多表示$2^{12}$个数,就正好等于$256\times 8$,即256byte,其实应该是可以表示256byte的长度的,可能是为了LENGTH+SYNC正好是256byte吧,就限制LENGTH最大为252byte吧)
LENGTH-CRC的长度必须是4byte的倍数
2.2.3 FLAGS
FLAGS用于控制雷达设备与外部主机之间的通信
2.2.4 REMCHUNKS
- 如果消息长度大于256byte,则将其分割成多个小于256字节的块(chunk)。 当该字段非零时,该字段指示预期的剩余块的数量。
2.2.5 NSBC
通常会将一条消息分成多个子块(sub block)传输(请注意block和chunk的区别,一个是把message分为好几个小段,一个是message太大了,才分成一些个块)
2.2.6 CHKSUM
- 对MSGHDR消息头的16bit校验信号
2.2.7 MSGDATA
2.2.8 CRC
应该也是一种校验方式吧,是根据MSGHDR 和 MSGDATA 中的所有字节计算
通信协议
1.雷达通信的基本协议
- 主机向雷达设备发送消息请求确认。 主机为雷达设备的响应设置 1 ms 的超时时间
- 雷达设备检查 CHKSUM 字段的消息头有效性,检查 MSGDATA 字段的正确性,还计算消息的 CRC 并将其与接收到的 CRC 进行比较。
- 如果计算出的 CHKSUM 与接收到的 CHKSUM 不匹配,则雷达设备不会发送任何响应。 发送器将超时并最终重新发送命令并设置RETRY标志
- 如果 CRC 匹配且所有参数均有效/正确,则雷达设备向主机发送 ACK
- 如果 CRC 匹配,但消息中的任何参数无效/不正确,则雷达设备向主机发送 ERROR 响应
- 如果 CRC 不匹配,雷达设备将向主机发送 NACK 响应
- 在接收到ACK后,主机可以向雷达设备发送下一个命令
- 如果主机在超时时间内收到来自雷达设备的 NACK,它将再次发送消息,则在没有RETRY FLAG set的情况下再次发送消息。
- 如果主机在超时期间内没有收到雷达设备的任何响应,则它发送与RETRY FLAG set相同的命令。
2.通信顺序
2.1 Command/Response Sequence (Host)
- Host prepares the message
- Host writes the message to the communication channel and starts Retry Timer (∼1 ms)
- Host then waits for HOST IRQ high Interrupt
- If IRQ is received, go to Step 4
- If Retry Time expires, Enable Retry Flag and go to Step 2
- Host writes CNYS (SYNC word = 0x5678 0x8765) and Dummy bytes (0xFFFF 0xFFFF 0xFFFF 0xFFFF 0xFFFF 0xFFFF) on communication channel
- Host waits for low on Host IRQ line
- If Host IRQ line is low, go to Step 6
- If Retry Time expires, Flag Error
- Host reads the header from communication channel
- Host checks the validity of header (verify checksum)
- If header is valid, parse the header and go to Step 8
- If header is invalid, ignore the header and reports to error to Application
- Host reads the payload from communication channel
- Host checks the validity of the message (verify CRC)
- If message is valid, process the message
- If message is invalid, go to Step 2 with new sequence number
- 其实感觉这个通信顺序(是先发送命令再接收数据吗?)跟通信协议有些区别,比如step2主机发送message中真实data是什么样子,step7主机读取数据的时候,为什么header校验失败就直接发送error了,不应该是CRC失败才发送error么?先存疑在这
2.2 Bootup/ Asynchronous Event
这玩意还不太懂
2.3 SPI时序(Command/Response)
雷达接口信息详细描述
本部分介绍了与雷达收发信机通信所使用的所有雷达接口消息
这一节只能做一个大致总结,要用的时候还得再查接口手册
1. AWR_ACK_MSG
- CRC校验成功时发送此信号
- 这里有个问题是此信号的MSGID是多少?
2. AWR_NACK_MSG
- CRC校验失败时发送此信号
3. AWR_ERROR_MSG
- 在发现主机命令有误时发送此信号
- 这个信号的数据有1个block:AWR_RESP_ERROR_SB
4. AWR_RF_STATIC_CONF_SET_MSG
- 静态设置,在雷达收发机功率循环之后必须配置一次(说实话,并没有很懂这里)
- 这个信号的数据有13个block:
- AWR_CHAN_CONF_SET_SB:选择是否级联,以及选择级联后的相关配置
- AWR_ADCOUT_CONF_SET_SB:ADC输出的数据格式,以及ADC的采样模式(Real、Complex 1x、Complex 2x、Pseudo Real)
- AWR_LOWPOWERMODE_CONF_SET_SB:是否通过降低某些IF模拟模块的偏置电流来降低功率
- AWR_DYNAMICPOWERSAVE_CONF_SET_SB:是否选用省电模式
- AWR_HIGHSPEEDINTFCLK_CONF_SET_SB:关于高速接口时钟速率,这与以LVDS或CSI2格式将ADC数据从AWR设备发送到主机有关。
- AWR_RF_DEVICE_CFG_SB:在BSS中配置异步事件的方向
- AWR_RF_RADAR_MISC_CTL_SB:移相器和高级帧的设置等的使能信号与其他RF配置(其他的部分没看懂是个啥配置)
- AWR_CAL_MON_FREQUENCY_LIMITS_SB:已经弃用了,别管
- AWR_RF_INIT_CALIBRATION_CONF_SB:配置设备执行开机时间校准
- AWR_CAL_MON_FREQUENCY_TX_POWER_LIMITS_ SB:为每个TX设置射频频率传输限制以及TX功率限制
- AWR_CAL_DATA_RESTORE_SB:应该是用来存储AWR_CAL_ DATA_SAVE_SB里面的RF校准数据(也没有太明白)
- AWR_PHASE_SHIFTER_CAL_DATA_RESTORE_SB:应该是用来存储AWR_PHASE_ SHIFTER_CAL_DATA_SAVE_SB里面移相器的校准数据(也没有太明白)
- AWR_APLL_SYNTH_BW_CONTROL_SB:这是 AWR2243 和 xWR6x43 中新增的一项功能。此子块用于控制 APLL 和合成器的带宽。
5. AWR_RF_STATIC_CONF_GET_MSG
应该是主机读取从机的动态配置相关数据的
这个信号的数据有2个block:
- AWR_CAL_DATA_SAVE_SB:该子模块从设备读取校准数据,稍后可以使用AWR_CAL_DATA_RESTORE_SB命令注入这些数据。(校准数据的总大小为 672 字节,由于 SPI 限制,已将其分成 3 个块 (校准数据的总大小为 672 字节,由于 SPI 限制,已将其分成 3 个块(NUM_CHUNKS),每个块 224 字节。主机应从雷达设备接收所有这 3 个块,以后主机只能将相关数据存储在非易失性存储器中。)
- AWR_PHASE_SHIFTER_CAL_DATA_SAVE_SB:该子模块从器件读取移相器的校准数据,稍后可以使用AWR_PHASE_SHIFTER_CAL_DATA_RESTORE_SB命令注入这些数据。
6. AWR_RF_INIT_MSG
- RF初始化消息,执行雷达收发器的启动时间校准。
- 这个信号的数据有1个block:
- AWR_RF_INIT_SB:BSS处理器在收到此子模块时被唤醒,RF模拟和数字基带部分被初始化。
7. AWR_RF_DYNAMIC_CONF_SET_MSG
8. AWR_RF_DYNAMIC_CONF_GET_MSG
9. AWR_RF_FRAME_TRIG_MSG
- 雷达收发器启动波形的帧触发消息
- 这个信号的数据有1个block:
- AWR_FRAMESTARTSTOP_CONF_SB:此子块启动或停止帧的传输
10. AWR_RF_ADVANCED_FEATURES_ CONF_SET_MSG
- 一些高级配置
- 此接口仅适用于xWR6243 设备
- 这个信号的数据有3个block:
- AWR_BPM_COMMON_CONF_SET_SB:此处定义了 BPM 模式的来源
- AWR_BPM_CHIRP_CONF_SET_SB:此子模块定义与每个TX中的BPM(二进制相位调制)功能相关的静态配置
- AWR_POWER_SAVE_MODE_CONF_SET_SB:定义了省电的模式
11. AWR_RF_MONITORING_CONF_SET_MSG
- 这个信号的数据有31个block:
- WR_MONITOR_RF_DIG_LATENTFAULT_CONF_SB:启动监控功能以及选择测试模式(但没懂)
- AWR_MONITOR_RF_DIG_PERIODIC_CONF_SB:启用的监控功能会定期执行,并根据报告模式发送报告。
- AWR_MONITOR_ANALOG_ENABLES_CONF_SB:
12. AWR_RF_STATUS_GET_MSG
获取有关响应的状态信息
这个信号的数据有5个block:
- AWR_RF_VERSION_GET_SB:读取射频硬件和固件版本
- AWR_RF_CPUFAULT_STATUS_GET_SB:提供射频 BSS CPU 故障信息
- AWR_RF_ESMFAULT_STATUS_GET_SB:提供有关其他RF子系统故障的信息
- AWR_RF_DIEID_GET_SB:有关器件芯片 ID 的信息
- AWR_RF_BOOTUPBIST_STATUS_GET_SB:提供有关启动自检状态的信息
13. AWR_RF_MONITORING_REPORT_GET_ MSG
- DFE 统计报告来自雷达收发器的 GET 消息(这个真一点没看懂)
- 这个信号的数据有1个block:
- AWR_RF_DFE_STATISTICS_REPORT_GET_SB:
14. AWR_RF_MISC_CONF_SET_MSG
雷达收发器的其他配置消息子块
这个信号的数据有7个block:
- AWR_RF_TEST_SOURCE_CONFIG_SET_SB:此子块用于配置 BSS 的测试源
- AWR_RF_TEST_SOURCE_ENABLE_SET_SB:此子块用于启用BSS的测试源
- AWR_RF_LDO_BYPASS_SB:此子模块启用 BSS 中的 LDO 旁路选项
- AWR_RF_PALOOPBACK_CFG_SB:此子块为所有已启用的配置文件启用/禁用 PA 环回。这用于调试 TX 和 RX 链是否正常工作
- AWR_RF_PSLOOPBACK_CFG_SB:此子块为所有已启用的配置文件启用/禁用 PS(移相器)环回。这用于调试 TX(在 PA 之前)和 RX 链。
- AWR_RF_IFLOOPBACK_CFG_SB:此子块为所有已启用的配置文件启用/禁用 IF 环回。这用于调试 RX IF 链。
- AWR_RF_GPADC_CFG_SET_SB:此子模块启用外部输入的 GPADC 读取(仅在 xWR1642/xWR1843/xWR6843/AWR2243/xWR6243 中可用)
15. AWR_RF_MISC_CONF_GET_MSG
- 这个信号的数据有1个block:
- AWR_RF_TEMPERATURE_GET_SB:此子模块提供设备温度传感器信息
16. AWR_RF_ASYNC_EVENT_MSG1
- AWR_RF_ASYNC_EVENT_MSG1消息由雷达收发器发送到主机。此消息表示设备内发生了特定事件。
- 这个信号的数据有22个block:
- AWR_AE_RF_CPUFAULT_SB:此子块指示 BIST SS 的 CPU 故障状态
- AWR_AE_RF_ESMFAULT_SB:此子块指示 BIST SS 中任何其他故障的状态
- AWR_AE_RF_INITCALIBSTATUS_SB:此子块表示RF BISTSS的初始校准已完成
- AWR_AE_RF_MONITOR_TYPE_TRIGGER_DONE_SB:此子块指示,触发的监视器类型是通过执行完成的,Host 可以使用此信号触发下一个类型的监视器。
- AWR_AE_RF_FRAME_TRIGGER_RDY_SB:此子块表示从设备现在已准备好接收帧触发的外部同步,这并不表示在硬件触发模式下帧的物理触发。在 SW 触发模式下,此异步事件表示帧由 SW 触发。
- AWR_AE_RF_GPADC_RESULT_DATA_SB:此子块表示 GPADC 测量已完成,并且还包含每个启用通道的测量数据。可以忽略未启用的通道的数据。
- AWR_FRAME_END_AE_SB:此子块表示帧的结束
- AWR_ANALOGFAULT_AE_SB:该子模块指示模拟电源故障或LDO短路情况。一旦检测到故障,则无法恢复该功能,需要重新启动传感器。
- AWR_CAL_MON_TIMING_FAIL_REPORT_AE_SB:此子块指示与校准或监控相关的任何定时故障
- AWR_RUN_TIME_CALIB_SUMMARY_REPORT_AE_ SB:如果在AWR_RUN_TIME_CALIBRATION_CONF_AND_TRIGGER_SB中启用了校准报告,则此子块指示校准状态(一次或运行时间)
- AWR_MONITOR_RF_DIG_LATENTFAULT_REPORT_ AE_SB:该异步事件包含潜在故障的数字监控状态(没懂)
- AWR_MONITOR_REPORT_HEADER_AE_SB:报告标题包含所有已启用监视器的通用信息,例如当前 FTTI 编号和当前温度。
- AWR_MONITOR_RF_DIG_PERIODIC_REPORT_AE_ SB:该异步事件定期发送,以指示定期数字监控测试的状态。(没懂一点)
- AWR_MONITOR_TEMPERATURE_REPORT_AE_SB:此 API 是 AWR 设备发送到主机的监控报告 API,包含各种射频模拟和数字模块附近的测量温度
- AWR_MONITOR_RX_GAIN_PHASE_REPORT_AE_SB:此子模块是AWR设备发送到主机的监控报告,包含测量的RX增益和相位值,环回功率和噪声功率。主机可以使用噪声功率来检测是否存在干扰。
- AWR_MONITOR_RX_NOISE_FIGURE_REPORT_AE_ SB:此 API 是 AWR 设备发送到主机的监控报告 API,其中包含与配置文件的完整 IF 频段对应的测量 RX 噪声系数值。
- AWR_MONITOR_RX_IFSTAGE_REPORT_AE_SB:此 API 是 AWR 设备发送到主机的监控报告 API,其中包含给定 IF 频率下测得的 RX IF 滤波器衰减值。
- AWR_MONITOR_TX0_POWER_REPORT_AE_SB:此 API 是 AWR 设备发送到主机的监控报告 API,其中包含显式监控线性调频期间测得的 TX0 功率值。
- AWR_MONITOR_TX1_POWER_REPORT_AE_SB:此 API 是 AWR 设备发送到主机的监控报告 API,其中包含显式监控线性调频期间测得的 TX1 功率值。
- AWR_MONITOR_TX2_POWER_REPORT_AE_SB:此 API 是 AWR 设备发送到主机的监控报告 API,其中包含显式监控线性调频期间测得的 TX2 功率值。
- AWR_MONITOR_TX0_BALLBREAK_REPORT_AE_SB:该API是AWR设备发送到主机的监控报告API,包含测量的TX反射系数的幅度值,用于检测TX ball break。
- AWR_MONITOR_TX1_BALLBREAK_REPORT_AE_SB:此 API 是 AWR 设备发送到主机的监控报告 API,其中包含测量的 TX 反射系数的幅度值,用于检测TX ball break。(感觉这个跟TX0配置一样,不懂它们之间有个啥区别)
17. AWR_RF_ASYNC_EVENT_MSG2
- AWR_RF_ASYNC_EVENT_MSG2消息由雷达收发器发送到主机。此消息表示设备内发生了特定事件。
- 这个信号的数据有17个block:
- AWR_MONITOR_TX2_BALLBREAK_REPORT_AE_SB:此 API 是 AWR 设备发送到主机的监控报告 API,其中包含测量的 TX 反射系数的幅度值,用于检测TX ball break。(感觉这个跟TX0配置一样,不懂它们之间有个啥区别)
- AWR_MONITOR_TX_GAIN_PHASE_MISMATCH_ REPORT_AE_SB:此 API 是 AWR 设备发送到主机的监控报告 API,其中包含显式监控线性调频期间测得的 TX 增益和相位失配值。
- AWR_MONITOR_TX0_PHASE_SHIFTER_REPORT_AE_ SB:此 API 是 AWR 设备发送到主机的监控报告 API,其中包含测量的 TX0 相位值、幅度值和噪声功率。
- AWR_MONITOR_TX1_PHASE_SHIFTER_REPORT_AE_ SB:此 API 是 AWR 设备发送到主机的监控报告 API,其中包含测量的 TX1 相位值、幅度值和噪声功率。
- AWR_MONITOR_TX2_PHASE_SHIFTER_REPORT_AE_ SB:此 API 是 AWR 设备发送到主机的监控报告 API,其中包含测量的 TX2 相位值、幅度值和噪声功率。
- AWR_MONITOR_SYNTHESIZER_FREQUENCY_ REPORT_AE_SB:该 API 是 AWR 设备发送到主机的监控报告 API,其中包含与线性调频期间测量的频率误差相关的信息。
- AWR_MONITOR_EXTERNAL_ANALOG_SIGNALS_ REPORT_AE_SB:此 API 是 AWR 设备发送到主机的监控报告 API,其中包含使用 GPADC 测量的外部信号电压值。
- AWR_MONITOR_TX0_INTERNAL_ANALOG_SIGNALS_ REPORT_AE_SB:此 API 是 AWR 设备发送到主机的监控报告 API,包含有关内部 TX0内部模拟信号的信息,包括 Tx 移相器 DAC 监控报告。
- AWR_MONITOR_TX1_INTERNAL_ANALOG_SIGNALS_ REPORT_AE_SB:此 API 是 AWR 设备发送到主机的监控报告 API,包含有关内部 TX1内部模拟信号的信息,包括 Tx 移相器 DAC 监控报告。
- AWR_MONITOR_TX2_INTERNAL_ANALOG_ SIGNALS_REPORT_AE_SB:此 API 是 AWR 设备发送到主机的监控报告 API,其中包含有关内部 TX2 内部模拟信号的信息。
- AWR_MONITOR_RX_INTERNAL_ANALOG_ SIGNALS_REPORT_AE_SB:此 API 是 AWR 设备发送到主机的监控报告 API,其中包含有关内部 RX 内部模拟信号的信息。
- AWR_MONITOR_PMCLKLO_INTERNAL_ANALOG_ SIGNALS_REPORT_AE_SB:此 API 是 AWR 设备发送到主机的监控报告 API,其中包含有关内部 PM、CLK 和 LO 子系统的内部模拟信号以及级联设备中 20GHz 同步输入/输出功率的信息。
- AWR_MONITOR_GPADC_INTERNAL_ANALOG_ SIGNALS_REPORT_AE_SB:此 API 是 AWR 设备发送到主机的监控报告 API,其中包含有关已启用测量的 GPADC 输入直流信号的测量值的信息。
- AWR_MONITOR_PLL_CONTROL_VOLTAGE_ REPORT_AE_SB:此 API 是 AWR 设备发送到主机的监控报告 API,其中包含显式监控线性调频期间测得的 PLL 控制电压值。
- AWR_MONITOR_DUAL_CLOCK_COMP_REPORT_ AE_SB:此 API 是 AWR 设备发送到主机的监控报告 API,其中包含有关相对频率测量的信息。
- AWR_MONITOR_RX_MIXER_IN_POWER_REPORT_ AE_SB:此 API 是 AWR 设备发送到主机的监控报告 API,其中包含测量的 RX 混频器输入电压摆幅值。
- AWR_MONITOR_SYNTHESIZER_FREQUENCY_ NONLIVE_REPORT_AE_SB:这是 AWR2243/xWR6243 器件新增的一项功能。此 API 是设备发送到主机的非实时监控报告 SB,其中包含与两个配置文件配置的监控线性调频期间测量的频率错误相关的信息。