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.
您好!
在插入 CAN FD 的内核模块时、我们面临一个问题。 具体而言、我们发现我们的车辆 CAN FD 网络在 TCU 上发出 insmod /iwtest/kernel-module/tcan4x5x.ko 时锁定。 此 CAN FD 网络上至少有4个其他节点、我们注意到在发出此 insmod 命令之前、典型的 CAN FD 流量。 这也是在调用 IP 链路设置 CAN2之前的一段时间、因此不确定插入此内核模块会如何导致问题。 我的理解是、这应该只是插入 CAN FD 模块并设置与的 SPI 通信、但您能否解释插入此模块会如何影响收发器的 CAN_FD_H 和 CAN_FD_L 端?
您好、Akshay、
我们认为这是驱动程序及其编写方式的问题。 Linux 探测器函数调用 Init 函数、该函数将器件置于正常模式。 但在将波特率配置到器件之前、器件应保持待机模式。 由于器件未配置波特率、因此最有可能使用加电默认值、因此当您尝试通过 CAN 进行通信时会引发大量错误。
我们将与编写驱动程序更新的第三方进行核对、以查看是否可以修复此问题。
最棒的
Chris
尊敬的 Chris:
感谢您的更新。
这对我们来说是一个障碍。 您能否提供更新的驱动程序以尽快解决此问题。
是否有任何工作要做,以便我们能够继续工作?
此致、
Akshay
Akshay、
更新驱动程序后、我将通知您。 不幸的是、我认为这里没有好的解决方案。 问题是驱动程序中的探测器功能。 如果您可以跳过该函数或配置器件波特率设置、则可以正常工作。
正如我说过的、这是由一家不是 TI 的公司开发的。 我们正与他们合作修复他们的驱动程序。
同时、我们还编写了可在 MSP430等微控制器上工作的代码。 类似的东西是否适用于您的初始调试?
最棒的
Chris
尊敬的 Chris:
我将向您简要介绍我们正在测试的场景。 如果我们的行为有任何错误、请告知我们。
我们正在测试 TCAN4550、我们注意到、在 TCU 上调用 insmod 以插入 tcan4x5x.ko 模块时、错误帧会被插入。 这是看到第一条 ER 类型消息时的情况。 大多数 CAN 通信在此之后停止、因为许多 CAN 节点由于 CAN 总线上的错误而进入错误处理状态。
已上传测试设置的快照
:
下面是我们的测试程序:
*将数据从 PCAN 连续发送到非加固型 TCU。 在坚固型 TCU 中进行数据传输期间插入 CAN 模块后、我们会观察到错误帧正在生成、并在 PCAN 工具中观察到。
1)非工作条件:
*从启用了 BRS 位的 PCAN 工具发送数据帧。 然后生成错误帧。
2)工作条件:
*从禁用 BRS 位的 PCAN 工具发送数据。 则未观察到问题。
以下是一些可能有助于您检查问题的快照。
在测试设置中、我按如下方式连接了示波器探针:
通道1测量引线:FD_CAN_H
通道1接地引线:USB_GND
通道2测量引线:FD_CAN_L
通道2接地引线:USB_GND
1) 1)通过 insmod 加载内核模块。
2) 2)单击 PCAN 查看器上的0x555传输消息框、然后单击键盘上的空格键以手动传输。
3)示波器应捕获多个有效载荷、如下所示。 pcan 跟踪日志还应捕获错误。 以下是相同的快照:
4) 4)在示波器屏幕截图中、您可以看到两个失败的发射突发、然后是成功的发射。
5)这里是第一个失败的传输的屏幕截图。
6) Snaphot、用于第二次失败的传输。
7) 7) 下面给出了成功发送的快照。
8) 8)通过分析上面的传输帧何时单步执行、看起来好像它是在 PCAN 适配器发出 BRS 位后发生的。 我怀疑 tcan4x5x.ko 驱动程序会将 TCU tcan4550芯片设置为无法很好地处理 BRS 位的状态、直到我们在后面的步骤中调用 IP 链接。
请检查此问题、并告知我们是否需要更改驱动程序、或者我们是否在测试设置中遗漏了任何内容。
此外、您能否向我们分享 前面聊天中提到的用于微控制器的驱动程序、以便我们可以查看该驱动程序?
我们什么时候可以从第三方获得驱动程序修复?
此致、
Akshay Naik
您好、Akshay、
我在您 的另一个主题中为您的问题提供了相同的答案、但为了该主题的好处、我也将在此处添加这些问题。
总线上的所有注释都应启用相同的设置和功能。 如果 CAN FD 帧在总线上传输、则所有节点必须启用 FD、否则未启用 FD 的节点将在消息上抛出和错误帧。
同样、如果 FD 消息以更快的数据速率传输、则所有节点必须启用 BRSE 或等效位速率开关设置、并且必须具有相同的数据位时序设置。 否则、未启用 BRSE 或具有不同数据位时序设置的节点将在消息上投射错误帧。
由于错误帧是在节点尝试与不同配置进行通信时生成的、因此根据 CAN FD 协议和标准、显示系统在该测试期间按预期工作。
这是一个器件支持论坛、我不确定驱动程序何时将 TCAN4550器件从待机模式转换为正常模式。 但是、TCAN4550始终上电进入待机模式。 只有当处理器将工作模式和引脚配置寄存器0x0800[7:6]中的 MODE_SEL 位置1并将其设置为正常模式(2'B10)时、它才会从待机模式转换为正常模式。
BRS 错误的原因是 CAN 总线上的所有节点的设置都不相同、因此它们能够以比仲裁速率更快的数据速率处理 CAN FD 消息。
错误帧是在器件级别生成的、因为 CAN FD 协议违反了总线上不同节点的不兼容设置。
TI 与第三方合作、通过优化 SPI 通信来消除空闲时间并提高数据带宽、从而改进 TCAN4x5x Linux 驱动器。 此驱动程序更新不是为了解决您面临的问题。
要解决在 TCAN4550转换为正常模式时生成的错误帧、必须首先确保控制寄存器0x1018[9:8]中的 BRSE 和 FDOE 位都设置为"1"、还必须确保标称(仲裁)位时序(寄存器0x101C)_和数据位时序 (寄存器0x100C)配置为与总线上其他节点相同的值、正如我刚才所解释的那样。 如果这些设置与总线上的其他节点不匹配、则会生成错误帧。
请注意、配置为支持具有比特率切换功能的 CAN FD 消息的器件不会在传统 CAN 消息(非 FD 消息)上投射错误帧 以及不使用比特率切换的 CAN FD 消息、因为消息标头专门指示节点消息是非 FD、FD 还是已启用 BRS。
因此、对于 FD 操作、应启用 BRSE 和 FDOE 位、并针对总线上使用的适当数据速率设置 NBTP 和 DBTP 时序值。 这应防止在将器件切换到正常模式时出现错误。
此致、
Jonathan