SJA1000的功能框图如表1所示,图2-3是其引脚图。SJA1000型独立CAN总线控制器由以下几部分构成;
(1)接口管理逻辑:它接收来自微处理器的命令,控制CAN寄存器的地址,并为微处理器提供中断和状态信息。
(2)发送缓冲器:有13字节长。它位于CPU和位流处理器(BSP)之间,能存储一条将在CAN总线上发送的完整的报文,报文由CPU写入,由SBP读出。
(3)接收缓冲器(RXB、RXFIFO):它是CPU和接收滤波器之间的接口,用来存储从CAN总线接收并通过了滤波的报文。接收缓冲器RXB是提供给CPU可访问的13字节的窗口,这个窗口是属于接收FIFO(RXFIFO)的一部分,共由64字节长。有了这个FIFO,可以在CPU处理一个报文的同时继续接收其他到来的报文。
(4)接收滤波器:它把报文头中的标识符和接收滤波寄存器中的内容进行比较,以判断文报文是否被接收。如果被接收,报文存入RXFIFO。
(5)位流处理器:它是一个控制发送缓冲器、RXFIFO并行数据和CAN总线(串行数据)之间数据的序列发生器,同时它也执行错误检测、仲裁、位填充和CAN总线错误处理功能。
(6)位定时逻辑不:它将SJA1000同步于CAN总线上的位流。
(7)错误管理逻辑:它按照CAN协议完成错误界定。
由于SJA1000与PCA82C2000兼容,因此SJA1000的缺省工作方式即基本CAN模式与82C200相同。下面介绍SJA1000工作在增强CAN模式(PeliCAN)下的寄存器配置。在初始化期间,芯片在复位模式(RESET MODE)时的寄存器配置如表1所列,在工作期间的运行模式(OPERATING MODE)下,部分寄存器的定义将有所更改,具体见表2。
![](../img/eep/emb/emb-69165iefod4yoloe.jpg)
表2 SJA1000寄存器配置(工作模式)
SJA1000的新增功能如下:
(1)支持CAN2.0B协议
SJA1000完全支持CAN2.0B协议,这意味着实现了扩展的振荡器容差和处理扩展帧报文,在基本CAN方式中,仅可发送和接收标准帧报文(11位标识符),若检测到CAN总线上的扩展帧报文(29位标识符),他们将允许,并在确认报文正确后给予应答,但不会产生接收中断。标识符作为报文的名称将被用于接收器的验收滤波过程中,同时在仲裁处理期间,也用来确定总线访问的优先权。标识符二进制数值愈低,其优先权愈高。
(2)扩展的接收缓冲器
利用SJA1000可将原有的PAC82C200双接收缓冲器被接收FIFO替代,并可用来存储来自CAN总线上被接收和滤波的报文,作为CPU能访问的一个FIFO的13字节窗口,接收FIFO总长度为64字节。通过FIFO,CPU可以在处理一个报文的同时接收其它报文。
(3)增强的错误处理能力
在增强CAN模式功能中,SJA1000为增强错误处理功能增加了一些新的特殊功能寄存器,包括:仲裁丢失捕捉寄存器(ALC),出错码捕捉寄存器(ECC),错误警告极限寄存器(EWLR),RX出错计数寄存器(RXERR)和TX出错计数寄存器(TXERR)等。借助于这些错误寄存器可以找到丢失仲裁位的位置,分析总线错误类型和位置,定义错失仲裁位的位置,分析总线错误类型和位置,定义错误警告极限值以及记录发送和接收时出现错误的个数等。
(4)增强的验收滤波功能
SJA1000带有验收滤波器功能,它的作用是自动检查报文中的标识符和数字节。通过设置滤波,与该总线节点不相关的一个报文或一组报文净不被SJA1000所接收,这样可以提高CPU的利用效率。在增强型CAN方式中,SJA1000还增加了单滤波方式和双滤波方式,可以对标准帧和扩展帧实现更复杂的滤波功能
2.2.2.2基于SJA1000的控制电路设计
控制器SJA1000作为本接口电路中的控制部分,应用本设计中,对于SJA1000和单片机的连接,引脚AD0~AD7是和89C51的输出输入脚P0.0~P0.7相接;SJA1000的片选信号脚/CS必须由微控制器的P2.7口控制否则这个片选输入必须接到VSS 也可以通过地址解码控制例如当地址/数据总线用于其他外围器件,ALE对应ALE,读/写输入脚/WR、/RD,/INT和单片机的/INT0连接,由于在该系统中要用到相同的时钟频率,所以我们要时钟信号引脚CLKOUT和单片机的XTAL1脚相连,达到频率一致的目的;而在复位信号的处理,可以在看门狗外围电路的RST信号输出后再通过和非门电路的相连,很好的实现了电路的复位作用。而对于控制器的收发引脚TX0,TX1与RX0,RX1,在本系统中TX0、RX0可和收发器82C250的TXD、RXD接通。同时,在和CPU接口中SJA1000 支持对两个著名的微型控制器系列的直接连接80C51 、68xx 。通过SJA1000 的MODE 引脚可选择接口模式Intel 模式 MODE 高;Motorola 模式 MODE 低。在Intel 模式和Motorola 模式里地址/数据总线和读/写控制信号的连接。本设计中,正是使用Intel模式。对SJA1000的Vdd1~Vdd3电源输入脚,外接上驱动+5V电压;而Vss1~Vss3输出接地。设计中,对SJA1000提供16Mkz的晶振。电路设计如下