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.

[参考译文] TM4C123GH6PZ:CAN 总线发送中断

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/572368/tm4c123gh6pz-can-bus-transmit-interrupt

器件型号:TM4C123GH6PZ
主题中讨论的其他器件:DK-TM4C123G

我正在尝试将我在定制 PCB 上使用的 TM4C 器件上的 CAN 外设配置为1 MBaud、并在消息对象上使用 TX 中断。 每次调用 TX 中断时,我都希望从循环缓冲区中弹出一个字节,并使用 CANMessageSet() API 调用发送该字节。 据我所知、只要我没有看到任何错误中断、该字节就应该由硬件正确发送、而无需对应用程序进行额外的工作。 但是、当我使用 CAN 分析仪查看 CAN 总线时、我发现缺少一些字节。 尽管 CAN TX ISR 发出正确的次数(即 CANMessageSet()函数被调用时采用正确的字节序列和正确的次数),但这是不正确的。 有人能说明我在这里可能需要了解的内容吗? 这是我的 ISR:


下面是我的设置代码:

为了实现一个"多路复用器-多路信号分离器"类型的 UART-CAN 桥接应用、我正在配置多个不同的 TX 和 RX 邮箱、请忽略一些额外的代码。


谢谢!

A.G.

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

    您能否分享 CANAnalyzer 的结果?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    我正在使用 USB CAN 分析仪、然后使用 CANDump (通过套接字 CAN)查看输出。 在 TM4C 中、我尝试发送字符串、但当我在 PC 上显示 DLC 1 CAN 数据包的相应 ASCII 表示时、我会看到缺少字节。 但是、我知道 CAN TX ISR 被称为正确的次数、因为每次遇到它时、我都会通过 ISR 内的 UART 打印调试输出。

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

    在涉及这个问题的一些进一步工作中、我决定尝试仅做一个简单的轮询+阻塞驱动 CAN 传输环路作为基本的概念证明、以消除一些中断的复杂性。 我提供了以下代码: http://pastebin.com/amBQMNvm。 正如 您在代码中看到的那样,我尝试从 e2e.ti.com/.../406495执行一些建议的修复(基本上,我尝试了两种阻止,直到使用标准 CANStatusGet ()设置 TXOK 标志为止, 然后编写了一个修改后的循环、该循环在功能上执行相同的操作、但仅在阻塞部分完成后清除必要的位。 这两种解决方案都不起作用、如以下输出所示: http://pastebin.com/yg4XRG52。 您可以看到、什么应该是不断增加的系列 DLC 1 CAN 数据包就是这样。

    我非常感谢对这一问题的任何深入了解,因为我在相当长的时间内一直在努力解决这一问题。

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

    pastebin 站点是 TI 网络中被阻止的站点。 您能否运行 DK-TM4C123G 应用中提供的基本 CAN 示例以查看提供的代码库是否按预期工作?