ZHCAD48 September   2023 ADS127L11 , ADS127L21 , AM2434

 

  1.   1
  2.   摘要
  3.   商标
  4. 1引言
  5. 2执行
  6. 3总结
  7. 4参考文献

执行

系统简介

德州仪器 (TI) 的 AM243x 微控制器器件包含两个 PRU-ICSS (ICSSG0) 外设实例以及 2 至 4 个 ARM R5F 内核(具体取决于器件名称版本)。


GUID-20230817-SS0I-JTTH-4MN7-8QCHJS2HVN0T-low.svg

图 2-1 传感器处理板的系统方框图

图 2-1 可让您深入了解系统方框图。一个 PRU-ICSS 实例与 4 通道 IEPE ADC 板连接,用作 IEPE 传感器的模拟前端。接下来的几个部分将深入探讨这种 4 通道 SPI 接口的细节,并展示了 ADC 板的实现。第二个 PRU-ICSS 实例用作以太网 MAC,与单线对以太网 PHY 建立连接。该连接有助于将 ADC 样本和 FFT 数据传输到 SPE 网关板。

为了有效地分配工作负载,两个 ARM R5F 内核开始发挥作用。R5F 内核 00 负责初始化 ADC 接口(包括配置)、接收四个 ADC 采样缓冲区,以及对这些缓冲区执行 FFT 计算等任务。FFT 计算的结果和未处理的 ADC 数据会传输到第二个 R5F 内核,即 R5F 内核 01。后一个内核负责 JSON 格式化和 MQTT 联网等任务,最终通过托管在第二个 PRU-ICSS 实例 (ICSSG1) 上的 MAC 网络接口传输以太网帧。

本应用手册主要介绍与 4 通道 ADC 板配合使用的 PRU-ICSSG0 ADC 接口。

PRU-ICSS 多通道 SPI 至 ADC 接口

图 2-2 提供了四个 ADC 与 PRU-ICSS 之间通过自定义 4 通道 SPI 接口进行硬件信号连接的简化示意图。


GUID-20230817-SS0I-ZBDM-LL6T-XLFBNVK0FXH7-low.svg

图 2-2 利用 PRU-ICSS 将四个 ADC 连接到多通道 SPI

多通道 SPI 功能可以方便地通过 PRU-ICSS 固件利用专用通用输入 (GPI) 和通用输出 (GPO) 信号来实现。这些 GPI 和 GPO 信号映射到 PRU 寄存器并提供最小的延迟,从而通过固件实现对外部外设的实时控制。这种情况下利用 GPI 和 GPO 信号来模拟 SPI 接口。

该系统在 PRU-ICSS 与所有 ADC 之间采用统一的串行数据输出 (SDO) 线路。该设计方案允许使用相同设置对所有 ADC 进行同步配置,这对于同步采样至关重要。PRU 通过 R30 寄存器访问 SDO 线路。

每个 ADC 的 SPI 线路 1 至 4 会被引导到 PRU-ICSS 上的专用 GPI 线路,然后这些线路由 PRU 固件通过 R31 寄存器进行读取。后续几个部分将深入探讨将每条 SDI 线路的串行数据流转换为并行 24 位 ADC 数据的复杂过程。

串行时钟 (SCLK) 信号由 PRU-ICSS 生成。有两个选项可用于生成 SCLK:

  • PRU 可以通过固件操作 GPO 来设置和清除线路。这需要 PRU 主动介入来管理线路的状态。
  • 集成事件处理器 (IEP) 计时器独立生成时钟,从而将时钟与 PRU 固件活动解耦。

此系统实现采用 IEP 计时器来生成 SCLK。

Return_SCLK 信号用作 PRU 固件中数据采样的时钟信号。Return_SCLK 源自 SCLK 并通过高速连接器传输。使用 10MHz 以上的高速时钟时,该方案十分有利。隔离器件会给跨隔离栅传输的所有信号引入信号延迟。使用 Return_SCLK 进行采样允许 PRU-ICSS 捕获 ADC 用于在 SDI 线路上输出采样数据的确切时钟沿,从而实现精确的数据捕获。

