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:TCAN4550EVM 启用内部环回模式

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1500276/tcan4550-q1-tcan4550evm-enabling-internal-loopback-mode

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

工具/软件:

您好:

我正在使用 TCAN4550EVM 板、并已实现 SPI 通信以便正常工作、从而可以在 TCAN4550上读取和写入寄存器。 但是、我一直在尝试将芯片置于环回模式、以便可以开始从芯片的 RX FIFO 拉取并处理消息、但没有成功这样做。 我只是想确认我的配置、确保没有遗漏任何内容。

我使用提供的软件来配置芯片、包括 MRAM。 在芯片进入正常模式之前、我还配置测试寄存器(0x1010)以启用环回模式、并配置 cccr 寄存器(0x1018)以启用 MON 位、禁用外部信号且仅具有内部环回。  

TCAN4550 进入正常模式。  

 使用 TCAN4x5x_TCAN4550 在测试模式(TCAN4x5x_device_test_mode_controller)使 TCAN4550进入测试模式、并确保该函数返回 Device_Enable。  

然后、我使用提供的软件、即 main.c 中的第92-106行写入 TX 缓冲区、并使用第129行发送缓冲区。 我知道到这个步骤它是工作的、因为当不处于环回模式时、我在 CAN 总线上收到消息。 我还已验证是否将正确的数据写入 TX 缓冲区。  

但是、当尝试使用 main.c 中的第136-152行读取 RX FIFO 时、Rx 缓冲区为空。  

我已经查看了中断寄存器、并且 CANSLNT 位已置位。 同样在 mCAN 中断中、设置 TSW 位。 同样在 SPI 中断寄存器中、位3 Internal_access_active 为高电平。  

如果这里有任何问题、请告诉我。 我真的想让内部或外部环回在该芯片上运行。  

谢谢、  

Bennett

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

    尊敬的 Bennett:

    TCAN4550是 MCAN CAN FD 控制器和 CAN 收发器的组合。  系统级合规性测试包括 MCAN 特定测试和收发器特定测试、因此有一个测试模式允许通过 GPIO1和 GPO2引脚访问 TX 和 TX 信号。 还可能令人困惑的是、MCAN 控制器还具有一些环回测试形式的"测试模式"功能、不需要将内部 RX 和 TX 信号重新路由到 GPIO 引脚的器件级测试模式功能。

    TCAN4x5x_PECT Device_Enable 测试模式(TCAN4x5x_DEVICE_TEST_MODE_CONTROLLER) 该功能将断开 MCAN 控制器与收发器的连接、并将使用控制器测试模式、如下图的图8-11所示。  按红线分组的两种测试模式允许 MCAN 和收发器测试模式。  使用此函数启用的图8-10和图8-11都不是执行环回测试所需的内容。  但我认为您不 想使用它  TCAN4x5x_TestMode Device_Enable  功能、只需配置适当的 MCAN 寄存器即可。

    相反、MCAN 控制器 IP 也有一个"测试模式"允许进行内部或外部环回测试、客户需要改用这两种配置模式之一。  它们仅通过 MCAN 寄存器进行配置、两种红色配置不需要基于引脚的测试模式。

    首先、需要将控制寄存器中的测试位设置为"1"、以允许访问 LBCK 等测试寄存器位。  请确保0x1018[7]= 1。

    MCAN 控制器有两种形式的环回模式:内部模式和外部模式。  对于两种类型的环回、测试寄存器中的 LBCK 位需要设置为"1"。  请确保0x1010[4]= 1。  

    如果使用内部环回、则需要禁用发送器、这是通过同时将控制寄存器中的 MON 位设置为"1"来启用总线监控模式来实现的。  如果需要内部环回、请确保0x1018[5]= 1。

    以下图像来自 Bosch M_CAN 用户手册 (链接)和很好地展示了如何将器件配置为环回模式。  

    Unknown 说:
    我已经查看了中断寄存器、并设置了 CANSLNT 位。 同样在 mCAN 中断中、设置 TSW 位。 同样在 SPI 中断寄存器中、位3 Internal_access_active 为高电平。  [/报价]

    CANSLNT 位可能会被设置、因为您已从控制器断开 CAN 收发器、并且在控制器测试模式下连接到 GPO2引脚的 RX 信号上没有检测到任何位活动的时间超过1秒。  

    TSW 只是一个指示器、指示如果您跟踪 CAN 消息上的时间戳、则时间戳计数器已绕过。

    内部访问活动位只是指示存在内部活动、不指示任何错误。

    我建议尝试删除  TCAN4x5x_TestMode Device_Enable 返回顶部并重试。

    另外、这里只是一些附加信息、这些信息可能有助于您了解此器件中的寄存器。  MCAN 控制器 IP 由 Bosch 开发、并按原样用于 TCAN4550、但有一个例外。  每个寄存器地址都向其添加了一个0x1000偏移量。  否则、之前链接的手册中的所有信息都适用。  您只需将 MCAN 用户手册中的寄存器地址解读为具有额外的0x1000偏移。  例如、MCAN 控制寄存器在 MCAN 用户手册中具有地址0x18、在 TCAN4550中具有实际地址0x1018。

    TCAN4550中与 MCAN 无关的所有其他寄存器的地址都小于0x1000。  

    与 SPI 接口读取/写入 FIFO 相关的寄存器在0x0000至0x002F 范围内。  这些寄存器只要求 SPI 时钟域有效以返回值。

    与硬件和数字内核特性相关且与 MCAN 无关的寄存器的地址范围为0x0800至0x08FF。  这些寄存器与 MCAN 寄存器一起需要 SPI 时钟和高速 OSC 时钟处于运行状态并保持稳定、以实现读取/写入访问。

    TCAN4x5x_TestMode Device_Enable 功能是控制寄存器0x0800中的位、该寄存器是一个与路由我们的内部 RX 和 TX 信号相关的非 MCAN 寄存器。

    我希望这些信息有助于澄清问题。

    此致、

    Jonathan