void Basic_caninit(void)
{
unchar bdata state;
do{
SJA_CR = RM_BIT; //将模式寄存器的复位
state = SJA_CR;
}
while( !(state & RM_BIT) ); //确保模式寄存器为复位状态
SJA_CDR = CLKOff_BIT;// CDR.3=1--时钟关闭, .7=0---basic CAN, .7=1---Peli CAN
SJA_BTR0 = 0x03;
SJA_BTR1 = 0xb2;//16M晶振,波特率125Kbps
SJA_CR |= RIE_BIT;// .0=1--接收中断使能; .1=0--关闭发送中断使能
SJA_OCR = NormalMode|Tx0PullDn|OCPOL1_BIT|Tx1PullUp;// 配置输出控制寄存器
SJA_CMR = RRB_BIT;//释放接收缓冲器
SJA_ACR = 0xff;
SJA_AMR = 0x00;
do{
SJA_CR = RIE_BIT;
state = SJA_CR;
}
while( (state & RM_BIT) ); //
}
这是前些天自己修改的SJA1000tBASIC CAN模式下的初始化程序,程序已经过实验,可以工作
|