CAN控制器SJA1000及其应用
扫描二维码
随时随地手机看文章
摘要:介绍CAN控制器SJA1000的特点、内部结构以及SJA1000的寄存器结构及地址分配;CAN协议通信格式。并以独立CAN控制器SJA1000为例,结合CAN协议说明了一种通用型CAN总线的开发与设计。
关键词:CAN总线索SJA1000单片机
1 SJA1000简介
SJA1000是PHILIPS公司早期CAN控制器PCA82C200的替代品,功能更强,具有如下特点:
①完全兼容PCA82C200及其工作模式,即BASIC CAN模式;
②具有扩展的接收缓冲器,64字节的FIFO结构;
③支持CAN2.0B;
④支持11位和29位识别码;
⑤位速率可达1Mbit/s;
⑥支持peliCAN模式及其扩展功能;
⑦24MHz的时钟频率;
⑧支持与不同微处理器的接口;
⑨可编程的CAN输出驱动配置;
⑩增强了温度范围(-40℃~+125℃)。
2 SJA1000内部结构
SJA1000的内部结构如图1所示,主要由接口管理逻辑IML、信息缓冲器(含发送缓冲器TXB和接收缓冲器RXFIFO)、位流处理器BSP、接收过滤器ASP、位时序处理逻辑BTL、错误管理逻辑EML、内部振荡器及复位电路等构成。IML接收来自CPU的命令,控制CAN寄存器的寻址并向主控器提供中断信息及状态信息。CPU的控制经IML把要发送的数据写入TXB,TXB中的数据由BSP处理后经BTL输出到CAN BUS。BTL始终监视CAN BUS,当检测到有效的信息头"隐性电平-控制电平"的转换时启动接收过程,接收的信息首先要由位流处理器BSP处理,并由ASP过滤,只有当接收的信息的识别码与ASP检验相符时,接收信息才最终被写入RXB或RXFIFO中。RXFIFO最多可以缓存64字节的数据,该数据可被CPU读取。EML负责传送层中调制器的错误管制,它接收BSP的出错报告,促使BSP和IML进行错误统计。
3 SJA1000的寄存器结构及地址分配
表1是工作在BASIC CAN模式下的SJA1000的寄存器结构及地址分配表。CAN控制器工作模式的设定、数据的发送和接收等都是通过这些寄存器来实现的。时钟分频寄存器OCR用于设定SJA1000工作于BASIC CAN还是PeliCAN,还用于CLKOUT引脚输出时钟频率的设定,在上电初始化控制器时必须首先设定;在工作模式下,控制寄存器CR用于控制CAN控制器的行为,可读可写;命令寄存器CMR只能写;状态寄存器SR只能读;而IR、ACR、AMR、BTR0、BTR1、OCR在工作模式下读写无意义。通常,在系统初始化时,先使CR.0=1,SJA1000进入复位模式。在此模式下IR、ACR、AMR、BTR0、BTR1及OCR均可读可写,此时设置相应的初值。当退出复位模式时,SJA1000即按复位时设定的相应情况工作于工作模式,除非再次使芯片复位,否则上次设定的值不变。当需要发送信息时,若发送缓冲器空闲,由CPU控制信息写入TXB,再由CMR控制发送;当接收缓冲器RXFIFO未满且接收信息通过了ASP,则接收到的信息被写入RXFIFO。可通过两种方法读取接收到的信息。一种方法是,在中断被使能的情况下,由SJA1000向CPU发中断信号,CPU通过SR及IR可以识别该中断,并读取数据释放接收缓冲器;另一种方法是直接读取SR,查询RXFIFO的状态,当有信息接收时,读取该信息并释放接收缓冲器。当接收缓冲器中有多条信息时,当前的信息被读取后,接收缓冲器有效信号会再次有效,通过中断方式或查询方式可以再次读取信息,直到RXFIFO中的信息被全部读出为止。当RXFIFO已满,如还有信息被接收,此接收信息不被保存,且发出相应的缓冲器溢出信号供CPU读取处理。
5.3 软件设计
该系统的软件设计分为两方面:(1)PC机软件设计,可以用VC++、VB,也可以使用工控软件完成。如只用于监视系统,设计的重点在于PC机与节点之间的通信。(2)节点上CPU的软件设计。不论是节点1、2或是其它底层节点,都要用到CAN通信,因此都要设置CAN控制器。其初始化的流程图如图5所示。
具体的例程如下:
MOV DPTR #CR ;控制寄存器CR的地址送DPTR
MOV A #01H
MOVX @DPTR A ;进入复位模式
MOV DPTR #CDR
MOV A #00H
MOVX @DPTR A ;选择BASIC CAN模式、时钟不输出
MOV A #NODECODE
MOVX @DPTR A ;节点号NODECODE写入ACR
MOVX DPTR #AMR
MOV A #00H
MOV @DPTR A ;AMR置为0,当且仅当RXID0=ACR时接收数据。
MOV DPTR #BTR0;设定总线时序寄存器BTR0,系统采用12MHz晶振
MOV A #85H ;分频后总线时钟频率为2MHz
MOVX @DPTR A ;同步跳转宽度为3tscl
MOV DPTR #BTR1 ;设定总线时序寄存器BTR1
MOV A #0B4H ;位同步时间为1个tscl 采样开始位置TSEG1=5tscl
MOVX @DPTR A ;TSEG2=4tscl每一位时间10tscl(200kHz),每位采样3次
MOV DPTR #OCR ;设置输出控制寄存器
MOV A #1AH ;数据从TX0按正常输出模式同极性输出
MOV @DPTR A ;TX1 不用
MOV DPTR #CR ;初始化完成,使控制器退出复位模式,进入工作模式工作。
MOV A #06H
MOV @DPTR A
该初始化程序使SJA1000工作在 BASIC CAN模式下,CAN总线位速率为200kHz。根据总线传输的距离不同速度可以调整。为提高其抗干扰性能,还可以在SJA1000与CAN总线收发器之间加光隔。各节点CPU的其它软件设计应视节点的功能而定,不再赘述。
该系统用于城市区域交通中心信息采集及处理,已取得很好效果。由于传输距离较远,设定速率为10kHz,但可靠性较强,系统成本低廉。
CAN总线以其优良的性能使其应用方兴未艾,以SJA1000为控制器构成各种CAN总线系统方便、简单、成本低廉,这也是开发与应用其它CAN总线产品的基础。
参考文献
1 邬宽明.CAN总线原理和应用系统设计. 北京:北京航空航天大学,2001.3
2 DATA SHEET SJA1000 CAN Stand-alone controller.PHILIPS Semiconductors 公司,2000.4
3 王东威,顾宏,洪义平.基于CAN总线的安全巡检系统的信息采集及处理.电子产品世界, 2002(4)