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.

[参考译文] RM57L843:RM57Lx CAN 中断。

Guru**** 2553260 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/833411/rm57l843-rm57lx-can-interrupt

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

您好!  

我正在尝试实现 CAN 消息中断。 我有两 个 Hercules RM57Lx 套件。 我已经成功在这两个器件上实现了 CAN 消息。 我使用 HALCOGEN 创建了以下 CAN 设置

一个套件充当 TX、另一个套件充当 RX。 但是、我遇到了基于中断的通信问题。 问题是我能够获得 针对 cannMESSAGE_BOX1的中断、但是当我将 cannMSSAGE_BOX2消息从 TX 控制器发送到 RX 时、我无法获得中断。  这两条消息都被发送到 RX 控制 器、RX 控制器可以读取它们、但仅 CANMESSAGE_BOX1控制器会发生中断。 还有该函数  

canIsRxMessageArtrived (canREG1、canMESSAGE_BOX1)  

适用于 canMESSAGE_BOX1、 控制器可以了解 canMESSAGE_BOX1中是否存在消息、但当我调用函 数 canIsRxMessageArrived (canREG1、canMESSAGE_BOX2)时、它始终返回 false。 但是、如果我忽略它、只需调用

canGetData (canREG1、canMESSAGE_BOX2、rxData);

函数若要读取 MessagBox2中的数据、它可以读取我从 TX 控制器发送的数据、效果非常好。 代码如下所示。 我在这里缺少什么?  

我的 TX 代码主文件是  

int main (空)

/*用户代码开始(3)*/
unsigned long int 索引;
canInit();

while (1)

canTransmit (canREG1、canMESSAGE_BOX1、(const uint8 *)&txData[0]);
对于(索引= 0;索引< 4967000;索引++)
{}
canTransmit (canREG1、canMESSAGE_BOX2、(const uint8 *)&LEDOn[0]);
对于(索引= 0;索引< 4967000;索引++)
{}

RX 代码:  

int main (空)

/*用户代码开始(3)*/
canInit();
sciInit();
vimInit();
_enable_interrupt_();

sciSend (sciREG1、15、"Prgram Started\r");

while (1)

// while (!canIsRxMessageArrived (canREG1、canMESSAGE_BOX1));
while (isCANInterruptOccalced = 0);//  

if (canIsRxMessageArrived (canREG1、canMESSAGE_BOX1)== true)

canGetData (canREG1、canMESSAGE_BOX1、rxData);
sciSend (sciREG1、D_size、&rxData[0]);

if (canIsRxMessageArrived (canREG1、canMESSAGE_BOX2)== true)

canGetData (canREG1、canMESSAGE_BOX2、rxData);
sciSend (sciREG1、D_size、&rxData[0]);

isCANInterruptOccalced = 0;

/*用户代码结束*/

返回0;

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

    您好、Fehan、

    我不是 CAN 专家、但在我们等待专家回复时、我会尝试提供一些建议。

    您是否在 VIM 通道32-63选项卡中启用了 CAN2低电平(#42)中断?  

    您能否尝试使用一个 CAN 的高电平中断、使用另一个 CAN 的低电平中断? 您还需要在 VIM 中启用相应的中断。  

    以下资源也可能提供一些有用的指针。

    在 Hercules ARM 安全 MCU 上配置 CAN 节点

    https://training.ti.com/hercules-how-tutorial-can-communication

    此致、
    Sahin

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

    您好!  

    谢谢。 我已通过在 canMessageNotification()函数中添加标志来解决了该问题。 并且还会发生 MessageBox2中断。 我真的不知道我更改了什么来实现这一点。 无论如何、我将解决该问题。 感谢你的帮助。