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.
工具/软件:Code Composer Studio
我们将 TMS320F2810 DSP 用于电机控制应用。 在本例中、我们的驱动器将是从器件、而 PLC 是主器件。 最近、我们发现 CAN 引擎有时不响应 RTR 消息的问题。 当我查看状态寄存器时、我观察到位填充错误位处于活动状态。 此错误是否会导致 CAN 引擎停止?
我假设 RTR 由主器件发送、并且 F2810 (从器件)应对其做出响应。 填充错误本身不会停止通信。 该协议旨在从错误条件中恢复正常、除非过多的错误迫使节点进入脱离总线状态。 下面我将介绍下一个问题:节点是否处于脱离总线状态? 您是否检查了在总线关闭期间设置的 CCR 位? 如果确实处于脱离总线状态、您的代码如何处理恢复?
您说它没有响应 RTR。 是否可以通过设置 TRS=1来传输数据帧? 我要求这个问题区分这两种情况:1. 节点无法响应 RTR (Vs) 2. 节点无法传输任何数据。 这条思路使我们得出勘误表。 您是否已查看以下勘误表:eCAN:意外停止传输操作(SPRZ193Q 的第17页)?
Kireeti、
在我的上一篇文章中、您没有回答过很多问题。 请回答这些问题。
设置 CCE 意味着设置 CCR、这意味着节点处于总线关闭状态。
您好、先生、
我已经处理 了您在回复中提到的问题。 以下是观察结果。
1.错误情况下 CCR 位被置位。
2.设置 TRS 位无法发送数据。 我已经在 CANAlyser 的帮助下验证了这一点。 当我尝试发送数据时、在 CANAlyser 上看不到任何数据。
3.我已经完成了勘误表"eCAN:意外停止传输操作 (SPRZ193Q 第17页)"。 我在代码中实现了文档中提到的恢复选项。 通过验证 CCE 位、我设置了 CCR 位并清除了 CCR 位、但这不能解决问题。 这样做未能恢复总线关闭状态。
谢谢、此致
Kireeti
似乎这不是勘误表的情况。 您的节点似乎只是处于脱离总线状态。
CANalyzer 上的 CAN 流量是否显示此情况之前的错误帧?
在代码中、您是否监控错误计数器?
您是否监测 CANES 寄存器中的 EW 和 EP 位?
是否在尝试将节点从 BO 中取出之前监视了128x11隐性位?
在节点发生总线关闭之前、会发生许多情况。 首先需要确定节点为何会出现 BO。 您是否在 CANTX 引脚上监控了每个节点的位速率? 请查看我的 app.note SPRA876的调试提示。