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.

[参考译文] MSPM0G3519:SPI + DMA 意外波形

Guru**** 2810285 points

Other Parts Discussed in Thread: MSPM0G3519

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1625910/mspm0g3519-spi-dma-unexpected-waveform

器件型号: MSPM0G3519

您好:

我们正在验证配置为控制器的 MSPM0G3519 SPI、以通过 DMA 发送超过 60KB 的数据。 作为测试、我们发送 0-9 个 ASCII 数据来观察信号行为、当我们连接逻辑分析仪时、我们观察到 SPI 传输之间存在某种延迟、每次 SPI 传输之间始终有 2 个 SPI 时钟。 检查开机自检下面附加的图像。  

我们尝试了几种不同的配置:打包使能位、SPI16 位帧长度、4 字节的 DMA 传输大小、更改 SPI 模块时钟源、更改比特率。 但最后始终存在 2 个 SPI 时钟延迟。 是否有人知道是否可以用我们缺少的某些配置来消除这种情况?

 

在下面查找 sysconf 的测试代码和屏幕截图:

SPI-TX-DMA-TEST

 

Sysconf0.png

Sysconf1.png

提前感谢您的答复。

Dhery

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

    你(们)好  

    发生此行为是因为 SPI TX FIFO 在 DMA 传输之间变为空。 当 FIFO 清空时、SPI 控制器会暂停时钟、直到新数据到达。 该延迟的原因如下:

    DMA 请求服务延迟 — SPI 请求数据与 DMA 发送数据之间的时间
    FIFO 阈值配置 — DMA 可能触发得太晚(FIFO 已为空时)
    3.单次传输模式 — 每个字节触发一个单独的 DMA 事务

    您可以尝试在下面进行一些修改:

    1.将传输模式修改为块,确保大小小于空 FIFO 深度。 如果使用阈值 1/4 空、则大小应小于 3/4 空。

    2.修改 TX FIFO 阈值、使其像<=1/4 空、从而在 FIFO 为空之前触发 DMA

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

    您好、Gary、

    感谢您的响应、我尝试了一项简单更改、将 DMA 传输模式修改为块、并将传输大小设置为 4、TX FIFO 阈值仍为空。 据我所知、每次 TX-FIFO 为空时、将用 4 个字节填充 TX-FIFO。 我希望观察到 SPI 传输的 4 个字节之间没有任何延迟的波形、但所有帧之间存在相同的延迟。 找到下面的图像。

    如果我错了、请更正我、但 通过此更改、4 个字节的数据应该位于 FIFO 上、并且我观察到的延迟不应该存在。

    此外、我尝试在 TRM 中吸收 DMA 延迟、但我无法找到它。 您知道我在哪里可以找到这些信息吗?

    谢谢你


    Dhery

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

    这似乎是由于时钟相位的配置造成的。 将时钟相位配置为 0 以在时钟的第一个边沿对数据进行采样时、硬件需要插入一个周期来准备数据。 如果您将时钟相位配置为 1、则不会出现此类问题。

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

    您好、Gary、

    非常感谢、这解决了我们的问题。 现在波形符合预期。

    此致、

    Dhery