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.

请教TMS470MF06607CAN接收中断退出问题

Other Parts Discussed in Thread: TMS470MF06607, HALCOGEN

您好!

我在使用TMS470MF06607时遇到几个问题可否帮忙解答一下。

1、在进入CAN接收中断后无法清除中断标志位而退出中断。(我使用的是由32个message object的DCAN2,用的IE0相关中断,在进入接收中断后对相应message object的IFCMD与IFMCTL进行设置,通过给IntPnd位写0清除中断标志)

2、麻烦顺便讲解下IE0中断与IE1中断(如是不是每个通道都可以选择IE0或者IE1),关于High和Low中断也麻烦讲解下,另外是通过哪个寄存器进行设置的呢?

 

期待回复!

非常感谢

  • Hi Jason,

    关于您的问题,请查看下面的回复:

    1. CAN总线接收中断问题,您可以参考驱动代码生成工具HALCoGen所生成代码的解决办法:

    unsigned messageBox = canREG1->INT >> 16U;

    /** - Setup IF1 for clear pending interrupt flag */

    while (canREG1->IF1STAT & 0x80);
    canREG1->IF1CMD = 0x08;
    canREG1->IF1NO = messageBox;

    while (canREG1->IF1STAT & 0x80);
    canREG1->IF1CMD = 0x87;

    HALCoGen的下载地址: http://www.ti.com/tool/halcogen

    2. IE0和IE1是用来控制DCAN模块是否产生中断的两个bit,分别控制DCANxINT0和DCANxINT1,也就是您说的High和Low中断。

                这两个bit是针对整个DCAN模块的。

        每个通道(msgObj)上面有TxIE和RxIE两位,来控制这个通道是否产生发送及接收中断。

        如果模块的IE0和IE1都打开了,那么使用INTMUX寄存器可以指定具体产生哪个中断。

        High和low是优先级的区别,如果您打开了中断嵌套功能,那么高优先级的中断是可以打断低优先级中断的。