打印
[DSP编程]

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

[复制链接]
1775|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
pinda_|  楼主 | 2014-1-18 13:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
       临近年底,总是大事小事,一起来,最近搞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[1] = 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
年底   多总结 多分享
关于MSB置位  CAN使用熟练的朋友帮忙解答

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

使用特权

评论回复
地板
zhangmangui| | 2014-1-18 13:54 | 只看该作者
pinda_ 发表于 2014-1-18 13:50
嗯,总结看来要到年后去了,最近公司的年会弄的头疼

祝你好运  抽大奖

使用特权

评论回复
5
pinda_|  楼主 | 2014-1-18 13:57 | 只看该作者
zhangmangui 发表于 2014-1-18 13:54
祝你好运  抽大奖

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

使用特权

评论回复
6
raoxianbin| | 2014-1-18 16:40 | 只看该作者
之前想弄这块来着,做个标记,回头研究下

使用特权

评论回复
7
pinda_|  楼主 | 2014-1-18 16:52 | 只看该作者
zhangmangui 发表于 2014-1-18 13:54
祝你好运  抽大奖

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

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

回来再做详细说明。  

使用特权

评论回复
8
pinda_|  楼主 | 2014-1-18 17:45 | 只看该作者
raoxianbin 发表于 2014-1-18 16:40
之前想弄这块来着,做个标记,回头研究下

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

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

使用特权

评论回复
9
raoxianbin| | 2014-1-18 18:03 | 只看该作者
pinda_ 发表于 2014-1-18 17:45
https://bbs.21ic.com/icview-630498-1-1.html

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

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

使用特权

评论回复
10
pinda_|  楼主 | 2014-1-20 08:43 | 只看该作者
raoxianbin 发表于 2014-1-18 18:03
en  好  到时候一定向你请教。。。

请教谈不上,一起讨论吧:D

使用特权

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

本版积分规则

个人签名:该吃吃,该喝喝!!!

13

主题

173

帖子

0

粉丝