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:对读取器件 ID 寄存器无响应

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1257962/tcan4550-no-response-to-a-read-of-device-id-register

器件型号:TCAN4550

当我尝试在循环中读取 TCAN4550器件 ID 时、第一次没有得到响应。

这个请求后、我读取状态寄存器(0x000C)、它为我提供0x0031000A 作为响应。 这意味着会设置"SPI_END_ERROR"、"Invalid _command"、"read_undersfow"、"Internal_access_active"和"SPI_ERROR_INTERRUPT"位。 我不确定这些错误为什么会发生。

下面是一些示波器屏幕截图:
(为清楚起见、CLK 为黄色、nCS 为粉色、MISO 为蓝色、MOSI 为绿色)


这显示了两个请求;器件 ID (第一个块)和状态寄存器(第二个块)。


这显示了器件 ID 寄存器(地址0x0000)的请求、但 MISO 上没有数据。

这些消息位于循环中。 下次 MCU 输入该代码时、TCAN 会发送响应:

尽管状态寄存器仍设置为0x0031000A (与之前相同)。

是什么导致设置这些错误位? 如何修复这些错误?

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

    你好、Laura。

    我在第二个示波器图中注意到您分享了当 NCS 信号在 SPI 读取开始时转换为低电平时 SCLK 为高电平。  这种情况不正确、可能是导致 SPI 错误的原因。  

    TCAN4550计算 NCS 转换为低电平和高电平之间的时钟周期。  如果时钟周期的数量不正确(即32的倍数或基于长度字段的正确数字)、则会标记 SPI 错误。  因此、大多数 SPI 错误是由错误的时钟周期/边沿数量或错误的长度字段引起的。  

    此图显示长度字段为0x02、它需要96个时钟周期、这是正确的、因为每次突发中都有16个时钟周期。  这是正确的、但初始下降时钟沿可能会导致问题。

    其他显示数据在 MISO 时返回的图在 nCS 转换为低电平时将 SCLK 从低电平启动。  在启动 SPI 序列之前尝试纠正 SCLK 值、使其具有初始低电平值、看看这是否可以解决问题。

    此致、

    乔纳森

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

    Jonathan、您好!

    感谢您的解释! 我向 CLK 添加了软件下拉、这样 CLK 的初始状态就为低电平。

    我现在收到了第一次阅读请求的答复! 所以这确实解决了我的问题!

    再次感谢!

x 出现错误。请重试或与管理员联系。