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.
大家好、
我对 TMS320F28377S 和它的´s SPI´s DMA 连接有疑问。 技术参考指南中的内容是 SPI 硬件没有 Nativ 芯片选择硬件、
相反、用户必须为每个从器件编程一个 GPIO 引脚才能执行该任务。
配置 GPIO 以模拟 SPISTE
在许多系统中、可以使用的多个实例将 SPI 主器件连接到多个 SPI 从器件
SPISTE。 尽管此 SPI 模块本身不支持多个 SPISTE 信号、但也可以
使用 GPIO 在软件中模拟此行为。 在此配置中、SPI 必须配置为
主器件。 与使用 GPIO 多路复用器选择 SPISTE 不同、应用会将引脚配置为
GPIO 输出、每个 SPI 从器件一个 GPIO。 在传输任何数据之前、应用程序将驱动
所需的 GPIO 进入活动状态。 在传输完成后、即 GPIO 芯片
选择将被驱动至非活动状态。 对于共享的多个从器件、可以重复此过程
SPICLK、SPISIMO 和 SPISOMI 线路。
到目前为止都很好。
我n´t 的是、SPI 有一个16级缓冲器以及一个 DMA 连接(尤其是 DMA 让我感到奇怪、因为另一个 HW´s DO 具有 DMA)。
例如、许多 SPI 从器件在每个数据字之后需要一个上升沿。 但是、´s 我将所有数据´到 SPI´s 缓冲器器 DMA 中、从器件会被数据速率为1 μ s、而不会有同步的芯片选择、
并将处理数据。 基本上、我认为 DMA 类似于"配置并忘记"。
因此、如果大多数从器件由于所需的 CHIP_SELECT 引脚而无法利用 SPI 的 DMA 连接、那么我并不真正理解 SPI 的 DMA 连接的意义。
在我的特定情况下、我有一个从器件、每个数据字需要24位、每个字之后需要一个上升沿。 目前、我将24位拆分为2*12位、并将其放置到 SPI 移位寄存器中。
那么、目前我必须这么做
-将 CHIP_SELECT 置为有效、
-发送前12位、
-当12位移出时获得中断并发送第二个12位
-当第2个12位被输出时获得中断并将 CHIP_SELECT 置为无效
此致、
Jasson