查看: 2907|回复: 2

[其他] DZ60 CAN模块求教

[复制链接]

该用户从未签到

5

主题

20

帖子

0

新手上路

Rank: 1

积分
1
最后登录
1970-1-1
发表于 2012-7-9 21:13:02 | 显示全部楼层 |阅读模式
我的DZ60 然后收发器用的是250,但是发送端一直没有数据,是什么原因呢。。底层用的是飞思卡尔官网提供的程序。外部晶振8M总线是16M,这是MCG初始化和CAN初始化的程序。
UINT8 CAN_Init(UINT8 rmode)
{
      UINT8 errorStatus,                               /* error code from Reset_CAN */
            i;                                         /* loop counter */

#if defined(EEPROM_SECURITY_CHECK)
            /* test for correct value in EEPROM */
 if (CAN_dataCheck != EEPROM_SECURITY)
 {
            /* if test fails do not initialise */
  return(ERR_OK);
 }
#endif /* EEPROM_SECURITY_CHECK */
      errorStatus = CAN_Reset(rmode);                      /* reset msCAN */
      if (errorStatus != ERR_OK)
      {
            return (errorStatus);
      }
      CANCTL1 = CANCTL1_Def;                                /* initialise hardware registers */
      CANBTR0 = CANBTR0_Def;
      CANBTR1 = CANBTR1_Def;
      CANIDAC = CANIDAC_Def;
      for (i = 0; i < NO_OF_FILTER_REG; i++)         
      {
            *(&CANIDAR0 + i) = CANIDFilter_Def;              /* initialise hardware acceptance filter  */
      }
      CANCTL0 &= ~INITRQ;                                     /* clear soft reset */
      CANCTL0 = CANCTL0_Def;                                 /* must write separate from clearing SFTRST */
      for (i = 0 ; i < NoOfMB ; i++)                         /* configure all MB's to CLOSED, NODATA */
      {
            BufferMode_CAN = CLOSED;
            BufferStatus_CAN = NODATA;
      }
      MB_MSCAN[0] = 0xff;                                    /* more efficient than for loop */
      MB_MSCAN[1] = 0xff;
      MB_MSCAN[2] = 0xff;
     
      MBP_MSCAN[0] = 0xff;
      MBP_MSCAN[1] = 0xff;
      MBP_MSCAN[2] = 0xff;
     
#if (NO_OF_MSCAN_TXBUFFER != 3)
#error MB_MSCAN not initialised
#endif
     
      if (CANCTL1 & INITAK) return ERR_INIT;
     
      CLI;                                                   /* clear interrupt mask */
      CANRIER = 0x01;                                        /* enable Receive Interrupts */
      if ((CANRFLG & BUSOFF) == BUSOFF)                     /* Bus-off */
      {
                  return (ERR_BOFF);
      }
      else
      {
            return (ERR_OK);
      }
}

#define CANCTL0_CAN ((CSWAI_CAN
我知道答案 目前已有1人回答
回复

使用道具 举报

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

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2012-7-10 14:09:34 | 显示全部楼层

    RE:DZ60 CAN模块求教

    你接CAN收发器了吗?另外CAN总线上连接120欧姆电阻没有?
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5

    主题

    20

    帖子

    0

    新手上路

    Rank: 1

    积分
    1
    最后登录
    1970-1-1
     楼主| 发表于 2012-7-10 15:09:26 | 显示全部楼层

    回复:DZ60 CAN模块求教

    回复第 2 楼 于2012-07-10 14:09:34发表:
    你接CAN收发器了吗?另外CAN总线上连接120欧姆电阻没有? 

    收发器接的是82C250,120欧电阻接与不接都试过不行,因为我现在测试的两点间距很短,所以我把120欧电阻去掉了
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-7-28 16:49 , Processed in 0.084530 second(s), 23 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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