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 将 TCAN4551用作 CAN 控制器。
SPI 通信已设置、时序看起来正确。 尽管如此、TCAN 始终以0x88作为响应、根据数据表、这是一个 SPIERR。
所附的图像显示了 SPI 通信、我在其中未发现问题。
那么、为什么 TCAN 始终以0x88进行响应?
提前感谢。
尊敬的 Marco:
这是一个有趣的案例。 此处的波形显示 TCAN4551报告中断寄存器的0x88状态、但它不会对 SPI 消息的其余部分使用任何数据进行响应。 我希望通过 SPI 命令器的此波形、器件将使用其 ID 进行响应。 除了中断状态的第一个字节之外、有没有其他测试使 TCAN4551返回任何数据? 如果是、请尝试读取错误状态寄存器(h000C)。 这将使我们更深入地了解器件识别的 SPI 错误。
如果您根本无法从器件读取任何数据、我建议仔细检查 SDI 输入。 如果该信号未连接且 TCAN4551的输入保持高电平、则会将其识别为无效形式、并使其以无数据的方式以 SPI 错误进行响应。
让我知道您还能找到什么。
此致、
Eric Schott
尊敬的 Eric:
我还接收到用于 h000C 寄存器的0x88。
如果我移除 SDI 输入、则信号保持在0V。
我真的很喜欢这个:/
此致、
Marco
Marco、
您在此应用中的 VIO 电压是多少? 我提出这一要求是因为您的 MISO 和 MOSI 为2.2V、但您的 NCS 和 SCLK 高于5V。 这似乎不正确、可能是您的问题的一部分。
此致、
Eric Hackett
尊敬的 Eric:
我们已经可以解决此问题。 我们有一个缺陷 TCAN。 更改后、所有信号均为5V。
否、我们能够正确读取器件 ID、但0x88仍在消息中。
读取0x000C 寄存器会导致0x0330 0006。 根据数据表、仍然存在未屏蔽的 SPI 错误和无效 SPI 消息。
FIFO 似乎也有一些问题、但实际上不会发送或接收 CAN 消息。
在没有连接 OSC1/OSC2时钟的情况下、寄存器0x000C 是否可靠可读?
感谢您迄今提供的帮助和致以最诚挚的问候、
Marco
尊敬的 Marco:
是的、当外部时钟不可用时、可访问0x000C 寄存器。
如前所述、该寄存器的值表示先前的 SPI 命令已注册为无效。 这包括 SPI_END_ERROR 标志、指示 SPI 事务未在字节边界上结束。 这意味着 SPI 帧(一个 nCS 脉冲)不包含32 位的整数倍。 请检查所有 SPI 帧是否都符合此要求。 我建议在初始上电时检查这些信号线、因为有时启动条件会导致 nCS 脉冲产生无效数据。 如果是这种情况、请确保在启动后清除这些中断、以便捕获到任何后续中断条件。
或者、当一个较高的地址(>= h0800)而外部振荡器不稳定时、有可能发生这个错误。 如果中断在 SPI 事务之后似乎被设置、但在范围上没有可识别的问题、我们可能需要进一步研究。
您是否将外部晶体振荡器用于 OSC1/2引脚或单端时钟? 如果使用晶体、请查看下面的应用手册、了解有关此类设计需要考虑的不同注意事项的更多信息。
https://www.ti.com/lit/an/slla549/slla549.pdf?ts=1656532573184&ref_url=https%253A%252F%252Fwww.ti.com%252Fproduct%252FTCAN4550-Q1
此致、
Eric Schott