pinda_ 发表于 2014-1-18 13:39

关于F2812 ECAN的定时邮递计数器溢出检测

       临近年底,总是大事小事,一起来,最近搞ECAN错误处理机制的时候,发现,每隔一定周期,TCOF 定时邮递计数器溢出错误被检测到,自己查了一些资料,发现属于物理上自己的累加,通过程序,可对其清零或复位。程序如下:

void InitECan(void)
{
      ……
               ECanaShadow.CANMC.bit.MBCC = 1;      // 成功发送消息后,定时邮递计数器清零        ECanaShadow.CANMC.bit.TCC = 1;          //定时邮递计数器MSB清零
      ……

              // 邮箱中断屏蔽寄存器
        ECanaRegs.CANMIM.all = 0xFFFFFFFF;
        // 邮箱中端级别设置寄存器        1代表使用中断线1,0代表使用中断线0       
        // 与邮箱相关的中断,例如消息的发送或者接收所响应的中断
        ECanaRegs.CANMIL.all = 0;
        // 全局中断标志位1被置位
        ECanaRegs.CANGIF0.all = 0xFFFFFFFF;

        ECanaRegs.CANGIM.bit.MTOM = 0x1;        // mailbox time-out
        ECanaRegs.CANGIM.bit.TCOM = 0x1;        // time counter overflown
        ECanaRegs.CANGIM.bit.AAIM = 0x1;        // acknowledge failure
        ECanaRegs.CANGIM.bit.WDIM = 0x1;        // write refusal
        ECanaRegs.CANGIM.bit.WUIM = 0x1;        // wake-up
        ECanaRegs.CANGIM.bit.RMLIM = 0x1;        // messages lost
        ECanaRegs.CANGIM.bit.BOIM = 0x1;        // bus closed
        ECanaRegs.CANGIM.bit.EPIM = 0x1;        // Error-passive
        ECanaRegs.CANGIM.bit.WLIM = 0x1;        // warning
        /* then, map all interrupts to ECAN1INT */
        ECanaRegs.CANGIM.bit.GIL = 0x1;
        /* Enable interrupt line0 */
        ECanaRegs.CANGIM.bit.I0EN = 0x1;       // 中断0用于消息目标一类的中断
        /* Enable interrupt line1 */
        ECanaRegs.CANGIM.bit.I1EN = 0x1;      //中断1用于系统相关一类的中断
}


// INT9.6
interrupt void ARCH_ECAN1INTA(void)// eCAN-A
{
        #if 1
        // 定时邮递计数器溢出标志位
        if(ECanaRegs.CANGIF1.bit.TCOF1 == 0x1)
        {
                ECanaRegs.CANGIF1.bit.TCOF1 = 0x1;

                valo_Can_Error = 0x04;
                MsgCtl_uchar(valo_Can_Error);   // 给上位机发送检测到的错误帧数据
        }
        #endif
      
      ……

               PieCtrlRegs.PIEACK.all = PIEACK_GROUP9;        EINT;
}

程序如上,但是,我现在不明白,为什么这个MSB会被置位。。


zhangmangui 发表于 2014-1-18 13:47

年底   多总结 多分享
关于MSB置位CAN使用熟练的朋友帮忙解答

pinda_ 发表于 2014-1-18 13:50

zhangmangui 发表于 2014-1-18 13:47 static/image/common/back.gif
年底   多总结 多分享
关于MSB置位CAN使用熟练的朋友帮忙解答

嗯,总结看来要到年后去了,最近公司的年会弄的头疼:Q

zhangmangui 发表于 2014-1-18 13:54

pinda_ 发表于 2014-1-18 13:50 static/image/common/back.gif
嗯,总结看来要到年后去了,最近公司的年会弄的头疼

祝你好运抽大奖

pinda_ 发表于 2014-1-18 13:57

zhangmangui 发表于 2014-1-18 13:54 static/image/common/back.gif
祝你好运抽大奖

:L研发的没抽奖资格怎么破呢

raoxianbin 发表于 2014-1-18 16:40

之前想弄这块来着,做个标记,回头研究下

pinda_ 发表于 2014-1-18 16:52

zhangmangui 发表于 2014-1-18 13:54 static/image/common/back.gif
祝你好运抽大奖

前几天一直没什么时间来想这个问题,今天想了下,搞定了。

问题就是出在这个TCOF上, 定时邮递计数器溢出标志位,也可以叫做邮戳吧,相当于一个计数器。
只是它是物理层的。。。。

回来再做详细说明。

pinda_ 发表于 2014-1-18 17:45

raoxianbin 发表于 2014-1-18 16:40 static/image/common/back.gif
之前想弄这块来着,做个标记,回头研究下

https://bbs.21ic.com/icview-630498-1-1.html

有兴趣的话,这边的还有个问题,年前是没法弄了,年后来搞,到时候一起玩吧:lol

raoxianbin 发表于 2014-1-18 18:03

pinda_ 发表于 2014-1-18 17:45 static/image/common/back.gif
https://bbs.21ic.com/icview-630498-1-1.html

有兴趣的话,这边的还有个问题,年前是没法弄了,年后来搞 ...

en好到时候一定向你请教。。。

pinda_ 发表于 2014-1-20 08:43

raoxianbin 发表于 2014-1-18 18:03 static/image/common/back.gif
en好到时候一定向你请教。。。

请教谈不上,一起讨论吧:D
页: [1]
查看完整版本: 关于F2812 ECAN的定时邮递计数器溢出检测