工具/软件:
您好!
AM243x SoC 时、我是一名新手。 我们将在未来使用该处理器、目前正在研究如何实现所需的功能。
各种任务需要的一项功能是 SPI 传输的循环触发。 由于这种情况经常发生、并且与其他循环任务异步执行、因此 CPU 的参与应该尽可能少(无中断)。
AM243x 上是否可以通过计时器以预定义长度触发 SPI 传输?
提前感谢
Mathias
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具/软件:
您好!
AM243x SoC 时、我是一名新手。 我们将在未来使用该处理器、目前正在研究如何实现所需的功能。
各种任务需要的一项功能是 SPI 传输的循环触发。 由于这种情况经常发生、并且与其他循环任务异步执行、因此 CPU 的参与应该尽可能少(无中断)。
AM243x 上是否可以通过计时器以预定义长度触发 SPI 传输?
提前感谢
Mathias
您好、Mathias、
在 AM243x 上、基于计时器的循环 SPI 传输有三种可能的方法:
1.无 DMA 的基于计时器的 SPI 传输
带 PKTDMA(手动触发)的基于计时器的 SPI
3、具有 DMA 的自动触发 SPI (BCDMA)
此致、
Anil
您好 Anil、
感谢您的澄清。 实际上、这不是我想要听到的、因为我们希望在可能的情况下避免使用中断。 根据我的理解、解决方案 3 根本不可行。 但是、您能否更详细地解释一下您提到的限制是什么?
我们系统有一个循环控制周期。 我们使用它来处理我们通过 SPI 接口读取的信息。 因此、启动读取过程(启动 SPI 传输)与该周期同步、但会有延时时间。 是否有其他方法可以实现该延时时间(范围从 0us 到大约 50us)?
一个 ICSSG 保留用于实时以太网通信。 在第二个 ICSSG 上、仍然可以执行其他命令。 据我所知、有三个减贫单位。 我们为 SigmaDelta 转换器保留了 PRU0。 可以将 PRU1 或 PRU2 用于此任务吗?
谢谢您、
Mathias
您好、Mathias、
如果您仅使用 R5F 内核、则上述方法 有效。 但是、由于您已经熟悉 PRU 内核、因此建议继续使用它们来满足此要求。
您的要求是每 X µs 传输一次数据、并且能够在开始传输之前配置 0 到 50µs 范围内的延迟。
在 PRU 内核上、这可以通过 IEP 计时器来实现。 IEP 计时器计数器可以使用与所需延迟 (0–50µs) 相对应的比较值进行编程。 当发生比较事件时、PRU 固件随后可以控制其 GPIO 引脚 (R30/R31)、以在确切编程的时间生成 SPI 信号。
此方法可让您 实现高度确定性的时序。由于此要求涉及详细的 PRU 编程、我会将您的问题路由给我们的 PRU 专家、他们可以帮助您了解实现细节并提供示例代码片段。
此致、
Anil
您好 Anil、
感谢您的解释。 目前我不需要详细的解决方案、但我只需知道有两个不同的选项 (R5F 内核、带中断和 PRU)、 我们只是在规划资源的过程中。
我不会说我熟悉 PRU 主题。 我只对它有一个粗略的想法。 遗憾的是、TI 有时会使用大量缩写来表示同一件事、这并不一定会使其更容易理解。 也许您可以澄清一些一般性问题:
谢谢!
Mathias
您好、Mathias、
我今天不在办公室、星期一也不在办公室。 下周我们能给大家多聊一聊。
回答您的具体问题
AM243x/AM64x 上的每个 PRU 子系统(其中 AM64x 基本上是 AM243x + A53 内核)都是 PRU_ICSSG。 每个子系统有 6 个内核、每个子系统分为 2 个“片“、其中每个片有 3 个内核 (PRU、RTU、TX_PRU)。 每个内核具有相同的处理能力、但与 PRU GPI/GPO 引脚的连接不同。 听起来您并不关心此时是否使用 PRU 内核读取/写入处理器引脚。
所以 AM64x 总共有 12 个 PRU 内核。
我们将每个 PRU 子系统分为 2 个切片、因为(只要共享存储器区域得到正确划分)、我们可将每个切片设置为独立工作。 因此、单个 PRU 子系统可以支持 2 千兆位以太网链路、每个片一个以太网链路。
供参考:PRU 学院将于本月晚些时候推出
我目前正在编写 AM243x 的 PRU 学院、它将在 AM243x 学院中作为新模块显示:
https://dev.ti.com/tirex/explore/node?node=A__AEIJm0rwIeU.2P1OBWwlaA__AM24X-ACADEMY__ZPSnq-h__LATEST
以及为初始发行版做好新的 open-PRU 存储库准备:
https://github.com/TexasInstruments/open-pru
PRU Academy 将包含大量信息、包括将 PRU 入门实验移植到 AM243x。 现在、在我至少合并文档更新之前、请避免将太多时间花在 open-PRU 上:
https://github.com/TexasInstruments/open-pru/pull/58
但是、如果您可以等待几周、那么当我拥有完整 PRU Academy 的代码和文档时、将会更加流畅。
如果您想在 PRU Academy 的第一版上线时收到通知、请直接向我发送一封电子邮件、其中包含您的电子邮件地址。
与 IEP 计时器交互的示例代码?
PRU 子系统有一堆加速器和外设、PRU 内核可以进行一些很酷的编程、这在其他内核上具有挑战性。 我的最终目标是在 PRU Academy 中为每个外设和加速器提供示例代码。
我尚未编写 IEP 代码。 但是、如果您决定在设计中使用 PRU 和 IEP 计时器、我们可以协同工作、为您和学院编写一些代码。 我将从 10 月左右开始提供带宽。 我们可以使用早期 PRU 处理器的一些现有代码段作为参考、例如 https://git.ti.com/cgit/pru-software-support-package/pru-software-support-package/tree/examples/am335x/PRU_IEP
此致、
Nick