DSP CAN报文接收超时配置

本文介绍了如何在TMS320F280X处理器中使用CAN模块进行报文接收时检测丢帧现象,关键步骤包括使用时间戳、超时限制、邮箱超时控制寄存器以及超时状态寄存器。作者提供了具体的编程示例,强调了超时时间的设置策略。
摘要由CSDN通过智能技术生成

在使用TMS320F280X做CAN报文接收时,有时候需要监测接收的报文是否存在丢帧的现象

为了实现丢帧监测,首先要用到以下几个寄存器的值

(1)该寄存器值为发送或接收CAN报文时刻的时间戳值,每次收发报文成功都会更新一次

(2)CAN收发报文的超时限制值

(3)对应邮箱的超时控制寄存器,使能邮箱的对应位为1

注意:使能之前需要先加载MOTO的值

(4)超时状态寄存器;对应值为1则超时,或者即可认为丢帧;是我们最终想要获取的值

程序实现:

这里我用的是邮箱2来接收报文,其常规配置信息不做赘述

注意:配置的超时时间一定要大于报文的接收周期的2-3倍;这里我的邮箱2接收到的报文周期为100ms;超时时间设置为1000ms

 {      

    EALLOW;
            ECanaMOTORegs.MOTO2=ECanaMOTSRegs.MOTS2+250000;//4us自加1,;自加250000次为1S
            //ECanaMOTSRegs.MOTS2为上一时刻接收到邮箱消息的时刻,ECanaMOTORegs.MOTO2为设定的超时时间
            ECanaRegs.CANTOC.bit.TOC2=1;//使能超时功能
            EDIS;

}//此段程序不是放在初始化中执行;而是放到主函数或者中断执行

        if(ECanaRegs.CANTOS.bit.TOS2==1)//TOS2的值为1则接受信号超时,或认为丢帧
        {

                //丢帧需要做相关的报文数据处理,这里我将所有数据置0
            V2P_readdata_L=0;
            V2P_readdata_H=0;
        }
        else//TOS2的值为0则正常读取邮箱2的数据
        {

            V2P_readdata_L=ECanaMboxes.MBOX2.MDL.all;
            V2P_readdata_H=ECanaMboxes.MBOX2.MDH.all;
        }

Debug运行,功能正常

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值