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-Q1:CCCR.INT 变化条件

Guru**** 2609285 points
Other Parts Discussed in Thread: TCAN4550-Q1, TCAN4550

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1499872/tcan4550-q1-cccr-int-change-conditions

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

工具/软件:

您好团队:

根据数据表、当 MODE_SEL 从待机切换到正常时、CCCR.INT 应自动写入0、但在实际开发中发现相关寄存器仍为1、因此客户想知道是否有任何其他条件可以更改该位?

谢谢!

此致、

Daniel Wang

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

    尊敬的 Daniel:

    这不是我的意见。  他们能否提供有关这一声明的更多信息、例如其配置序列的寄存器写入和读取值的具体列表?

    此致、

    Jonathan

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

    尊敬的 Jonathan:

    我们 将 TCAN4550-Q1与 AutoSAR MCAL 配合使用。 我们根据演示程序切换了 CAN 收发器和控制器状态。 收发器的初始状态配置为待机模式。 我们调用 API CanTrcv_44_TCAN4x5x_SetOpMode 将状态切换到 CANTRCV_TRCVMODE_NORMAL、然后调用 API Can_44_TCAN4x5x_SetControllerMode 将控制器状态切换到 CAN_T_START。 但是、呼叫失败。 失败的功能是 Can_44_TCAN4x5x_MCAN_ResetInit。 检查 CCCR 寄存器后、我们发现尝试写入0x18、但读取的值为0x19。

    收发器初始状态为待机模式0x0800寄存器值:μ s

    将收发器状态切换到正常模式0x0800寄存器值

    初始状态 CCCR 寄存器值:

    尝试写入0x18:

    读取值:

    那么、如果我们要使用基于您提供的 AUTOSAR 的 MCAL 插件、上述步骤是否正确、是否需要配置任何其他选项?

    谢谢!  

    此致、

    正超

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

    尊敬的 Zhengchao

    与 MCAL 驱动程序附带的信息相比、我没有任何其他信息。  但是、我对以下步骤有一个顾虑:

    [引述 userid="650515" url="~/support/interface-group/interface/f/interface-forum/1499872/tcan4550-q1-cccr-int-change-conditions/5767331 #576731"]

    尝试写入0x18:

    [/报价]

    数据表指出、不应将"1"写入 CCCR 寄存器的时钟停止请求(CSR)位4。  如果他们向 CCCR 寄存器0x1018写入值0x00000018、则他们正在执行此操作、这将停止 MCAN 控制器、并导致 INIT 位0也设置为1。  此位将读回1、但在所有写入中应始终为0。

    此致、

    Jonathan

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

    尊敬的 Jonathan:

    感谢您的指导。

    我们成功将控制器状态切换到 CAN_T_START、但尝试发送 CAN 消息失败。 寄存器状态如下:

    0x0800:

    控制寄存器0x1018:

    状态0x000C:

    中断0x0820:

    协议:寄存器0x1044 μ s

    错误计数器寄存器0x1040:

    检查寄存器0x0820后、我们发现 CANSLNT 设置为1。 根据数据表、正常模式下该位不应为1。 您能否解释一下在什么情况下该位将设置为1、以及我们可以检查哪些其他寄存器以进一步分析该问题?

    此外、检查寄存器0x1044中的 LEC 位时、错误为 AckError。 您能否确认此错误是否由 CANSLNT 引起?

    谢谢!  

    此致、

    正超

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

    尊敬的 Zhengchao

    检查寄存器0x0820后、我们发现 CANSLNT 设置为1。 根据数据表、正常模式下该位不应为1。 您能否解释一下在什么情况下该位将设置为1、以及我们可以检查哪些其他寄存器以进一步分析问题?

    在正常 CAN 总线通信下、假设总线应在总线上具有足够的消息活动、以防止长时间出现空闲或隐性状态。  这样做的原因有多种、包括将 CAN 控制器时钟保持在其他节点的容差范围内以正确对这些位进行采样、还有助于验证节点未与总线断开连接、这会是一种故障情况。

    当大约1秒内未检测到 CAN 总线活动(隐性到显性、或显性到隐性转换)时、将设置 CAN 静音(CANSLNT)位。  计时器阈值可能在0.6s 至1.2s 之间的器件和 PVT 条件之间变化。  在采用点对点测试设置的实验室测试条件下、由于基于人类命令传输的 CAN 消息很少、而不是作为全功能自主系统的一部分、因此通常会看到 CANSLNT 位被置位。  

    此外、检查寄存器0x1044中的 LEC 位后、错误是 AckError。 您能否确认此错误是否由 CANSLNT 引起?

    设置 CANSLNT 位不会影响器件发送或接收 CAN 消息的能力、这只是一条通知、表明检测到超过1秒没有 CAN 活动。

    当一条消息在 CAN 总线上发送但未接收到来自总线上另一个 CAN 节点的确认(ACK)响应或错误帧时、会发生 AckError。  因此、当一条消息发送到空总线时、它不会接收 ACK、它会将其视为发送错误、因为另一个节点未成功接收并已确认、它通常会自动尝试重新发送该消息、直到有另一个节点提供 ACK 响应。

    此致、

    Jonathan

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

    尊敬的 Jonathan:

    那么、我是否可以理解当前寄存器状态是正常的、而 AckError 是由外部节点的响应引起的? 如果我想验证 TCAN4550是否已成功传输、可以使用示波器测量信号。

    谢谢!  

    此致、

    正超

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

    尊敬的 Zhengchao

    是、AckErrors 是发送的消息未接收到来自总线上另一个节点的确认脉冲的结果。  这也意味着消息上也没有抛出其他错误标志。  

    但基本上、这意味着该消息是在总线上传输的、在这种情况下、没有其他节点能够接收消息并确认它确实包含值得使用错误标志的协议错误。

    当没有大量正常运行的 CAN 节点时、或者当总线刚刚启动并且第一个节点在读取任何其他节点进行通信之前传输消息时、这些在实验室设置中很常见。

    是的、您应该始终能够使用范围来验证消息是否已传输。

    此致、

    Jonathan

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

    您好  Jonathan、

    我们使用示波器来测量 CAN_H 和 CAN_L、并且来自 TCAN4550的信号如下:

    然而,我没有收到任何使用独木舟的信息。 因此、我希望您确认寄存器值是否存在问题。 读取的寄存器信息如下(仅一些寄存器):

    此外、我们还使用您提供的 EB tresos 插件。 我希望您检查配置信息以查看我的配置是否有任何问题:

    1个 CAN 控制器:

    2 CAN Trcv:  

    非常感谢!

    此致、

    正超

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

    尊敬的 Zhengchao:

    很抱歉耽误你的时间。  感谢您耐心等待我上周离开办公室。

    MCAN 中断寄存器设置了位27、24和23、用于 PEA (仲裁段中的协议错误、使用标称位时间)、EW (错误警告状态)和 EP (错误被动)。  这表明位时序或时钟可能存在问题、从而导致错误的位时序配置、从而导致 CAN 消息在配置正确的其他器件中产生错误。

    错误计数器寄存器(0x1040)也显示正在累积 CEL 和 TEC 错误。

    运行模式和引脚配置寄存器0x0800将 CLK_REF 位设置为1 (位27)、告诉器件晶体频率为40MHz、 但您的配置似乎指示晶体频率为20MHz。

    您没有提供实际标称位时序和预分频器寄存器(0x101C)值、但在使用20MHz 晶体时、您的时间量子配置对于500kbps 来说是正确的。  

    验证寄存器0x101C 的值是否与所需配置相匹配。  还要测量示波器上的位周期、确保其对于500kbps 位的宽度正确、应为2us。

    TX 缓冲区配置寄存器(0x10CC)确实显示有一条 TX 消息挂起传输未成功、因此这指示可能的位时序配置、从而阻止任何其他 CAN 节点(例如 Canoe)将位时序识别为正确。  这将解释位错误、缺少确认和 TX 消息挂起状态。

    验证位时序是否与 TCAN4550-Q1和 CANoe 配置兼容、然后重试。

    此致、

    Jonathan