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:环回测试

Guru**** 2798555 points

Other Parts Discussed in Thread: TCAN4550

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1127339/tcan4550-q1-loopback-test

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

您好,

当我在 Linux 系统上调试 tcan4550时、我移植5.19驱动程序、测试发送和接收、并且遇到一些问题:

使用 IP 链路设置 CAN0类型 CAN 比特率125000环回开启来开启环回测试。 使用 CAN0 -i 111 0x11 0x22 0x33 0x44 0x55 0x66发送、使用 CANDump CAN0 &接收数据。
但是,没有收到任何数据。

我关闭环回、可以在分析仪上看到数据发出。 如何分析?  

最恰当的考虑

Kailyn

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

    您好 Kailyn、

    我相信驱动程序只是启用 TCAN4550器件的内部回送测试模式、至少这是它应该执行的操作。  器件将在多种不同的测试和环回模式下运行、具体取决于多个位的组合设置方式。  您能否读回以下器件寄存器、以便我们验证器件是如何配置的、并查看是否有需要调整的内容?

    0x0800 (运行模式和引脚配置)

    0x1010 (测试寄存器)

    0x1018 (控制寄存器)

    以下寄存器将帮助我了解并检查 RX 配置、以便了解器件如何配置为接收消息。  有两个 RX FIFO 以及专用的 RX 缓冲器可用于存储接收到的消息、因此、驱动程序在一个位置放置消息并在另一个位置检查新消息可能会出现问题。  可以创建消息过滤器元素以将消息定向到不同的位置、虽然这可能不太可能、但值得检查。

    0x10A0 (RX FIFO 0配置)

    0x10A4 (RX FIFO 0状态)

    0x10B0 (RX FIFO 1配置)

    0x10B4 (RX FIFO 1状态)

    0x10AC (RX 缓冲器配置)

    0x10BC (RX 缓冲器/FIFO 元件大小配置)

    此外、最好只读回基本器件中断和状态寄存器、这样我就可以查看是否有任何故障或状态标志可被置位、这会阻止器件正常运行

    0x0820 (中断)

    0x0824 (MCAN 中断)

    此致、

    Jonathan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    0x0800 0x080004a8
    0x1010 0x00000090
    0x10A0 0x00040010
    0x10A4 0x00010001
    0x10B0 0x000500f0
    0x10B4 0x00000000
    0x10AC 0x00000000
    0x10BC 0x00000777
    0x0820 0x00000082
    0x0824 0x00011801
    0x1018 0x000000a0
    U32 MRAM_CONFIG_Vs[MRAM_CFG_LEN]={0、2、1、4、5、 0、3、10};
    此 MRAM 配置是否存在问题? 大量空间未被使用。
    此外、当 l ifconfig CAN0 up 时、nINT 始终为低电平、l 读取 LR 寄存器 Ox1050、其值为 Ox00010000、为什么 TSW 始终为1?

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

    Arvin、

    感谢寄存器的值、也感谢 MRAM 配置、它确认了我从寄存器中解码的 TX/RX FIFO 和缓冲元件的数量和类型的值。

    我不能说 MRAM 配置有任何问题、因为这一切取决于您的应用需要什么。  TCAN4550器件具有2KB 的消息 RAM (MRAM)存储器、可分配给您的应用。  如果您需要的元素多于当前分配的元素、则看起来应该有可用空间来增加分配的元素数量。

    TSW 中断位不是一个问题、它只是表示时间戳计数器已达到计数器的最大值并打包到开头。  此计数器用作向可能对系统有用的消息添加时间戳的方法。  例如、跟踪消息接收或传输的顺序可能很重要、因为仲裁可能会导致消息按照与根据消息 ID 的优先级状态加载到队列中的顺序不同的顺序进行传输。  该 TSW 位可让 MCU 知道计数器已缠绕、如果使用此功能、则可以跟踪此情况。  如果未使用时间戳计数器、则可以屏蔽、忽略或清除该计数器、而无需执行任何其他操作。  计数器不是很大、因此可以快速回绕。  如果需要、可以配置一些分频器以降低其速度。

    在评估寄存器值后、我可以确认您的 MRAM 分配、我还看到该器件配置为内部回路模式。  TEST.LBCK 位(0x1010.4)被置位、以使 TX 数据能够回路到 RX。  此外、CCCR.MON 位(0x1018.5)被置位、这将断开 TX 数据与 CAN 总线的连接。  这就是启用环回模式时、无法使用外部 CAN 分析器看到 TX 消息的原因。  但是、如果清除 CCCR.MON 位、则会将器件配置为外部回路模式、从而允许在 CAN 总线上输出 TX 数据并回送至 RX 输入。  在此模式下、外部 CAN 总线数据将不会到达 RX 输入端。  下图取自《Bosch M_CAN 用户指南》、是设备配置方式的良好说明。  您可以在此找到完整指南(链接)。

    我还看到接收到一条新的 RX 消息。  MCAN 中断寄存器(0x0824.0)的 RF0N 位设置为"1"、表示出现"新的 RX FIFO 0消息"。

    RX FIFO 0状态寄存器还指示 RX FIFO 0填充级别= 1、这意味着 FIFO 中的一个元件包含一个消息、该消息没有被应答0x10A4.6:0。  RX FIFO 0 Put 索引也增加到1 (从0开始)、以指示下一条消息将被放置到 FIFO 元件1的存储器位置。  RX FIFO 0获取索引(0x10A4.13:8)设置为0、表示下一个应读取的 RX 消息位于 FIFO 单元0存储器位置。

    因此、TCAN4550器件似乎已配置并正常工作。

    此致、

    Jonathan

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

    好,谢谢您的回复、   
    我认为我找到了问题的原因。 我需要在申请中断时添加 IRQF_TRIGGER_FALLING。 现在它运行良好。  

    我不明白为什么不将其添加到本机驱动程序中?

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

    很好、很高兴它现在运行良好。 感谢您的告知。

    此致、

    Jonathan

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

    您对此问题有什么想法吗?   
    TCAN4550-Q1:接收和发送问题。 -接口论坛-接口- TI E2E 支持论坛

    请原谅我在本案中提到这个问题。 现在对我来说是清晨、 我们有13小时的时差。 我希望能得到一个快速的答复,以便我能有效地解决这个问题。  

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

    您好、Arvin、

    我已将我的注释添加到另一个线程中。

    此致、

    Jonathan

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

    非常感谢、 您可以结束这个问题。

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

    不用客气。  如果您有其他问题、请随时创建新帖子。

    此致、

    Jonathan