图 2-3 直观地展示了 SDO 线路上 SCLK、Return_SCLK 和 ADC 数据样本的传输情况。SDO1 至 SDO4 和 Return SCLK 均通过 GPI 输入 PRU-ICSS。SCLK 时钟信号通过 PRU-ICSS 中的 GPO 生成。PRU 固件利用 Return SCLK 来捕获 SDO 数据位。


GUID-20230817-SS0I-PFM9-KJGC-KQGR2SMBTWC6-low.svg

图 2-3 SDO 数据线路上的 ADC 样本以及 SCLK 和 Return SCLK

每个 ADC 提供 24 位数据样本,由最低有效位 (LSB)、中间位 (MID) 和最高有效位 (MSB) 组成。该系统使用 SCLK 时钟信号将这些数据样本放置在 SDO 线路上。因此,需要一个包含 24 个连续时钟周期 SCLK 信号,以提示 ADC 在 SDO 线路上呈现所有数据样本。

PRU 固件负责以下任务:

  • 通过启用 IEP SYNC 输出来初始化 SCLK 时钟输出。
  • 利用 Return_SCLK 对 SDO1 至 SDO4 之间的数据位进行采样。
  • 重新组织来自每个 SDO 线路的位流,为每个通道构建一个 24 位 ADC 样本。
  • 将这些 24 位样本存储在共享 RAM 数据缓冲区中。
  • 在填充指定的缓冲区后,通过 INTC 将事件派送给 ARM 处理器,从而触发 ARM 应用内的后续操作(例如 FFT 计算)。

直接访问 SDO 线路涉及利用寄存器 R31 的 b0 至 b3 位。PRU 固件通过将较低的 8 个数据位复制并左移到寄存器 R2(字节 0)来对数据进行采样,如图 2-4 所示。采样后,每个通道的初始 1 位数据位于 R2 中的位 4 至位 7。


GUID-20230817-SS0I-58X8-MB7N-27K8F7XS4QMN-low.svg

图 2-4 PRU GPO 映射和采样

GUID-20230817-SS0I-S1L0-H78Q-JVHSJNWQDWTL-low.svg

图 2-5 数据样本的转置转换步骤 – 第 1 部分

PRU 固件执行图 2-5 中所示的以下任务:

  1. 在后续步骤中对 MSB-1 进行采样之前,等待 RET_SCLK 转换为“高电平”。
  2. 等待 RET_SCLK 变为“低电平”以执行数据采样。
  3. 通过左移 4 个字节并将结果复制到寄存器 R2 的字节 0 来对四个 SDO 数据位进行采样。以颜色区分的单元格描述了每个 ADC 样本位的位位置。
  4. 等待 RET_SCLK 再次转换为“高电平”。
  5. 等待 RET_SCLK 变为“低电平”,然后继续对 MSB-2 进行采样。
  6. 通过在 R31 字节 0 和 R2 字节 0 之间执行逻辑或运算来对接下来的四个数据位进行采样。“或”运算的结果存储在 R2 字节 0 中。
  7. 通过将 R2 左移 2 位,准备查找表访问。
  8. 利用每个通道的 2 位样本以及查找表将其重新排列为连续的 2 位,同时使用采样位作为查找表的偏移量。存储器访问加载到寄存器 R3,其中展示了每个通道的两个连续位。
  9. 等待 RET_SCLK 转换为“高电平”。
  10. 将寄存器 R3 左移两位,并将结果存储在寄存器 R4 中。
  11. 将寄存器 R2 中的所有值复位为 0。
  12. 重复步骤 3 至 9。
  13. 重复步骤 9 后,对寄存器 R3 和 R4 进行逻辑或运算,并将结果存储在 R4 中。此步骤使用每个 ADC 通道排序后的 MSB-1 至 MSB-4 样本位来填充 R4。
  14. 将寄存器 R4 左移两位并将结果存储在 R4 中。

