TI中文支持网
TI专业的中文技术问题搜集分享网站

AM623: 不支持SPI作为从机的原因

Part Number:AM623

3.2.2.14. SPI — Processor SDK AM64X Documentation按照该链接了解到AM6231的SPI不支持从机模式,请问是A核的spi不支持还是M核的spi不支持呢?是所有的spi都不支持作为从机吗?因为什么原因呢?是芯片本身不支持还是没有相关驱动和设备树呢?如果是软件问题能否提供相应的资料呢?

Gary Lu:

本身不支持

,

bu yuying:

你好,为啥数据手册上是有支持的呢

,

Gary Lu:

为您咨询了资深工程师,这需要一些时间

,

Gary Lu:

您可以看TI的I2C Linux驱动程序不支持从机的逻辑(而RTOS驱动程序支持):e2e.ti.com/…/am3358-regarding-configuring-am335x-i2c1-bus-as-i2c-slave-and-communication-with-smbus-master

,

Gary Lu:

bu yuying 说:按照该链接了解到AM6231的SPI不支持从机模式,请问是A核的spi不支持还是M核的spi不支持呢?是所有的spi都不支持作为从机吗?

SPI从机模式与安全启动和加解密有什么关系?

虽然我们没有 AM62x SPI 从机模式的现成demo,但它本身可以在 AM62x 所属的所有 K3 平台上的 Linux 中工作。它将需要使用/设置 DMA。所有更改都可以通过设备树完成。

以下是一些适用的 E2E 线程:

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1262607/am3351-linux-support-for-spi-as-a-slave-device/4780250

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1301459/tda4al-q1-regarding-mcu-spi-slave-mode-configuration-issues

请注意,我们不建议在 Linux 中使用 SPI 从机模式,因为用户从流量控制的角度来管理数据会很困难。通常,如果您使用不同的接口(例如 UART)在两个设备之间进行通信和交换数据,则会更简单

,

bu yuying:

你好,谢谢你的解答,目前我们这边的设计是将FPGA与A核的spi相连接,FPGA作主机,A核做从机,然后FPGA给数据到A核,A核通过DMA将数据给到内存,所以需求需要A核这边支持做从机且使用DMA,请问你这边有什么建议吗?可以提供配置A核作为从机和使用DMA的相关步骤和操作吗?

,

BobLu:

作为一个非TI的工程师,我觉得你这个需求做成A核主机,FPGA从机会比较好,理由有:

1. SPI是一次传输,同时传主到从以及从到主,因此谁做主机只有一个谁先主动发起的区别,数据并没有方向性,如图、

2. FPGA做从机要比A核做从机更适合,由于FPGA并行运行的特点,做一个简单的逻辑加一个FIFO或者内存,就可以很容易的作为从机随时待命发送数据,而反观A核这边,不仅要忙操作系统同时还要随时响应SPI读取

3. A核做主机可以利用现成的库、代码、驱动,FPGA spi从机也有现成的代码,这样的开发难度是最低的

,

bu yuying:

这个方案主要FPGA那边没空间缓冲了且FPGA做ADC采集,采集完直接给到A核,A核做主机速度上满足不了,本来想着A核做从机然后DMA直接给到内存

,

BobLu:

那其实你这个问题隐含了一个跑linux的A核要及时响应FPGA这边数据的问题,按照经验一般非RT的linux在空载时可以达到几百微秒的响应时间,而RT的可以稳定在100多微秒,实际上如果linux这边能及时响应那你用GPIO来通知A核来通过SPI主机方式从FPGA读取也是可以的。

,

bu yuying:

谢谢你的建议,刚刚评估了一下,估计还是达不到要求,A核做主机你必须先给指令给到fpga然后FPGA才能给数据到A核,这其中也要消耗时间

,

Gary Lu:

bu yuying 说:目前我们这边的设计是将FPGA与A核的spi相连接

FPGA 设计 (RTL) 是否在您的控制之下?

您的应用程序期望/要求throughput/data rates是多少?

,

bu yuying:

数据量在一秒25.6kx64x16 Byte,FPGA那边没有缓存

,

Gary Lu:

已跟进

,

Gary Lu:

这大约是 26Mbytes/s,您将无法使用常规 SPI 接口来做到这一点。

如果您确实需要这种速度,并且考虑到您正在与 FPGA 进行通信(希望您可以自定义),那么使用 GPMC 接口可能可以实现这一目标(在 16 位模式下),但这可能需要在软件方面进行一些工作。GPMC 接口通常非常适合与 FPGA 的低级接口。

另一种选择是利用 PRU 加速器进行 FPGA 通信,请参阅:https://software-dl.ti.com/processor-sdk-linux/esd/AM62X/09_01_00_08/exports/docs/common/PRU-ICSS/Overview.html 

这一切工作的效果如何实际上取决于您的系统级信号流/处理需求。

赞(0)
未经允许不得转载:TI中文支持网 » AM623: 不支持SPI作为从机的原因
分享到: 更多 (0)