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:TCAN 吞吐量

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

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1568163/tcan4550-q1-tcan-throughput

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

工具/软件:

您好团队:

我们通过两个 SPI 处理器连接了两个 TCA4550 芯片。 在长时间运行 SPI CAN 测试期间、大约 70 小时后、CAN 接收停止。 此时未观察到错误或日志打印。 不过、我们找到了一些提供 RX 错误计数的 sysfs 路径。 您能否提出接待处停止工作的可能原因?

/sys/class/net/can3/statistics/rx_crc_errors

/sys/class/net/can4/statistics/rx_crc_errors

 

此致、

Tanushree

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

    您好 Tanushree、

    我不是 Linux 专家、我的专业知识是关于 TCAN4550-Q1 器件本身、但这些似乎与 CAN 消息中的 CRC 错误有关。  如果是这样、这意味着接收节点对位进行了错误的采样、从而导致器件对每条 CAN 消息执行了错误的 CRC 计算。  这些错误可能来自位时序和采样点配置、或者耦合到线路中导致信号完整性故障类型的噪声、或者来自某种时钟容差或稳定性问题。   

    为了确定原因、需要对中断、错误计数器和协议状态寄存器的器件级寄存器信息进行日志记录。

    此致、

    Jonathan  

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

    您好 Jonathan、

    感谢您的答复。

    运行几天后、有时还需要器件 停止接收 CAN 消息

    • 在器件端、我们检查了 CRC、FIFO 错误、RX 数据包和 RX 丢弃等错误、但未观察到错误。

    • CPU 负载也很低。

    • 当问题发生时、如果我们打开接口 向下和向上 同样、我们可以看到以下寄存器值:

    root@imx8dxl-iwg41:~#
    root@imx8dxl-iwg41:~# IP link set CAN3 up type can bitrate 500000
    [53004.353653] M_CAN_ECR
    [53004.355951] 0000 0000 0000 0000 0000 0000 0000
    [53004.362443] tcan4x5x spi2.0 CAN3:初始化模块失败
    [53004.383894] M_CAN_ECR
    [53004.386518] 0000 0000 0001 1100 1111 0000 0000
    [53004.400535] IPv6:ADDRCONF (NETDEV_CHANGE):CAN3:链路准备就绪
    [53004.413891] M_CAN_ECR
    [53004.416449] 0000 0000 0000 0000 1111 0000 0000

    下面是 DTS 配置。

    &lpspi3{
    pinctrl-names =“default";“;
    pinctrl-0 =<&pinctrl_lpspi3>;
    FSL、spi-num-chipselects =<1>;
    分配的时钟速率=<80000000>;
    CS-GPIOs =<&lsio_GPIO0 16 GPIO_ACTIVE_HIGH>;
    状态=“正常“;


    tcan4x5x1:tcan4x5x@0{
    兼容=“ti、tcan4x5x“;
    reg =<0>;
    pinctrl-names =“default";“;
    #address-cells =<1>;
    #size-cells =<1>;
    SPI-max-frequency =<16000000>;
    Bosch、MRAM-cfg =<0x0 3 2 32 10 0 20 10>;
    Clocks =<&hclk>、<&cclk>;
    时钟名称=“hclk",“,"cclk"、"cclk";“;</s>“
    Interrupt-parent =<&lsio_GPIO3>;
    中断=<18 IRQ_TYPE_EDGE_FALLING>;
    DATA-READY-GPIO =<&lsio_GPIO3 18 GPIO_ACTIVE_HIGH>;
    Reset-GPIOs =<&exp2 11 GPIO_ACTIVE_HIGH>;
    iw-tcan-prop;
    唤醒源;
    状态=“正常“;

    };
    };


    &lpspi2{
    pinctrl-names =“default";“;
    pinctrl-0 =<&pinctrl_lpspi2>;
    FSL、spi-num-chipselects =<1>;
    分配的时钟速率=<80000000>;
    CS-GPIOs =<&lsio_GPIO4 22 GPIO_ACTIVE_HIGH>;
    状态=“正常“;


    tcan4x5x0:tcan4x5x@0{
    兼容=“ti、tcan4x5x“;
    reg =<0>;
    pinctrl-names =“default";“;
    #address-cells =<1>;
    #size-cells =<1>;
    SPI-max-frequency =<16000000>;
    Bosch、MRAM-cfg =<0x0 3 2 32 10 0 20 10>;
    Clocks =<&hclk>、<&cclk>;
    时钟名称=“hclk",“,"cclk"、"cclk";“;</s>“
    Interrupt-parent =<&lsio_GPIO3>;
    中断=<12 IRQ_TYPE_EDGE_FALLING>;
    DATA-READY-GPIO =<&lsio_GPIO3 12 GPIO_ACTIVE_HIGH>;
    RESET_GPIO=<&exp2 12 GPIO_ACTIVE_HIGH>;
    iw-tcan-prop;
    唤醒源;
    状态=“正常“;

    };
    };

    我的问题:
    由于此错误仅在几天后发生、因此是否存在 可以直接访问和读取 TCAN 寄存器的用户空间命令或工具 (例如 CCCR、ECR 等)?

    这将使我们能够在问题发生时手动转储寄存器、而不是依赖连续的内核日志打印。  

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

    您好 Tanushree、

    Jonathan 目前不在办公室。 请在下周前提供一些反馈、谢谢。

    此致、

    Michael。

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

    您好 Tanushree、

    我的专业知识是 TCAN4550 器件本身、而不是 Linux、因此我不确定有哪些用户空间命令或工具。  读取和监控如您提到的各种寄存器将有助于确定任何错误的原因。

    长时间内频繁出现误差也可能是环境条件造成的、如电源波动、或来自附近设备的 EMI 噪声源等  监控电源和噪声波动、或任何其他相关信息(例如错误发生的时间)也可能指向与器件配置无关的不太明显的错误来源。  

    我的个人经验是、CRC 错误通常表明在数据阶段消息中的位损坏、这通常与某种噪声或信号完整性问题有关。

    您也可以尝试调整位时序配置以更改采样点%、从而查看在位周期中提前或稍后对位进行采样是否会改善结果。

    此致、

    Jonathan