unsigned char Sja_1000_Init(void)
{
bit s;
EA=0; //关总中断
s=BCAN_ENTER_RETMODEL();//进入初始化模式
if (s==1) return 1;
s=BCAN_CREATE_COMMUNATION(); //建立通信
if (s==1) return 2;
s=BCAN_SET_OUTCLK(0xC8); //Pelican
if (s==1) return 3;
s=BCAN_SET_OBJECT(0xFF,0x4E,0x16,0x00,0xff,0xff,0xff,0xff);//屏蔽寄存器,都设为无关,接收所有报文
//当屏蔽位为1,不滤波,0就滤波必须相等
//s=BCAN_SET_OBJECT(0x55,0xe0,0xaa,0xa1,0x00,0x00,0xff,0xff);//验收码&屏蔽码
if (s==1) return 4;
s=BCAN_SET_BANDRATE(ByteRate_500k); //设置波特率125K 16MHZ
if (s==1) return 5;
SJA_BCANAdr=REG_OCR ; //输出控制寄存器
*SJA_BCANAdr=0x1a;
SJA_BCANAdr=REG_INTENABLE;
*SJA_BCANAdr=0x1D; //设置中断,接收和发送中断
// s=BCAN_SET_CONTROL(0x08);
SJA_BCANAdr=REG_CONTROL; //退出 复位模式
*SJA_BCANAdr=*SJA_BCANAdr&0xfe;
if(*SJA_BCANAdr!=0x00)
return 6;
//if (s==1) return 6;
EA=1;
return 0;
}
/****************************************************
调试了下 最后总是返回6 惆怅啊
最新推荐文章于 2022-12-31 17:50:11 发布