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.

[参考译文] TCAN4550:SPI 传输

Guru**** 2894990 points

Other Parts Discussed in Thread: TCAN4550

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1642600/tcan4550-spi-transfer

器件型号: TCAN4550

大家好、有一个有关 TCAN4550 SPI 通信的问题。
长度字节对 SDI 有什么影响? 是否仅适用于 SPI 相关的 STATUS 寄存器位、没有进一步/功能影响?  
SPI 传输是否可以提前终止(前提是它们在一个字“边界“上被 termianed)、并且 TCAN4550 会正确处理实际通过 SPI 传输的数据(器件)(未被丢弃)?
例如、当传输的长度字节指示 24 个字时、SPI 写入会发生什么情况?但 SPI 传输在(完全)10 个字之后提前终止(通过 nCS)? 是否会将 10 个字传输到 MRAM、并且 MC 可以使用调整后的地址和长度为 14 的数据字开始新的/下一次传输?

谢谢你。

 

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

    AP 尊敬的:

    有关在 SPI 事务期间使用长度字段的更多详细信息、请参阅 TCAN45xx 软件用户指南(链接)的软件优化提示第 5 节。

    每个 SPI 读取/写入事务都必须包含一个 32 位(或一个字)SPI 标头、其中包含读取/写入操作码 (0x41 或 0x61)、起始寄存器或 MRAM 地址、以及将在事务中读取或写入的 32 位数据字的数量或 SPI 事务数据部分的“长度“。

    长度字段可设置为 1 个数据字最多 255 个数据字允许将数据批量传输到连续寄存器或 MRAM 块、并且无需在每个寄存器或也需要新 32 位标头字的 MRAM 块读取/写入事务之间切换芯片选择、从而提高效率。  这有时被称为“突发读取和写入“。

    但是、需要遵循一些规则以避免错误。  该器件在与 MCU 的 SPI 接口上使用 FIFO 来处理 MCU 使用的 SPI 时钟与数字内核使用的高速 OSC 时钟之间的频域交叉。  该器件具有一些监控和错误检查功能、可确保通过 FIFO 传递的 SPI 数据正确并且不包含错误。

    • 长度字段不能为零、并且每个读取/写入事务必须至少有一个 32 位数据字。
    • 传输的数据位的数量必须采用完整的 32 位字。   
    • 传输的数据字数必须与标头的 Length 字段中设置的值相匹配。
    • SPI 片选信号必须在 SPI 事务开始时切换为低电平、在整个 SPI 事务内保持低电平、并在 SPI 事务结束时切换为高电平
    • SPI 时钟频率需要至少比 OSC 频率小 2MHz、以确保数字内核有时间在 MCU 在 SPI 读取时使用 SPI 时钟将寄存器或 MRAM 读取数据返回到 FIFO 中。

    如果违反了这些规则中的任何一个、则由于通过 FIFO 的位数不正确、会出现 SPI 错误、这将导致状态寄存器 0x000C 中的相关位被设置、并设置器件中断寄存器 0x0820 中的 SPIERR 标志、这可能导致中断引脚 (nINT) 拉至低电平。

    如果读取时发生 SPI 错误、返回到 MCU 的数据可能包含错误。  这种情况的一个可能原因是 SPI 时钟上存在噪声干扰、导致错误的时钟边沿、从而导致额外的错误数据样本、从而导致额外的数据位。  这将违反传输的数据位并未在有效的 32 位边界上结束。   

    如果 SPI 写入时发生错误、器件可能会丢弃新的传入寄存器或数据值、因为它可能已损坏、并且应重复进行寄存器写入以确保将正确的值写入寄存器。

    如果 SPI 事务在传输正确数量的数据字之前终止(例如,用户建议的 10 而不是 24)、则会导致 FIFO 下溢 SPI 错误。  在这些突发写入期间、器件会开始写入 MRAM 块、因此存储器单元可能会写入新值。  如果芯片选择以确切的 32 位字边界结束、则可能是前 10 个单元写入了新值、并且可以在其余 14 个单元上执行具有 14 个字的新 SPI 事务。   

    但是、如果 SPI 读取或写入事务导致设置了一个或多个 SPI 错误位、则建议将整个事务重复一个确实会导致设置一个或多个 SPI 错误位的事务、从而确保传输的数据是正确的。

    此致、

    Jonathan