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.

[参考译文] TCAN4551-Q1:SPI 芯片选择要求

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/991108/tcan4551-q1-spi-chip-select-requirement

器件型号:TCAN4551-Q1

如果我有一个处理器作为 SPI 主器件、而 TCAN4551作为从器件、 那么我是否需要在每次传输后升高 CS 线路?  

我是否可以在第一次事务之前降低 CS 线路、然后将其永远保持低电平?

这种行为是否需要不同的时钟极性? 例如、如果内部时钟首先降低 CS、但我不会在每次事务期间降低 CS、那么器件接收数据是否会出现问题?

提前感谢。

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

    ED、

    有关 SPI 通信的详细信息从数据表的第39页开始、但对于 CS 系列、我认为您需要在每次 SPI 传输后将其恢复为高电平。  

    我已将其分配给了一位器件专家、他将相应地做出响应。

    此致、

    Eric Hackett  

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

    谢谢 Eric。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="482283" URL"~/support/interface/f/interface-forum/991108/tcan4551-q1-spi-chip-select-requirement "]

    如果我有一个处理器作为 SPI 主器件、而 TCAN4551作为从器件、 那么我是否需要在每次传输后升高 CS 线路?  

    我是否可以在第一次事务之前降低 CS 线路、然后将其永远保持低电平?

    这种行为是否需要不同的时钟极性? 例如、如果内部时钟首先降低 CS、但我不会在每次事务期间降低 CS、那么器件接收数据是否会出现问题?

    [/报价]

    尊敬的 Ed:

    您的问题的简短答案是"是"、您必须在每个 SPI 事务结束时提交 CS 线路、否则将生成"SPI 错误"、并且将在中断寄存器中设置 SPIERR 位。

    您不能永远将 CS 引脚保持低电平、因为器件将不知道第一个 SPI 事务何时结束、以及下一个事务何时开始、这将导致错误。

    我将解释两个主要原因。

    1) 作为一种错误检查形式、TCAN4551将对 CS 引脚转换为低电平和恢复高电平之间的 SPI 时钟脉冲数进行计数。  如果时钟边沿的数量不是32个(或1个字的数据)的精确倍数、那么它将假定有一个错误并且任一位丢失(时钟周期太少)、 或者、有噪声为不存在的位创建额外的样本(时钟周期过多)。  然后、器件将在中断寄存器中设置 SPIERR 标志、以便 MCU 知道最后一个 SPI 事务存在问题、如果该事务是"写入"(0x61)事务、器件还将丢弃该事务的数据。

    由于每个器件寄存器和 MRAM 数据偏移地址包含32位数据、并且发送的初始运算代码、地址和数据长度为32位、因此单个寄存器 R/W 事务将包含2个字或64位数据(或 SPI 时钟周期)。  但是、多个寄存器或 MRAM 存储器字可在单个事务中读取、从而允许读取32位(64、96、128、160等)的任意倍数。  一次读取和写入多个寄存器和数据字可消除每个位置要发送的地址字、从而减少 SPI 总线上的开销、并提高整体效率。 如果 CS 引脚未变为高电平、器件将不知道该事务何时完成。

    2) 第二个原因是、在 CS 引脚变为低电平后、器件将立即返回 SDO 引脚上的全局故障标志。  这样、MCU 就可以立即知道每个 SPI 事务是否发生了故障、而无需专门轮询状态和中断寄存器。  其中包括 SPI 错误标志、允许 MCU 立即知道是否需要重复之前的 SPI 事务。

    如果 CS 引脚在上一个 SPI 事务结束时从未转换为高电平、则它无法在下一个 SPI 事务开始时再次转换为低电平、并且无法向 MCU 提供故障标志的更新状态。

    我知道、当 SPI 总线上只有一个器件时、其他器件通常会将 CS 引脚保持为低电平、但这些器件在 SPI 事务中通常具有固定的位数、 它们没有在每个 SPI 事务开始时返回状态数据和计算时钟周期数以检查错误的高级功能。

    此致、

    Jonathan

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

    很好。 非常感谢 Jonathan 的解释。