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:使用 SPI 硬件的 DMA 连接

Guru**** 2027820 points
Other Parts Discussed in Thread: TMS320F28377S
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/602474/tms320f28377s-use-of-dma-connection-of-the-spi-hardware

器件型号:TMS320F28377S

大家好、

我对 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

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Jasson、您好!

    首先、我要注意的是、SPI 具有一个硬件 STE 引脚。 如果您想与多个从器件进行通信、并将我们的器件用作主器件、则复制的有关 SPISTE 引脚仿真的部分适用于。

    DMA 的优势当然取决于您所指出的正在与之通信的器件。 DMA 更常用于接收数据、而不是用于传输、但它绝对可以同时用于两者。

    在您的情况下、我认为您应该能够使用我们的硬件 SPISTE 信号、而无需担心手动设置。 以下是我认为它应该发挥最佳作用的方式:

    (a)将两个12位字写入 SPI FIFO (也可以使用 DMA)
    (b)在 FIFO 模式下、SPISTE 信号在整个传输过程中应保持有效、并且在两个字传输完成后不会变为高电平

    此致、
    Kris
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、我太不了解了-板上有两个器件连接到 SPI。

    感谢您的回复、这样我就可以更好地分类我的想法!