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.
大家好、
添加一个新的符号和一个新的符号。 在某些情况下、它显示了以下提到的错误。
2916.121542] tcan4x5x spi1.0:找不到时钟
[ 2916.125768] tcan4x5x spi1.0:未定义 CAN 时钟源
[ 2916.131176] SPI-IMX SPI_IMX_SETUP:模式0、32 BPW、18000000Hz
[ 2916.160886] tcan4x5x spi1.0 (未命名的 net_device )(未初始化):初始化模块失败
[ 2916.191100] tcan4x5x spi1.0:M_CAN 器件已注册(IRQ=216、版本=32)
[ 2916.198048] tcan4x5x spi1.0 CAN0:TCAN4X5X 已成功初始化。
不会在每次驱动程序加载期间都出现此消息。 我们将尝试15次、然后是5到7次、此错误才会出现。
您能指导我们并告诉我们什么可能是此消息的根本原因、以及我们如何解决它吗?
此致
米什拉·拉姆吉
您好 Ramji、
这是一个在器件级别支持 TCAN4550的论坛、而不是 Linux 论坛。 tcan4x5x 驱动程序上传到内核、并得到 Linux 社区的支持。 我的专长是 TCAN4550器件、而不是 Linux 驱动程序。 在此过程中、是否有办法监视或记录 SPI 寄存器配置? 如果是、我可以通过查看各种状态、中断和配置寄存器来确定哪里发生了错误。
此致、
乔纳森
尊敬的 Jonathan:
I 已检查 运行模式和引脚配置寄存器(地址= h0800)[RESET = hC8000468 ]。 似乎 TCAN 处于 STANDBY 模式。
五颗星 READ-REG-CONFIG= A8000048****
您能否告诉我们、处于待机模式的可能原因是什么?
此致
米什拉·拉姆吉
尊敬的 Ramji:
您能告诉我 Status (0x000C)、Interrupts (0x0820)和 MCAN interrupts (0x0824)寄存器的值是什么吗?
如果驱动程序应该初始化器件并将其配置为正常模式、则可能存在某种问题导致器件转换到待机模式、该模式将反映在状态或中断寄存器中、这可以为我们提供线索。
此致、
乔纳森
尊敬的 Jonathan:
请找到所附的寄存器值。
中断(0x0820)
READ-REG-INT-FLAGS= x 81004400
MCAN 中断(0x0824)
READ-REG-MCAN_INT-FLAGS=0x0
状态(0x000C)
READ-REG-TCAN5X5X-STATUS= 0 x 8000000
此致
米什拉·拉姆吉
尊敬的 Ramji:
从中断寄存器(0x0820)中、我看到设置了以下位:
31:CAN 总线正常(意味着它已更改为正常模式并且至少看到一次显性到隐性转换)
24:部分保留块30:24 (没有提供资料)
14:发生了本地唤醒
10: CAN 总线保持静默状态(意味着 CAN 总线上没有活动) 然而、当设置该位时、我们还应看到 CAN 错误(CANERR 位5)置位、该错误是 CAN 静默模式(CANSLNT 位10)的逻辑或、CAN 卡在显性状态(CANDOM 位8)。 但 CANERR 为"0"、这是无法预料的。
从 MCAN 中断寄存器(0x0824)中、我看到没有设置任何位、因此我不能判断器件是否实际参与了任何 CAN 通信、而此通信会导致总线关闭状态、该状态会强制自己返回待机模式。 通常、我通常会看到至少有一个位具有某个值、例如设置了 Timestamp 回绕位、以指示时间戳计数器已回绕、因为这不是长计数器、 我需要寻找这一点来确定寄存器是否返回实值、而不是全0的默认值。 但是、如果在初始化后快速读取寄存器、那么这个值可能仍然准确。 但它似乎不是导致将器件置于待机模式的 CAN 错误。
状态寄存器(0x000C)显示一个单一位集。
27:internal_error_log_write (表示存在与 SPI 寄存器或 MRAM 相关的一些错误、即读取或写入)。 有一个类似于 FIFO 的移位寄存器用于传递来自数字内核和 MCAN 控制器的数据、这些控制器脱离器件的系统时钟(20或40 MHz)运行、而 SPI 总线脱离 SPI 时钟以较低频率运行。 该 FIFO 移位寄存器处理时钟域交叉、如果存在错误、通常是由某种与时钟相关的问题导致的、该问题会阻止器件通过 SPI 总线将数据传入或传出器件。 但是、我通常也会看到与此相关的某种 SPI 错误、而这些位中的任何位都没有设置。
回顾先前文章中的信息、初始日志显示了一些与时钟相关的消息。 我的专长是 TCAN4550、而不是 Linux、但 internal_error_log_write 可能与"未找到时钟"和"未定义 CAN 时钟源"消息关联了某种类型的时钟问题。
此外、如果根据之前的信息、器件卡在待机模式、我也不知道为什么设置了 CAN 总线正常位。
您能告诉我您是使用定制电路板、还是使用 TI 设计的开发板之一(TCAN4550EVM 或 BOOSTXL-CANFD-LIN)吗?
如果您使用的是定制板、您能否共享与 TCAN4550相关的原理图以便我进行检查?
此致、
乔纳森