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:TCAN4550-Q1

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1323121/tcan4550-q1-tcan4550-q1

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

您好、TI 团队、

在我们的器件中、我们使用2# TCAN4550RGYRQ1 IC 进行 CAN 通信、

通常、我们不会遇到任何通信问题。  

唤醒后、我们没有接收到来自第二个 CAN 的 CAN 数据在第一个 CAN 中未观察到问题  

因此,请告诉我们需要在设备树中更改的任何内容 ,

下面是绘制在设备树中的 
&lpspi2{
pinctrl-names ="default";
pinctrl-0 =<&pinctrl_lpspi2>
;fsl、spi-num-chipselves =
<1>;spi-max-frequency
=<40000000>;cs-gpio_gpio4 22 gpio_high>;
status ="oke"; 

tcan4x5x0:tcan4x5x@0{
compatible ="ti、tcan4x5x";
reg =<0>
;pinctrl-names
="default";#address-cells =<1>;
#size-cells =<1>;
SPI-max-frequency =<5000000>;
Bosch、MRAM-cfg =<0x0 3 2 32 10 1 32 7>;
Clocks =<&hclk>、<&cclk>;
Clock-names ="hclk"、"cclk";
INTERRUPT-PARENT =<&lsio_GPIO3>
;INTERRUPT
=<12 GPIO_ACTIVE_HIGH>;DATA-READ-GPIOs
=<&lsio_GPIO3 12 GPIO_ACTIVE_HIGH>;RESET-GPIO=<&exp2 12 GPIO_ACTIVE_HIGH>;iW-tCAN-PROP;

WAKE-SOURCE;
STATUS ="确定";

};
}; 

pinctrl_lpspi2:lpspi2grp{
FSL、Pins =<
IMX8DXL_USDHC1_RESET_B_ADMA_SPI2_SCK 0x6000040
IMX8DXL_USDHC1_VSELECT_ADMA_SPI2_SDO 0x6000040
IMX8DXL_USDHC1_WP_ADMA_SPI2_SDI 0x6000040
IMX8DXL_USDHC1_CD_B_LSIO_GPIO4_IO22 0x6000040
IMX8DXL_QSPI0A_DATA3_LSIO_GPIO3_IO12 0xA4000021
>;
};
&lpspi3{
pinctrl-names ="default";
pinctrl-0 =<&pinctrl_lpspi3>
;fsl、spi-num-chipselves =
<1>;spi-max-frequency
=<40000000>;cs-gpio_gpio0 16 gpio_high>;
status ="oke"; 
tcan4x5x1:tcan4x5x@0{
compatible ="ti、tcan4x5x";
reg =<0>
;pinctrl-names
="default";#address-cells =<1>;
#size-cells =<1>;
SPI-max-frequency =<5000000>;
Bosch、MRAM-cfg =<0x0 3 2 32 10 1 32 7>;//<0x0 3 2 32 10 0 26 12>;//<0x0 3 2 32 10 1 32 7 >
时钟=<&hclk>
、<&cclk>;时钟名称="hclk"、"cclk"、"cclk";<&lsio;

中断=<18 GPIO_ACTIVE_HIGH>;
DATA-READ-GPIO =<&lsio_GPIO3 18 GPIO_ACTIVE_HIGH>;
RESET-GPIO =<&EXP2 11 GPIO_ACTIVE_HIGH>;
iW-tCAN-prop;
WAKEUP-SOURCE;
状态="确定";
};
};
pinctrl_lpspi3:lpspi3grp{
fsl、pins =< 
IMX8DXL_SPI3_SCK_ADMA_SPI3_SCK 0x6000040 / 0x0600004c /
IMX8DXL_SPI3_SDO_ADMA_SPI3_SDO 0x6000040 IMX8DXL_SPI3_SDIM_ADMA_SPI3_SPI3_SPI3_SDI 0x6000040









发现的问题打印件
root@imx8dxl-iwg46s:~# candump can4
[MSG 12:14:54][ 310.255222] tcan4x5x spi3.0 can4: 2024年01月19日 丢失了 rxf0
[ 2024年01月19日12:14:55][ 310.952451] tcan4x5x spi3.0 can4: MSG 在 rxf0中丢失
[MSG 12:14:56][ 311.504395] tcan4x5x spi3.0 can4: 2024年01月19日 丢失 rxf0
[ 2024年01月19日12:14:56][ 311.971422] tcan4x5x spi3.0 can4: MSG 在 rxf0中丢失

我希望我们很快就能收到该问题的解决方案

谢谢

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

    尊敬的 Dhiraj:

    这是一个 TCAN4550器件支持论坛、而不是 Linux 支持论坛、我的专长是 TCAN4550器件、而不是 Linux 驱动程序。  但我会努力帮你

    我没有看到您的设备树配置明显有任何问题。  我确实注意到、观察到的问题打印中显示的"msg lost in rxf0"消息表明、如果您的 RX FIFO 配置为阻塞模式、则可能已满、并且不再能够接收消息。  它们也可以被配置为覆盖模式、这将导致 FIFO 中最早的未读消息被新消息写覆盖、而新消息将导致旧消息丢失。

    您能解释更多关于发生了什么事吗?  我假设您是通过某种唤醒方法唤醒两个 TCAN4550器件、然后处理器会重新配置所有寄存器、再尝试发送和接收 CAN 消息。  问题是其中一个电路板按预期发送消息、但另一个电路板未发送消息。  我的理解是否正确?

    可以通过监视各种状态、中断、模式配置和错误计数器寄存器来查看器件在错误发生期间的状态吗?

    如果可能、我想知道发生错误时以下寄存器的值:

    0x000C -状态

    0x0800 -模式配置

    0x0820 -器件中断

    0x0824或0x1050 - MCAN 中断

    0x1018 -控制寄存器

    0x1040 -错误计数器寄存器

    0x1044 -协议状态寄存器

    0x1098 -新数据1

    0x10A4 - RX FIFO 0状态

    0x10B4 - RX FIFO 1状态

    0x10C4 - TX FIFO/队列状态

    0x10CC - TX 缓冲器请求挂起

    0x10D8 -发生 TX 缓冲区添加请求传输

    此致、

    乔纳森