GUID-20230817-SS0I-5NH6-QML8-630RGW34B502-low.svg

图 2-6 数据样本的转置转换步骤 – 第 2 部分
  1. 清除寄存器 R2。
  2. 重复步骤 3 至 9,然后重复步骤 13 至 15。
  3. 重复步骤 3 至 9,然后执行步骤 13。在此阶段,R4 包含 8 个字节的数据样本,这个样本针对每个 ADC 通道进行了排序。
  4. 再重复步骤 1 至 17 两次。在下次使用前清除 R3。此时,PRU 已经累积和排序了 24 位样本。每个 ADC 的完整 ADC 样本位于 PRU 寄存器 R4 至 R6 中。
  5. 将数据字节传输到各个寄存器,使 PRU 能够将每个 24 位样本(转换为 32 位寄存器)存储到 ICSS 共享存储器中。有关此过程的直观表示,请参阅图 2-6

GUID-20230817-SS0I-BWPP-4PTQ-TWJ6KHZBPWNJ-low.svg

图 2-7 将转置的 ADC 样本存储到共享 RAM 中

在步骤 19 之后,PRU 固件执行四个 sbco 指令,以将每个 32 位样本存储到位于共享 RAM 中的数据缓冲区中。PRU 会重复此过程,多次将 32 位数据写入缓冲区,直到填满整个采样缓冲区。有关此过程的直观表示,请参阅图 2-7


GUID-20230817-SS0I-JTTH-4MN7-8QCHJS2HVN0T-low.svg

图 2-8 完整的软件流程

图 2-8 展示了整个系统的全面软件流程。在采样缓冲区填充完成后,PRU 将向 ARM 触发中断控制器 (INTC) 事件。ARM 内核 R5F-00 接收此事件作为中断,随后对 ADC 采样缓冲区执行快速傅里叶变换 (FFT) 计算。FFT 计算结束后,样本会传递到第二个 R5F-01 内核。该内核管理 JSON 格式的创建和使用 MQTT 协议通过单线对以太网 (SPE) 连接传输数据。ICSSG1 通过 SPE 端口管理以太网传输。

对于每个 ADC 缓冲区,持续重复此迭代过程。FFT 计算结果和原始 ADC 样本通过单线对以太网高效传输到网关板。

ARM 应用

ARM 处理器上的应用会在两个 ARM Cortex R5F 内核之间拆分,以实现高效处理和通信。

R5F 内核 00:

  • R5F 内核 00 负责初始化 MPU(微处理单元),其中包括子系统配置设置。这些配置详细信息在 SYSCONFIG 文件中指定。
  • RF5 内核 00 负责处理 pinmux 配置、器件设置、PRU ADC 固件加载和启动以及向 ADC 板提供配置数据等任务。
  • RF5 内核 00 接收来自 PRU-ICSSG0 的事件并执行快速傅里叶变换 (FFT)。

R5F 内核 01:

  • R5F 内核 01 接收来自内核 00 的事件。
  • 该内核负责将处理后的数据(原始 ADC 和 FFT 结果)转换为传输格式。具体来说,该内核会对数据执行 JSON(JavaScript 对象表示法)格式化。
  • 进行 JSON 格式化之后,会使用 MQTT(消息队列遥测传输)协议通过单线对以太网 (SPE) 进行数据传输。
  • 内核 01 确保数据被有效打包并通过网络传输,从而使数据可用于可视化和分析。
  • MAC(媒体访问控制)层在 ICSSG1 上运行,便于进行以太网通信。

总之,ARM 应用的结构旨在高效利用两个 Cortex R5F 内核的功能。内核 00 负责处理 ADC 子系统的初始化、配置和交互,而内核 01 专用于数据处理和通信。这使得处理后的数据能够通过网络高效传输。