我自己开发的CAN总线实验软件
源代码在线查看: 帮助&初始化.txt
※SJA1000的初始化
每个智能芯片都要初始化,特别是对于SJA100这样的复杂芯片。这里将采用最精简的初始化步骤。
SJA1000的初始化需要做的内容个操作寄存器是:
1.模式寄存器(MODE)。设置MODE.1=1,使SJA1000进入复位模式.(MODE=0X01,0X09,0X0D)都可以,只要满足MODE.1=1就可以.只有进入复位模式,才能正常初始化SJA1000.
2.设置SJA1000的CAN滤波器.寄存器地址为:0X10-0X17.其中,0X10-0X13对应的是CAN的接收代码(ACR3-ACR0),0X14-0X17对应的是屏蔽代码(AMR3-AMR0).这8个值可以有用户根据实际情况设置,理论上说,在0-0XFF之间没有什么限制.(ACR0除外)
3.设置总线时序寄存器(BTR0,BTR1),输出控制器(OCR)和时钟分频寄存器(CDR).总线时序寄存器(BTR0,BTR1)的设置内容可以自己根据需要进行设置,也可以按照以下的表来设置;输出控制器的值也可以由自己设置,也可以参考标准值(0X1A);时钟分频寄存器的设置很重要,必须在这个寄存器里,设置SJA1000的工作方式:BaseCAN方式还是PeliCAN方式.为了能够胜利通信,必须把SJA1000设置为PeliCAN方式(0XC8).
4.退出复位模式并选择滤波方式,都在模式寄存器中设置.推荐使用0X08,即:单滤波方式,进行正常工作.
提醒:以上4步是SJA1000初始化内容所必须的,缺一不可.当然,还有部分寄存器也可能需要在初始化的时候进行设置,这里就没有列出来,详细请参考教材的相关内容.
/===================================================
由CiA推荐的标准波特率(16M晶振):
波特率 BTR0 BTR1
10Kbps 0x31 0x1c
20Kbps 0x18 0x1c
50kbps 0x09 0x1c
100kbps 0x04 0x1c
125kbps 0x03 0x1c
250kbps 0x01 0x1c
500kbps 0x00 0x1c
800kbps 0x00 0x16
1000bps(1Mbps) 0x00 0x14 '这个波特率最好别用,现有硬件不能胜任.