基于P89C668单片机的CAN总线接口设计
单片机P89C668 负责对SJA1000 进行初始化,通过控制SJA1000实现数据的发送与接收等通信任务.
SJA1000 的AD0~AD7连接到P89C668 的P0口;
CS连接到P89C668的P1.1,P1.1 为0 时选中SJA1000,可控制SJA1000;
SJA1000 的RD/E、WR、ALE/AS 分别连接到P89C668 的RD(P3.7)、WR(P3.6)、P1.0;
SJA1000的(INT)连接到P89C668 的P3.2(INT0),这样,P89C668 可以通过中断方式访问SJA1000;
SJA1000的模式选择引脚MODE 接高电平时选择Intel 模式;
为了保证时钟同步,SJA1000 的CLKOUT 引脚使能,向P89C668 提供时钟源.
实现CAN 总线通信,要对CAN 总线节点接口设计相应的总线通信程序;在总线通信之前,必须进行SJA1000 控制器初始化.在上电或复位后,单片机通过运行其自身复位程序初始化SJA1000.CAN总线通信程序大致由SJA1000 初始化、发送和接收三部分组成.以下分别对他们进行简单的描述.
2.1 SJA1000 初始化
在上电后,CAN 控制器的RST 脚获得一个复位脉冲,使之进入复位模式.在开始对SJA1000 各个配置寄存器进行设定之前,主控制器通过读复位/请求标识来检测SJA1000是否进入复位模式.为了避免微控制器的上电复位时间和SJA1000 的复位时间的偏差,微控制器要等待SJA1000 完成上电复位后才能对SJA1000 配置寄存器进行配置,存有配置信息的寄存器只能在复位模式下才可进行写入.SJA1000 初始化程序在复位模式下,主控制器要配置下面的寄存器:
(1)模式寄存器(仅在PeliCAN 模式下选择应用操作模式)
接收过滤模式
自检测模式
侦听模式
(2)时钟分频寄存器
使用BasicCAN 或PeliCAN 模式
CLKOUT 引脚是否可以使用
CAN 输入比较器是否被跳过
TX1 输出是否专门用于接收中断输出
(3)总线定时寄存器
定义总线的位速率
定义位周期内的采样点位采样点
定义一个位周期的采样数量
(4)接收代码和接收掩码寄存器
定义要接收消息的接收代码
定义与接收代码相关位进行比较的接收掩码
(5)输出控制寄存器
定义CAN 总线输出引脚TX0 和TX1 的配置
在将这些配置信息配置到SJA1000配置寄存器后,通过消除复位模式,请求使SJA1000进入操作模式.一定要确保复位标志真的被删除,并且在没有进行CAN 总线通信前进入操作模式,这可以通过读该标志来实现. 当硬件复位处于挂起状态,即CAN 控制器的RST 引脚为低电平时,复位模式/请求标志不能被清除.
评论