查看: 7726|回复: 1

[其他] MSCAN和CAN同步是什么意思

[复制链接]

该用户从未签到

3

主题

8

帖子

0

新手上路

Rank: 1

积分
15
最后登录
1970-1-1
发表于 2012-5-6 17:26:10 | 显示全部楼层 |阅读模式
MSCAN和CAN同步是什么意思,我最近在做飞思卡尔MC9S12DG128CAN通信,老是不成功,请高手帮忙,下面是我的程序
#include       /* common defines and macros */
#include "derivative.h"      /* derivative-specific definitions */

 int a[8],W=0,W1;                          
void setbusclock(void)   //PLL setting
{   
    CLKSEL=0X00;    //disengage PLL to system
    PLLCTL_PLLON=1;   /https://www.nxpic.org.cn/file:///C:/DOCUME~1/lm/LOCALS~1/Temp/@IR3P(8S$C$Z$TY~5I%7BQEPC.gif on PLL
    SYNR=0xc2;          
    REFDV=0xc1;          //pllclock=2*osc*(1+SYNR)/(1+REFDV)=64MHz;
    _asm(nop);          //BUS CLOCK=48M
    _asm(nop);
    while(!(CRGFLG_LOCK==1));   //when pll is steady ,then use it;
    CLKSEL_PLLSEL =1;          //engage PLL to system; 
}
void delay(){
long j=6000;
while(j--);
j=6000;
while(j--);
j=6000;
while(j--);
j=6000;
while(j--);
}                        
void CANinit(){
 CAN0CTL0_INITRQ=1;
while (!CAN0CTL1&0x01);   // 等待MSCAN进入初始化状态
/CAN0IDAC=0X20;
 CAN0IDMR0=0XFF;
 CAN0IDMR1=0XFF;
 CAN0IDMR2=0XFF;
 CAN0IDMR3=0XFF;
 CAN0IDMR4=0XFF;
 CAN0IDMR5=0XFF;
 CAN0IDMR6=0XFF;
 CAN0IDMR7=0XFF;
 CAN0BTR0=0X40;
 CAN0BTR1=0X3F;
 CAN0CTL1=0X80;
  CAN0CTL0_INITRQ=0;
while(CAN0CTL1&0x01) ;    // 等待MSCAN进入正常运行模式
while(!(CAN0CTL0&0x10));
 CAN0RIER_RXFIE=1; 
 }
void CAN0_TX(){
uchar i;
i=CAN0TFLG;
CAN0TBSEL=i;
i=CAN0TBSEL;
CAN0TXIDR1=0X01;
CAN0TXIDR2=0X00;
CAN0TXDSR0=0X01;
CAN0TXDSR1=0X02;
CAN0TXDSR2=0X03;
CAN0TXDSR3=0X04;
CAN0TXDSR4=0X05;
CAN0TXDSR5=0X06;
CAN0TXDSR6=0X07;
CAN0TXDSR7=0X08;
CAN0TXDLR=0X08;
CAN0TFLG=i;


}

void main(void) {
  /* put your own code here */

 setbusclock();  
 CANinit();
EnableInterrupts;
   DDRS=0X00;
  for(;;) {
  if(PTIS_PTIS7==0) {
    
     CAN0_TX();
    
  }
    _FEED_COP(); /* feeds the dog */
  } /* loop forever */
  /* please make sure that you never leave main */
}
 #pragma CODE_SEG __NEAR_SEG NON_BANKED 
void interrupt 38 CAN0_RX(void) {
W1=1;
CAN0CTL0_RXFRM=1;
a[0]=CAN0RXDSR0;
delay();
a[1]=CAN0RXDSR1;
delay();
a[2]=CAN0RXDSR2;
delay();
a[3]=CAN0RXDSR3;
delay();
a[4]=CAN0RXDSR4;
delay();
a[5]=CAN0RXDSR5;
delay();
a[6]=CAN0RXDSR6;
delay();
a[7]=CAN0RXDSR7;
CAN0RFLG=0X01;
}
两个单片机一样的程序,为什么不能通信,请高手帮忙,谢谢
我知道答案 目前已有0人回答
回复

使用道具 举报

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

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

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

    RE:MSCAN和CAN同步是什么意思

    CAN总线上要加120欧姆的电阻,测试CAN的时候,最好用一个CAN收发器来测试,确认CAN的通讯没有问题了,再用到产品上。如果刚开始做CAN部分,建议采纳上面的建议。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-7-28 07:29 , Processed in 0.081519 second(s), 22 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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