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:测试模式下的状态清晰度

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1289518/tcan4551-q1-state-clarity-in-test-mode

器件型号:TCAN4551-Q1
主题中讨论的其他器件:TCAN4550ISO1044

您好!

我们将 tcan4551器件与外部收发器结合使用。 我将扫描部件置于测试模式(控制器模式)、在为器件加电时情况似乎正常。

但是、当我将器件从网络断开并重新连接时、看起来 tcan4551处于某些状态、我没有看到任何中断生成(中断线路保持高电平)、没有 SPI 通信。

断开器件与网络的连接会断开外部收发器的电源、但 TCAN4551仍会持续通电。

由于 tcan4551未在正常模式下而是在测试模式下运行、因此它在这些条件下是否进入不同的状态?

此外、如果我立即断开并重新连接(不到5秒左右)、情况似乎正常。 但是、如果我等待大约10秒、然后尝试重新连接、则无法与网络建立通信。

对 Tcan 器件的情况有什么建议吗?

谢谢!

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

    G T、您好!

    您能帮助说明"网络"的全部内容吗?  我假设这是 CANH、CANL、也可能是收发器的电源和接地。  

    您还能介绍一下 TCAN4551和 MCU 电源连接吗?  VSUP 和 VIO 电源轨是如何供电的、它们在与网络断开时是否开启并稳定?

    是否已将寄存器0x0800中的 FAIL_SAFE_EN 位设置为"1"?  如果是这样、当您从 CAN 总线断开连接时、由于 CAN 总线处于"静默"状态或没有活动、TCAN4551可能会在一段时间后进入睡眠模式。  如果器件确实进入睡眠模式、则不会有 SPI 通信。  不过、器件进入睡眠模式通常需要几分钟。

    当您从 CAN 总线断开连接时、MCU 和 TCAN4551是否仍在尝试发送/接收任何 CAN 消息?  断开网络连接时、MCU 和 TCAN4550之间是否仍在进行 SPI 活动?

    在执行该测试时、您能否监控 nWKRQ 或 INH 引脚以查看它们上是否有任何状态变化?  如果器件进入睡眠模式、这些引脚将发生状态变化。

    您为 TCAN4551使用哪种类型的时钟?  是晶体吗?  

    此致、

    乔纳森

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

    您能帮助说明"网络"的全部内容吗?  我假设这是 CANH、CANL、也可能是收发器的电源和接地。  

    是的、正确。

    您还能介绍一下 TCAN4551和 MCU 电源连接吗?  VSUP 和 VIO 电源轨是如何供电的、它们在与网络断开时是否开启并稳定?

    二者均由系统而不是总线供电、并且不会因网络断开而中断。

    是否已将寄存器0x0800中的 FAIL_SAFE_EN 位设置为"1"?  如果是这样、当您从 CAN 总线断开连接时、由于 CAN 总线处于"静默"状态或没有活动、TCAN4551可能会在一段时间后进入睡眠模式。  如果器件确实进入睡眠模式、则不会有 SPI 通信。  不过、器件进入睡眠模式通常需要几分钟。

    否、 FAIL_SAFE_EN 设置为0。

    当您从 CAN 总线断开连接时、MCU 和 TCAN4551是否仍在尝试发送/接收任何 CAN 消息?  断开网络连接时、MCU 和 TCAN4550之间是否仍在进行 SPI 活动?

    是的、我们有 MCU 定期传输的心跳信号、即使断开连接时、我仍然周期性地看到 SPI 芯片选择活动。

    在执行该测试时、您能否监控 nWKRQ 或 INH 引脚以查看它们上是否有任何状态变化?  如果器件进入睡眠模式、这些引脚将发生状态变化。

    nWKRQ 和 INH 引脚始终保持低电平、即使有通信时也是如此、即使通信停止时我也看不到它们的状态发生任何变化。 这两个引脚在板上保持悬空。

    您为 TCAN4551使用哪种类型的时钟?  是晶体吗?  

    是的、它使用的是20 MHz xtal。

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

    感谢您提供更多信息。  

    配置寄存器0x0800 [9]中的 Inhibit Disable (INH_DIS)位的值是多少?  默认情况下、INH 引脚处于启用状态、并且应在器件上电时将其驱动为高电平(达到 VSUP 电压电平)。

    如果 VSUP 和 VIO 导通并稳定、nWKRQ 应该为低电平、INH 应该为高电平。  如果在 INH_DIS = 0时看到 INH 为低电平、那么这是无法预料的。

    我想确保我了解 MCU 正在向 TCAN4550发送检测信号 SPI 信号、并且您可以看到芯片选择切换、但 TCAN4550没有响应。  一般问题是、当您将收发器与 CAN 总线断开时、TCAN4550停止对 SPI 做出响应。  是这样吗?

    我不明白的两个问题是、为什么当 VSUP 稳定且器件未置于睡眠模式时 INH 引脚为低电平、以及当 CAN 总线与外部收发器的 CANH 和 CANL 引脚断开连接时 SPI 通信失败的原因。  如果 VSUP 导通、这两种观察结果都无法正常观察。  

    是否可以使用示波器进行验证、以确保在断开 CAN 总线之前、期间和之后 VSUP、VIO 和 VCCOUT 电源轨确实没有中断?

    在此过程中、是否还可以监控任何 SPI 数据以查看其何时停止工作?

    此致、

    乔纳森

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

    配置寄存器0x0800 [9]中的 Inhibit Disable (INH_DIS)位的值是多少?  默认情况下、INH 引脚处于启用状态、并且应在器件上电时将其驱动为高电平(达到 VSUP 电压电平)。

    如果 VSUP 和 VIO 导通并稳定、nWKRQ 应该为低电平、INH 应该为高电平。  如果在 INH_DIS = 0时看到 INH 为低电平、那么这是无法预料的。

    我更改了默认设置并将 INH_DIS 位配置为1。 我打算禁用此功能、因为 INH 未连接。

    我想确保我了解 MCU 正在向 TCAN4550发送检测信号 SPI 信号、并且您可以看到芯片选择切换、但 TCAN4550没有响应。  一般问题是、当您将收发器与 CAN 总线断开时、TCAN4550停止对 SPI 做出响应。  是这样吗?

    是的、这是正确的。 此外、当我将收发器重新连接到 CAN 总线时、当我探测 tcan 的 RxD 线时、可以看到来自 CAN 总线网络(其他 ECU)的数据、但没有 TCAN4551 (到 MCU)的 SPI 通信或 TXD 线(到收发器)上发送的任何数据。

    我将探测 VSUP、VIO 和 VCCOUT 电源轨并更新这些发现。

    我将尝试监控 SPI 数据、但看起来一旦收发器与 CAN 总线网络断开连接、来自 TCAN4551的 SPI 通信就会停止。 我一断开收发器的连接、就会在 SPI CS 线路(到 MCU)上没有任何活动、直到 MCU 发送到 TCAN4551 (通过 CAN 总线发送)的周期性心跳。

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

    谢谢。  

    对于 SPI 通信、器件需要 VSUP 为器件和数字内核供电、需要 VIO 为时钟电路供电、并设置 SPI 信号的电压电平转换器、并且器件必须处于待机或正常模式。  

    0x0000到0x000C 中的寄存器(器件 ID、修订版本和状态)在 SPI 时钟域之外工作、不需要20MHz 晶体工作。  电源仍需保持稳定。  任何与 SPI 相关的错误都应该在状态(0x000C)寄存器中可见。

    0x0800至0x08FF 和0x1000至0x10FF 地址空间中的所有其他器件寄存器都要求激活20MHz 晶体、以便为数字内核和 MCAN 控制器供电。  因此、如果功率或20MHz 晶体出现某些问题、到这些寄存器的 SPI 事务将失败、并且器件无法发送任何 CAN 消息。

    您是否还可以尝试将寄存器0x0000和0x000C 作为心跳测试循环以及模式配置和中断寄存器(0x0800、0x0820和0x0824)的一部分进行读取。  当读取寄存器0x0000到0x000C 时、您应该始终在 SDO (MISO)信号上看到数据。  

    此致、

    乔纳森

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

    大家好、Jonathan。我还没有读取寄存器、但我刚刚注意到、TCAN4551的时钟不是一个 xtal 振荡器、而是一个20 MHz MEMS 振荡器。 不确定这是否会影响我看到的内容。

    我将读取寄存器、让您知道我看到了什么。

    感谢您的帮助!

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

    大家好、G T:

    我认为只要时钟正常工作就没有关系。  如果无法正常工作、则可能出现通信错误。  我将等待您的更新。

    此致、

    乔纳森

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

    尊敬的 Jonathan:

    我开始在器件连接到网络的情况下定期读取 DEV IR、MCAN IR 和 PSR。 然后断开器件与 CAN 网络的连接、并在一分钟左右后将其重新连接回去。 刚开始重新连接器件、我就注意到 PSR 发生了变化。 看起来格式错误 LEC 已设置。 然后、我注意到了 MCAN IR 设置错误被动位。

    我要在这里粘贴日志的一部分、我每100ms 读取一次这些寄存器。

    [00:00:41.080,596] 3. DEV PSR-0x0000008a MCAN MCAN IR PSR-0x00000005 IR 0x0000070f -->器件与 CAN 总线断开连接
    [00:00:41.179,168] 3. DEV PSR-0x0000008a IR MCAN PSR-0x00000005 IR
    [00:00:41.277,801] 3. DEV PSR-0x0000008a MCAN MCAN IR PSR-0x08000005 IR 0x0000070a -->器件重新连接 至 CAN 总线
    [00:00:41.464,447] 3. DEV PSR-0x0000008a IR MCAN PSR-0x09800005 IR-0x00000748
    [00:00:41.562,957] 3. DEV PSR-0x0000008a IR MCAN PSR-0x09800005 IR-0x00000748
    [00:00:41.661,651] 3. DEV PSR-0x0000008a IR MCAN PSR-0x09800005 IR-0x00000748
    [00:00:41.760,223] 3. DEV PSR-0x0000008a IR MCAN PSR-0x09800005 IR-0x00000748

    这些是我在 tcan4551配置中设置的标称总线时序。

    TCANNomTiming.NominalBitRatePrescaler = 2;
    TCANNomTiming.NominalTqBeforeSamplePoint = 32;
    TCANNomTiming.NominalTqAfterSamplePoint = 8;

    如前所述、我将在测试模式下运行 TCAN4551、并将 TXD 和 RxD 连接到 TI 的 ISO1044隔离式 CAN 收发器。 收发器从 CAN 总线获取其 Vcc2。 这样、我通过将器件重新连接到 CAN 总线、高效地为收发器供电。

    你看什么,这对我来说不明显。 表单错误还有其他原因吗?

    谢谢!

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

    大家好、G T:

    DEV SPI-0x0000008a 表示您有某种 IR 错误、将在状态寄存器0x000C 中指示。  这可能是由于 SPI 驱动器错误导致某种形式的 SPI 协议错误、嘈杂或 SPI 信号质量较差、或者与时钟相关的一些问题。  位1也被置位以表示 MCAN IR 寄存器中的至少一个位已经被置位。  寄存器0x000C 的值是多少?  您经常会看到 SPI 错误吗?

    MCAN FIFO-0x00000005表示您在 RX IR 中丢失了消息。

    重新连接到总线后、MCAN IR PSR-08000005和 MCAN PSR-0x9800005与 IR 寄存器中报告的格式错误一致。  您可以正确解释寄存器数据、

    使用20MHz 晶体、我计算出的标称比特率为250kbps、采样点为80%。  是这样吗?  如果是、我不会看到位时序配置有问题、采样点应该是可以的。  

    我理解您的"我们正在为 tcan4551使用外部电容"语句是指晶体以及 OSC1和 OSC2引脚上的电容。  是这样吗?  这些电容器的值是多少、您是否对时钟电路进行了优化或测试、以确保时钟电路具有适当的频率并保持稳定?  请参阅 TCAN455x 时钟优化和设计指南应用手册(链接)。

    时钟漂移可能导致格式错误、在这种情况下、时钟或节点没有时间与 CAN 总线上的其他时钟同步。  如果20MHz 时钟频率超出可接受的容差、则时间份额将过长或过短、并最终导致采样问题、进而导致格式错误。

    如果器件在 CAN 总线上没有看到足够的显性到隐性转换、则 CAN 控制器可能没有时间同步到总线上的数据并尝试在错误的时间发送、从而导致错误。  您是尝试在重新连接到总线时立即发送消息、还是在重新连接后仅接收消息一小段时间?

    在此期间您的错误计数器寄存器值是多少(0x1040)?  您的错误是来自发送器、接收器还是同时来自错误计数器?

    对于 SPI 和 CAN 错误、一种可能的解释是系统时钟(晶体)受到干扰。  如果此时钟中断、TCAN4551将无法响应 SPI 或 CAN 消息。  如果时钟电路未优化且器件在 OSC2引脚上检测到低电压信号、从而导致器件切换到单端时钟模式、则可能会发生这种情况。  将 OSC2引脚接地是启用单端时钟模式的方法、但如果晶体上的振荡电压变得足够大、以至于最低峰值电压降至大约100mV 的阈值以下、 然后器件就会认为引脚已接地并立即切换到单端模式。  如果发生这种情况、器件将没有工作时钟、可能会发生 SPI 和 CAN 通信错误。  我不确定这是否适用于您的案例、但这可能是发生错误的原因。

    此致、

    乔纳森

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

    感谢您的指导、我会查看时钟优化指南应用手册。

    我没有 定期看到 SPI 总线错误。 如果我在连接到 CAN 总线后为器件通电、事情似乎是工作文件。 我没有看到任何错误。 我看到问题的唯一情况是、

    我从 CAN 网络断开并重新连接。

    我在不连接到总线的情况下为器件加电、然后连接到总线。

    这让我看看我们使用的外部收发器。  如前所述、我将在测试模式下运行 TCAN4551、并将 TXD 和 RxD 连接到 TI 的 ISO1044隔离式 CAN 收发器。 收发器从 CAN 总线获取其 Vcc2。 这样、我通过将器件重新连接到 CAN 总线、高效地为收发器供电。

    TCAN4551控制器始终处于通电状态并进行初始化状态。 断开器件与总线的连接唯一受到影响的是收发器的 Vcc2。 似乎是收发器侧功率的变化可能是导致错误的原因。 明白了吗?

    我会再次回答您的回答、并回答您的问题、但请让我知道您的想法。

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

    在断开器件与 CAN 总线的连接并重新连接之前、您是将器件置于待机模式还是设置 MCAN 控制寄存器中的 INIT 位?

    如果您只需从 CAN 总线上移除电路板、这将使收发器断电、但 TCAN4551-Q1中的 MCAN 控制器仍将处于正常模式、并且需要 RXD 和 TXD 信号上提供有效数据。  我希望在这种情况下会看到错误、因为 TXD 和 RXD 数据不是来自完整的消息或受控的数据。

    此致、

    乔纳森

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

    来解释行为。

    目前我没有将器件置于待机模式或设置 INIT 位。

    我只是从 CAN 总线断开电路板、然后在重新连接电路板后发现错误。

    我将使控制器处于待机状态、然后查看是否修复了这些错误。

    感谢你的帮助。

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

    大家好、G T:

    器件期望在正常模式下且 INIT=0时能够完全正常运行。  我认为问题在于、当它本质上被断电后、控制器认为有一个功能正常的收发器。

    如果更改为待机模式、则会自动将 INIT=1、以防止它在无法进行通信时在 CAN 总线上进行通信。  但是、如果您只想将 INIT=1设置为1、器件也可以保持在正常模式下。  从 CAN 通信的角度来看、最重要的一点是当器件与 CAN 总线断开连接时、init=1。

    我将等待您的更新。

    此致、

    乔纳森

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

    这似乎是一种方式。 我能够在我的板上验证这一点。

    谢谢!

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

    太好了、感谢确认。  如果我们还有其他需要帮助的地方、请告诉我们。

    此致、

    乔纳森