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.

[参考译文] SPI -如何防止SPI数据寄存器(FIFO缓冲器)上的竞争状态(写入冲突)?

Guru**** 2461690 points


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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/600334/spi---how-to-prevent-race-condition-write-collision-on-spi-data-register-fifo-buffer

众所周知,如果在传输过程中写入SPDR,并且在SPI状态寄存器中设置了WCOL位,则会发生写入冲突。 AFAIK,一些芯片以这种方式处理写冲突:在这种情况下,将不执行写操作,并且传输继续不受干扰。 写入程序可以检查WCOL位以查看写入是否成功。

 

当传输已在进行中时,会发生上述写入冲突。 现在,请考虑以下两种情况,当传输尚未启动时会发生写冲突:

-SPI从机正在将SPDR (数据寄存器)(或RX FIFO缓冲器)的内容读取到自己的内存中,同时SPI主机开始传输。 因此,SPI从属设备将从SPDR读取损坏(覆盖)的数据。

-SPI SAVVE正在将数据从其内存写入SPDR (或TX FIFO缓冲器),同时,SPI主节点开始传输。 因此,SPI从属设备将向SPDR发送损坏的数据。

这两种情况通常发生在从端,因为SPI从端对定时没有控制。

 

我们计划在产品中使用TDA2x系列(精确芯片尚未确定)。 不确定TI是否会以同样的方式处理第一种情况,以及如何处理后两种情况?

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

    TI有几个不同的团队,他们的器件使用SPI,我希望确保将您的问题发送到正确的位置。 是否有您有疑问的特定部件号?

    最大
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    大家好,Max,我们将使用TDA2x系列,但确切的芯片尚未确定。 感谢您的回复。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Mingynag,

    感谢您提供信息。 我已将此线程与我们的TDA2x系列设备关联,以便该团队中的人员可以查看并回复您。

    此致,
    最大