打印
[DSP编程]

2812 CAN通讯无法进入中断

[复制链接]
3362|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yjw16|  楼主 | 2014-4-30 20:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yjw16 于 2014-4-30 22:13 编辑

ECAN作为发送邮箱时,电脑上可以成功收到数据。但作为接受邮箱时,老是不能进入中断,请问是什么原因?程序如下
void main(void)
{
        InitSysCtrl();
        DINT;
        IER = 0x0000;
        IFR = 0x0000;
        InitPieCtrl();
        InitPieVectTable();        
        InitECan();
        EALLOW;   
        PieVectTable.ECAN0INTA  =  &User_ECAN0_INTA;
        //PieVectTable.ECAN1INTA  =  &User_ECAN1_INTA;
    EDIS;
        PieCtrl.PIEIER1.bit.INTx5=1;
        IER |= M_INT9;
        EINT;  
    ERTM;
        Rec_l=0;
        Rec_h=0;
    for(;;)
    {}
}

interrupt void User_ECAN0_INTA(void)
{

        while(ECanaRegs.CANRMP.all!=0x00010000);
        ECanaRegs.CANRMP.all!=0x00010000;

        Rec_l=ECanaMboxes.MBOX16.MDRL.all;
        Rec_h=ECanaMboxes.MBOX16.MDRH.all;
        PieCtrl.PIEACK.bit.ACK9 = 1;
        EINT;
}

void InitECan(void)
{
        struct ECAN_REGS ECanaShadow;
        EALLOW;
    GpioMuxRegs.GPFMUX.bit.CANTXA_GPIOF6 = 1;
    GpioMuxRegs.GPFMUX.bit.CANRXA_GPIOF7 = 1;
        EDIS;
        
        EALLOW;
        ECanaShadow.CANTIOC.all = ECanaRegs.CANTIOC.all;
        ECanaShadow.CANTIOC.bit.TXFUNC = 1;
        ECanaRegs.CANTIOC.all = ECanaShadow.CANRIOC.all;
        
        ECanaShadow.CANRIOC.all = ECanaRegs.CANRIOC.all;
        ECanaShadow.CANRIOC.bit.RXFUNC = 1;
        ECanaRegs.CANRIOC.all = ECanaShadow.CANRIOC.all;
        EDIS;

        EALLOW;
        ECanaShadow.CANMC.all = ECanaRegs.CANMC.all;
        ECanaShadow.CANMC.bit.STM = 0;
        ECanaShadow.CANMC.bit.SCM = 1;
        ECanaRegs.CANMC.all = ECanaShadow.CANMC.all;
        EDIS;
        
        ECanaMboxes.MBOX16.MCF.all=0x00000000;
        ECanaRegs.CANTA.all=0xFFFFFFFF;
        ECanaRegs.CANRMP.all=0xFFFFFFFF;

        ECanaRegs.CANGIF0.all = 0xFFFFFFFF;
        ECanaRegs.CANGIF1.all = 0xFFFFFFFF;
        
                EALLOW;
        //邮箱屏蔽使能
        ECanaShadow.CANMC.all = ECanaRegs.CANMC.all;
        ECanaShadow.CANMC.bit.CCR = 1;
        ECanaRegs.CANMC.all = ECanaShadow.CANMC.all;
        EDIS;
        
                do
        {
        ECanaShadow.CANES.all = ECanaRegs.CANES.all;
        }while(ECanaShadow.CANES.bit.CCE != 1);
        
                // 125kHz CAN clock
        EALLOW;
        ECanaShadow.CANBTC.bit.BRP = 79; //9
        ECanaShadow.CANBTC.bit.TSEG2 = 2; //5
        ECanaShadow.CANBTC.bit.TSEG1 = 10; //7
        ECanaRegs.CANBTC.all = ECanaShadow.CANBTC.all;
        
        ECanaShadow.CANMC.all = ECanaRegs.CANMC.all;
        ECanaShadow.CANMC.bit.CCR = 0;
        ECanaRegs.CANMC.all = ECanaShadow.CANMC.all;
        EDIS;
        
        do
        {
                ECanaShadow.CANES.all = ECanaRegs.CANES.all;
        }while(ECanaShadow.CANES.bit.CCE != 0);
        ECanaRegs.CANME.all=0;
        ECanaMboxes.MBOX16.MID.all = 0x80C20000;
        ECanaShadow.CANMD.all = ECanaRegs.CANMD.all;
        ECanaShadow.CANMD.bit.MD16 = 1;
        ECanaRegs.CANMD.all = ECanaShadow.CANMD.all;
        ECanaMboxes.MBOX16.MCF.bit.DLC = 8;

                ECanaMboxes.MBOX16.MCF.bit.RTR = 0;
               
                ECanaShadow.CANME.all = ECanaRegs.CANME.all;
                ECanaShadow.CANME.bit.ME16=1;
                ECanaRegs.CANME.all = ECanaShadow.CANME.all;
               
                EALLOW;
                ECanaRegs.CANMIM.all = 0xFFFFFFFF;
                ECanaRegs.CANMIL.all =0;
                ECanaRegs.CANGIF0.all = 0xFFFFFFFF;
                ECanaRegs.CANGIM.bit.I0EN = 1;
                EDIS;
}

相关帖子

沙发
zhangmangui| | 2014-4-30 22:58 | 只看该作者
没看出来  顶顶

使用特权

评论回复
板凳
yjw16|  楼主 | 2014-5-2 16:11 | 只看该作者
本帖最后由 yjw16 于 2014-5-2 22:41 编辑
zhangmangui 发表于 2014-4-30 22:58
没看出来  顶顶

调试了下,发现给DSP发送数据时,ECanaRegs.CANRMP.all的值由0变为65536,说明bit.RMP16=1,ECanaMboxes.MBOX16.MDRL.all和ECanaMboxes.MBOX16.MDRH.all的值都正确,可是中断进不去,你知道是什么回事吗?

使用特权

评论回复
地板
yjw16|  楼主 | 2014-5-3 14:26 | 只看该作者
找到错误了。此贴完结

使用特权

评论回复
5
sxw1013| | 2015-1-20 10:42 | 只看该作者
怎么解决的?

使用特权

评论回复
6
海中水| | 2015-1-20 10:44 | 只看该作者
楼主把问题分享一下吧。

使用特权

评论回复
7
海中水| | 2015-1-20 10:45 | 只看该作者
中断函数的标志位没有清除吗?

使用特权

评论回复
8
micronsun| | 2015-1-27 12:29 | 只看该作者
怎么解决的,一抹一样的问题

使用特权

评论回复
9
zdc8228| | 2016-3-31 21:12 | 只看该作者
我也遇到同样问题,求解

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

19

帖子

0

粉丝