查看: 2683|回复: 2

[已解决] MSCAN收发问题,求多条报文收发解决方法,谢谢各位(已解决)

[复制链接]

该用户从未签到

5

主题

12

帖子

0

新手上路

Rank: 1

积分
33
最后登录
1970-1-1
发表于 2013-7-6 09:53:26 | 显示全部楼层 |阅读模式
[table=98%]            [tr]            [td]MSCAM收发问题[/td]        [/tr]        [tr]            [td]            <div id="bbs_main_body">            <div id="article_body_1743628">
            如题,我用DP256的两个MSCAN做收发,可以实现单条报文的收发。进行多条收发的时候,出现问题。
            初始化函数就不写了,收发函数如下:
            Bool MSCAN1GetMsg(struct can_msg *msg)
            {
             
              unsigned char sp2;
              // 检测接收标志
              if(!(CAN1RFLG_RXF))
                return(FALSE);
             
              // 检测 CAN协议报文模式 (一般/扩展) 标识符
              if(CAN1RXIDR1_IDE)
                // IDE = Recessive (Extended Mode)
                return(FALSE);
              // 读标识符
              msg->id = (unsigned int)(CAN1RXIDR05);
             
              if(CAN1RXIDR1&0x10)
                msg->RTR = TRUE;
              else
                msg->RTR = FALSE;
             
              // 读取数据长度
              msg->len = CAN1RXDLR;
             
              // 读取数据
              for(sp2 = 0; sp2 < msg->len; sp2++)
                msg->data[sp2] = *((&CAN1RXDSR0)+sp2);
              // 清 RXF 标志位 (缓冲器准备接收)
              CAN1RFLG = 0x01;
              return(TRUE);
            }
             
             
            Bool MSCAN0SendMsg(struct can_msg msg)
            {
              unsigned char send_buf, sp;
             
              // 检查数据长度
              if(msg.len > 8)
                return(FALSE);
              // 检查总线时钟
              if(CAN0CTL0_SYNCH==0)
                return(FALSE);
            
  send_buf = 0;
              do
              {
                // 寻找空闲的缓冲器
                CAN0TBSEL=CAN0TFLG;
                send_buf=CAN0TBSEL;
              }
             
              while(!send_buf);
             
              // 写入标识符
              CAN0TXIDR0 = (unsigned char)(msg.id>>3);
              CAN0TXIDR1 = (unsigned char)(msg.id
我知道答案 目前已有1人回答
回复

使用道具 举报

  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2013-7-6 10:01:02 | 显示全部楼层

    RE:MSCAN收发问题,求多条报文收发解决方法,谢谢各位

    如果单条发没有问题,可能就是在发多条的时候引起的,建议仿真看一下。到底是停到哪里了。分析可能是CAN总线忙引起的。是否有连接收发器呢?
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5

    主题

    12

    帖子

    0

    新手上路

    Rank: 1

    积分
    33
    最后登录
    1970-1-1
     楼主| 发表于 2013-7-8 09:23:58 | 显示全部楼层

    回复:MSCAN收发问题,求多条报文收发解决方法,谢谢各位

    那我仿真试试看,连接有收发器。谢谢了
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-20 04:39 , Processed in 0.085985 second(s), 23 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表