在线时间0 小时
UID356147
注册时间2012-5-1
NXP金币0
该用户从未签到
新手上路

- 积分
- 15
- 最后登录
- 1970-1-1
|
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;
}
两个单片机一样的程序,为什么不能通信,请高手帮忙,谢谢
|
|