TI中文支持网
TI专业的中文技术问题搜集分享网站

TMS320F28335自动进入CAN中断

现象:程序平时运行正常,在运行半个小时后,自动进入CAN中断。

           未连接CAN总线,没有数据传输,一进入CAN中断,一直在等待接收数据的do while中死循环。

想请教一下可能是出现了什么问题,应该怎么入手检查这个问题?

Susan Yang:能否说明下您现在的程序情况?若是可以的话,请您贴出代码,谢谢

现象:程序平时运行正常,在运行半个小时后,自动进入CAN中断。

           未连接CAN总线,没有数据传输,一进入CAN中断,一直在等待接收数据的do while中死循环。

想请教一下可能是出现了什么问题,应该怎么入手检查这个问题?

user4839965:

回复 Susan Yang:

感谢您的回复!下面是有关CAN部分的代码:
//****************初始化***********************//InitECan();//TI的函数,未修改
ECanaMboxes.MBOX0.MSGID.all = 0x9555AAA0;
ECanaShadow.CANMD.all = ECanaRegs.CANMD.all;ECanaShadow.CANMD.bit.MD0 = 1;ECanaRegs.CANMD.all = ECanaShadow.CANMD.all;
ECanaShadow.CANME.all = ECanaRegs.CANME.all;ECanaShadow.CANME.bit.ME0 = 1;ECanaRegs.CANME.all = ECanaShadow.CANME.all;
ECanaMboxes.MBOX0.MSGCTRL.bit.DLC = 8;

EALLOW;ECanaRegs.CANMIM.all = 0x00000001;ECanaRegs.CANMIL.all = 0x00000000;ECanaRegs.CANGIF0.all = 0xFFFFFFFF;ECanaRegs.CANGIM.bit.I0EN = 1;EDIS;
EALLOW;PieVectTable.ECAN0INTA = &cana_receive_isr;EDIS;
PieCtrlRegs.PIEIER9.bit.INTx5 = 1;
IER |= M_INT9;

//**************CAN接收中断******************//
__interrupt void cana_receive_isr(void) {do{ECanaShadow.CANRMP.all = ECanaRegs.CANRMP.all;} while(ECanaShadow.CANRMP.bit.RMP0 == 0 );
ECanaShadow.CANRMP.all = 0;ECanaShadow.CANRMP.bit.RMP0 = 1;ECanaRegs.CANRMP.all = ECanaShadow.CANRMP.all;
ReadDataL =ECanaMboxes.MBOX0.MDL.all;ReadDataH =ECanaMboxes.MBOX0.MDH.all;readcount++;
PieCtrlRegs.PIEACK.bit.ACK9 = 1;ECanaRegs.CANOPC.all = 0;
}
程序是一个电机控制程序,两个中断,另外一个中断频率是10kHz,CAN总线没连,运行半个小时后卡死在CAN中断里。

现象:程序平时运行正常,在运行半个小时后,自动进入CAN中断。

           未连接CAN总线,没有数据传输,一进入CAN中断,一直在等待接收数据的do while中死循环。

想请教一下可能是出现了什么问题,应该怎么入手检查这个问题?

Susan Yang:

回复 user4839965:

程序本身暂时没有发现问题。请问您现在是不使用CAN通信吗? 您是否可以尝试全部屏蔽CAN通信看剩余程序是否有问题?

赞(0)
未经允许不得转载:TI中文支持网 » TMS320F28335自动进入CAN中断
分享到: 更多 (0)