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.
尊敬的 Champs:
我是为我们的客户提出这个问题的。
现在、客户发现使用 MCAN 时出现奇怪的现象。 与客户确认后、仍然无法找到问题的原因。 您能帮助分析一下吗? 以下是对该问题的说明:
仅在独立模式下才会出现问题。 当连接到仿真器并使用 CCS 进行调试时、一切都是正常的。 在引导至应用程序的过程中将发生 MCAN 通信失败问题。 如果您只运行引导或应用程序、则不会出现此问题。
当通信失败时、波形如下所示。 客户可以确认 Rx 的内容正确、但没有来自 Tx 的响应消息。 (粉色:CAN 总线的差分信号;绿色:C2000 RX 信号;黄色:C2000 TX 信号)
由于客户仅在独立模式下发现此问题、因此难以观察寄存器。 我让客户通过一些方法读取以下寄存器、但未发现任何问题:
MCAN_ECR[REC]为0、MCAN_ECR[TEC]为0、MCAN_PSR[LEC]为0、MCAN_CCCR[INIT] 为0。
此外、当发生该问题时、无法进入 MCAN 中断。 当检测到此问题时、如果我们清除 MCAN 中断位、则可以恢复 MCAN 通信。 虽然这可以暂时解决通信问题、但这不是客户想要的。 他们希望找到 MCAN 通信故障的原因、然后进行修复。 但通过检查一些 MCAN 寄存器、我没有发现任何问题。 这真的很难解释、您能帮助分析一下吗? 我是否需要检查其他一些寄存器以确定 MCAN 通信失败的原因?
此致、
朱莉娅
尊敬的 Julia:
您可以要求客户共享*。map 文件的一部分吗? 我想看看"codestart"条目中是什么。 .map 文件将位于*。out 文件所在的同一子目录中。 只是希望在启动期间快速检查代码分支的位置。
谢谢。
约瑟夫
您好、 Joseph:
请检查 codestart 器件:
我很好奇此部分为什么会影响 MCAN 通信、在检查寄存器后看不到任何问题。
此致、
朱莉娅
尊敬的 Julia:
我只是想确保启动过程会从闪存调用分支代码、这表明确实如此。 在某些情况下、分支代码可能无法编译、从而导致启动问题。
接下来、让我们检查 MCAN 寄存器是否已正确初始化。 为此、您需要在未连接调试器的情况下运行该应用程序。 用户还必须在 CCS 中修改 CCXML 目标文件并删除 GEL 文件、以免在调试器连接时重置器件和初始化存储器。
可以在 CCS 中使用顶部工具栏上的 Tools->GEL 文件删除 GEL 文件。 窗格底部将出现一个 GEL 窗口、用于显示 GEL 文件。 在 GEL 文件窗口中、右键点击 GEL 文件、然后选择删除。 一旦这个过程完成、连接仿真器/目标、然后检查 MCAN 寄存器和其它相关寄存器、甚至程序计数器(PC)来表示程序有可能被卡住的地方。
希望这将提供有关问题可能是什么的线索。
此致、
约瑟夫
您好、 Joseph:
感谢您的建议! 我将让客户看看这个。 在这样做之前、我想向您确认以下哪一项是正确的方法?
1.首先让代码以独立模式运行。 当发生 MCAN 通信问题时、是否执行您提到的步骤并连接到 CCS 以查看寄存器以及代码停止在何处?
2.是否首先执行了您提到的步骤,然后在这些条件下运行代码?
谢谢!
此致、
朱莉娅
尊敬的 Julia:
请让客户执行步骤#1。
谢谢。
约瑟夫