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.

[参考译文] TMS570LS3137:CAN 总线只在进入低电平中断后接收中断。

Guru**** 2553450 points
Other Parts Discussed in Thread: HALCOGEN

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1319054/tms570ls3137-can-bus-receive-interrupt-only-once-entered-to-low-level-interrupt

器件型号:TMS570LS3137
主题中讨论的其他器件:HALCOGEN

您好!

中断问题时遇到的一些问题。 我开发了一个驱动程序根据 halcogen 输出,但我想改进这个软件更加通用. 因此、我的实例与 Halcogen 输出不同。  

当我想使用低级中断来接收来自 CAN 总线的消息时、我遇到了这个问题。 此处 canREG1->INT 值等于0x036、但如果尝试使用 halcogen 输出、则遇到  0xD800000、等于将36移位16。 我多次检查我的代码,但我看不到任何提示,以解决。

这里是我对 INTMUXx[0]和 INTMUXx[1]的第一次  

之后、我将55消息框启用为 Rx。 我根据消息框编号移动了寄存器的相关部分。 移位操作如下所示。

这些问题发生在哪里?

注意:初始化期间仅使用 IF1寄存器。

此致、

古坎

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

    尊敬的 Furkan:

    Unknown 说:
    here canREG1->INT 值等于0x036,但如果我尝试使用 halcogen 输出  ,我遇到了0xD800000,它等于36偏移16倍。

    我不能确切指出什么是错误,但我可以给你澄清结果。

    如果您在 HALCoGen 中启用了高优先级中断、那么报文框编号应该在 INT 寄存器的0-15位中。

    如果您 在 HALCoGen 中启用了低优先级中断、那么报文框编号应该在 INT 寄存器的16-31位中。

    我做了同样的测试,在我的最后。 我启用了两个消息框53和54、53用于发送、54用于中断接收。

    以下是在 HALCoGen 中启用高优先级中断后得到的结果:

    这是在 HALCoGen 中启用低优先级中断后得到的结果

    我附加我的代码以供参考、由于我没有 LS3137器件、我在 LC4357板上进行了该测试、但两者在硬件中具有相同的 CAN 模块。

    e2e.ti.com/.../CAN_5F00_LoopBack_5F00_TEST_5F00_LC4357.zip

    您可以将其作为参考并与您的项目一起验证。

    --
    谢谢。此致、
    Jagadish。

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

    感谢您的回复。 我解决了 移位问题、但是现在我们无法获取数据、只能在进入低电平中断后接收中断。

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

    尊敬的 Furkan:

    感谢您的回复。 我解决了 移位问题[/报价]

    很高兴听到这个消息。

    [报价 userid="585479" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1319054/tms570ls3137-can-bus-receive-interrupt-only-once-entered-to-low-level-interrupt/5020631 #5020631"]。但现在我们无法获得数据和只能在输入低级别中断后接收中断。

    请参阅上面随附的 CAN 环回示例、我在该示例中经过测试并且能够接收数据。

    (+)[常见问题解答] TMS570LC4357:适用于 Hercules 控制器的示例和演示(例如 TMS570x、RM57x 和 RM46x 等)-基于 Arm 的微控制器论坛-基于 Arm 的微控制器- TI E2E 支持论坛

    我还将请您参考上述常见问题解答中提供的其他 CAN 示例。

    这些都是我提供的经过测试的示例、您可以将它们作为参考。

    --
    谢谢。此致、
    Jagadish。