>
首页 » 技术文章 » 基于CAN控制器SJA1000的智能高速控制系统设计

基于CAN控制器SJA1000的智能高速控制系统设计

作者:陆前锋,陈明昭  时间:2006-12-21 18:56  来源:
摘 要:本文介绍了一种新型的现场总线控制器SJA1000的基本原理结构及功能特点,重点叙述了基于CAN控制器SJA1000的智能控制系统硬件电路及软件设计,给出了初始化程序。

关键词:CAN总线 SJA1000 智能控制 系统设计

引言

CAN总线是德国Bosch公司从80年代初为解决汽车中众多的控制与测试仪器之间的数据交换而开发的一种串行数据通信协议,它是一种多主总线,通信介质可以是双绞线、同轴电缆或光导纤维。通信速率可以达 1Mbps,通信距离可达10KM。CAN总线通信接口中集成了CAN协议的物理层和数据链路层功能,可完成对通信数据的成帧处理,包括位填充、数据块编码、循环冗余检验、优先级判别等项工作。CAN协议的一个最大的特点是废除了传统的站地址编码,而代之以对通信数据进行编码,这使得网络内的节点个数理论上不受限制。CAN协议采用CRC校验 ,并可以提供相应的错误处理功能,具有极高的可靠性和独特的设计,特别适用工业过程监控设备的互连,在工业现场应用越来越广泛。CAN总线具有下列主要特性: 1、多主站依据优先权进行总线访问;2、非破坏性的基于优先权的总线仲裁;3、借助接收滤波的多地址帧传送;4、远程数据请求;5、配置灵活;6、全系统的数据相容性;7、错误检测和出错信令;8、发送期间若丢失仲裁或由于出错而遭破坏的帧可自动重发送;9、暂时错误和永久性故障节点的判别以及故障节点的自动脱离。

特点及功能说明

PHLIPS公司的PCA82C200是符合CAN2.0C协议的总线控制器,SJA1000是它的替代产品,它是应用于汽车和一般工业环境的独立CAN总线控制器。具有完成CAN通信协议所要求的全部特性。经过简单总线连接的SJA1000可完成CAN总线的物理层和数据链路层的所有功能。其硬件与软件设计和PCA82C20的基本CAN模式BasicCAN兼容。同时,新增加的增强CAN模式PeliCAN还可支持CAN2.0B协议。SJA1000的主要特性如下 :1、管脚及电气特性与独立CAN总线控制器PCA82C200兼容 ;2、软件与PCA82C200兼容(缺省为基本CAN模式);3、扩展接收缓冲器(64节FIFO);4、支持CAN2.0B时支持11和29位标识符;6、位通讯速率为1Mbits/s;7、增强CAN模式(PeliCAN);8、采用24MHz时钟频率;9、支持多种微处理器接口;10、可编程CAN输出驱动配置;11、工作温度范围为-40~+125℃。

CAN控制模块的说明

接口管理逻辑
接口管理逻辑负责解释来自CPU的命令,控制CAN寄存器的寻址,向主控制器提供中断信息和状态信息。

发送缓冲器
发送缓冲器是CPU与BSP(位流处理器)之间的接口,能够存储发送到CAN网络上的完整信息。缓冲器长13个字节,由CPU写入、BSP读出。

接收缓冲器 (RXFIFO)
接收缓冲器是接收过滤器和CPU之间的接口,用来存储从CAN总线上接收的信息。接收缓冲器(RXB,13个字节)的一个窗口,可被CPU访问。CPU在此FIFO的支持下,可以在处理信息的时候接收其他信息。

接收过滤器
接收过滤器把它的数据和接收的识别码的内容相比较,决定是否接收信息。在纯粹的接收测试中,所有信息都保存在RXFIFO中。

位流处理器 (BSP)
位流处理器是在发送缓冲器、RXFIFO和CAN总线之间控制数据流的程序装置。它还执行错误检测、仲裁、总线填充和错误处理。

位时序逻辑 (BTL)
位时序逻辑监视串口的CAN总线和处理与总线有关的位时序。它在信息开头“弱势-支配”的总线传输时同步CAN总线位流 (硬同步),接收信息时再次同步下一次传送 (软同步)。BTL提供了可编程的时间段来补偿传播延迟时间、相位转换 (如由于振荡漂移)和定义采样点及每一位的采样次数。

错误管理逻辑 (EML)
EML负责传送层中调制解调器的错误管理。它接收BSP的出错报告,使BSP和IML进行错误统计。通常情况下,错误计数器计数达到255时,将关闭总线,并自动转入复位状态,并产生错误中断。经过128个周期的总线空闲后 ,重新开启总线。当错误计数器计数达到96时 (警告限制),将产生错误中断。

新增功能
前已述及SJA1000同时支持BasicCAN模式和PeliCAN模式。PeliCAN模式,将识别码从11位扩展到29位使CAN总线的节点数大大地扩大,从而使得CAN总线的适用范围更加广泛。除了扩展了识别码,PeliCAN模式还有以下扩展功能:1、可读 /写访问的错误计数器;2、可编程的错误计数器;3、最近一次错误代码寄存器;4、对每一个CAN总线错误的中断;5、具体控制为控制的仲裁丢失中断;6、单次发送 (无重发);7、只听模式 (无确认,无活动的出错标志);8、支持热插拔 (软件位速率检测);9、接受过滤器扩展 (4字节代码,4字节屏蔽);10、自身信息接收 (自接收请求)。以上扩展功能为用户更好地识别和处理发送和接收错误、更好地应用和调试CAN控制器提供了更多方便。

智能控制系统硬件电路设计

据SJA1000的功能特点以及课题的实际需要,我们选用SJA1000作为CAN控制器,并且使用了CAN控制器接口芯片PCA82C250,PCA82C250是CAN协议控制器和物理总线的接口。此器件对总线提供差动发送能力,对CAN控制器提供差动接受能力。整个系统以Intel 16位单片机80C196KC为核心。INTEL 80C196KC是INTEL公司研制的16位单片机,其封装形式采用68脚PLCC形式,内部寻址采用寄存器结构,从而避免了以往8位单片机只能用累加器参与寻址而产生的瓶颈效应,大大提高了工作效率。其内部设有256个字节的RAM,带有28个中断源,可形成16个中断矢量。在16MHz的晶振下,16乘16位的乘法只需1.75us,32除16位除法指令只需3.2us,尤其适合于高采样频率快速控制系统,它本身还带有3路PWM输出引脚,可直接驱动三相电动机,内部设有3个H窗口和1个V窗口,使特殊功能寄存器的数量和保护功能倍增,由于采用的是CMOS工艺,其功耗小,并有掉电保护和闲置功能。因此,采用INTEL公司生产的16位单片机80C196KC机作为控制系统的主控制器是十分理想的选择。SJA1000在智能控制系统中的硬件配置与CAN总线接口的电路如图 1所示。硬件电路中使用 PCA82C250的目的是为了增大通信距离,提高系统的瞬间抗干扰能力,保护总线,降低射频干扰,实现热防护等。

SJA1000在电路中是一个总线接口芯片,实现从上位机PC-CAN接口到现场微处理器之间的数据通信。对于微处理器而言,SJA1000是一个总线接口,SJA1000片内的存储单元相对80C196KC来说是片外的数据存储器。因此,可以按照扩展片外数据存储器的形式来访问SJA1000的寄存器地址,80C196KC是CAN控制器的微处理器,把80C196KC的ALE、RD、WR和 SJA1000的ALE、RD、WR相连就构成一个最小系统节点。

80C196KC通过地址总线经GAL译码来选通 SJA1000,并由此决定CAN控制器各寄存器的地址,通过读、写外部数据存储器的形式来访问 SJA1000。在系统中我们将SJA1000的TX1脚悬空,RX1引脚接地,形成CAN协议所要求的电平逻辑。该电路的主要功能就是通过CAN总线接收来自上位机的数据进行分析组态,然后下传给下位机的控制电路实现控制功能,当智能控制系统接收到下位机的上传数据,SJA1000的中断输出INT脚就会被激活,出现一个由高电平到低电平的跃变,产生一个中断,从而引发微处理器80C196KC产生中断,通过中断处理程序接收每一帧信息并通过CAN总线上传给上位机进行分析,以便及时纠正误码、错码。

在进行电路设计时应当注意:为进一步提高系统抗干扰能力,在CAN控制器SJA1000和CAN控制器接口82C250之间加接6N137光电隔离芯片,并采用DC-DC变换器隔离电源;通信信号传输到导线的端点时会发生反射,反射信号会干扰正常信号的传输,因而总线两端那两个124Ω的电阻,对匹配总线阻抗起着相当重要的作用。忽略掉它们,会使数据通信的抗干扰性和可靠性大大降低,甚至无法通信;82C250第8脚与地之间的电阻RS称为斜率电阻,它的取值决定了系统处于高速工作方式还是斜率控制方式。把该引脚直接与地相连,系统将处于高速工作方式。在这种方式下,为避免射频干扰,建议使用屏蔽电缆作总线;而在波特率较低、总线较短时,一般采用斜率控制方式,上升和下降的斜率取决于RS的阻值。通常情况下,15KΩ~200KΩ为RS较理想的取值范围。在这一种方式下,可以使用平行线或双绞线作总线。


系统软件设计

系统软件设计的指导思想是系统上电后首先对80C196KC和SJA1000进行初始化,以确定工作主频、波特率、输出特性等,然后通过查询方式获取模数转换采样值,并把该值通过SJA1000传送到CAN总线上由上位PC机进行显示控制,而对CAN总线上来的信息则采用中断方式,系统每接收到一帧信息,便产生一次中断以触发微处理器进入中断,在中断服务程序中读取该帧信息并传送到现场。为防止出现死机和干扰,程序中还采用看门狗技术进行定时监控。对CAN总线的初始化设计,对于编程人员来说是重点又是难点,必需对写入的每一个寄存器进行仔细和全面的考虑。如果CAN总线的初始化工作没有做好,系统将无法正常工作。假设SJA1000的首址是A000H,用汇编语言编制的SJA1000的初始化程序如下:

CR   EQU  A 0 0 0H   ;控制寄存器
CMR  EQU  A 0 0 1H   ;命令寄存器
SR   EQU  A 0 0 2H   ;状态寄存器
IR   EQU  A 0 0 3H   ;中断寄存器
ACR  EQU  A 0 0 4H   ;验收码寄存器
AMR  EQU  A 0 0 5H   ;验收屏蔽寄存器
BTR0  EQU  A 0 0 6H  ;总线定时寄存器 0
BTR1  EQU  A 0 0 7H  ;总线定时寄存器 1
OCR  EQU  A 0 0 8H   ;输出控制寄存器
DI
LDB CL , # 03H
STB CL ,CR    ;开放接收中断,复位请求位置1,以开始初始化。
LDB CL , # 01H  
STB CL ,ACR   ;将节点1标识符送ACR
LDB CL , # 0FEH 
STB CL ,AMR   ;验收滤波
LDB CL , # 0 0H 
STB CL ,BTR ;传送波特率为250kbps
LDB CL , # 1 4H   
STB CL ,BTR1  ;定义位周期宽度 ,采样点位置及采样次数选
LDB CL , # 0AAH 
STB CL ,OCH   ;选择正常输出方式 ,建立输出驱动器的配置。
LDB CL , # 1AH
STB CL ,CR    ;复位请求位置0,初始化结束
EI

从上面的初始化程序不难看出,对CAN控制器进行初始化,实际上就是对ACR、AMR、BTR0、BTR1、OCR这些寄存器进行访问。在这里需要明确的是,只有当控制寄存器CR4中的复位请求位为高时,访问才被允许,否则既写不进去,也读不出正确的内容。对CR进行第一次写操作,要设定将要开放的中断类型,并置位复位请求,允许初始化开始。对ACR、AMR进行写操作,要界定对什么样的报文予以接收,因此有时称它们为验收滤波器。当满足以下两个条件之一,并存在空的接收缓存器(RBF)时,完整报文可被正确接收。
条件之一 :ACR与报文标识符的高 8位在AMR为“0”的那些位(即相关位)上对应相等。
条件之二 :AMR=0FFH,即ACR的所有位均为不相关(或屏蔽)位。
这两个寄存器也是编排标识符的基本依据。

对BTR0进行操作,可决定波特率预分频器 (BRP)和同步跳转宽度(SJW)的数值;对BTR1进行写操作,可决定位周期的宽度,采样点的位置及在每个采样点进行采样的次数。这两个寄存器的内容,可唯一确定波特率及同步跳转宽度。例如:程序中BTR0 =00H ,BTR1=14H ,晶振频率为16MHz时,采样时钟周期tSCL等于两倍的振荡器时钟周期。波特率刚好为1Mbps,同步跳转宽度为一个tSCL。两个寄存器各位功能和相关计算公式见参考文献 。在编写程序时,我们还需特别引起注意的就是一个系统中的所有节点BTR0和BTR1的内容都应相同,否则控制系统将无法和上位机进行通信。对OCR进行写操作,可确定CAN控制器的输出方式,并建立起CAN总线要求的电平逻辑所需输出驱动器的配置。对CR进行第二次操作主要是清复位请求位,使SJA1000返回正常运行状态。成功地初始化SJA1000后,系统就可以应用它来传输报文。数据传输的程序不难编写 ,但有些细节处理不好 ,系统工作起来还是经常发生问题。通过反复调试我们已把通信部分的程序做成了模块 , 在我校研制的远洋船舶轮机模拟器的智能化分布式输入输出系统下位机箱接口控制系统中,运行的相当好,并且取得了预期的效果。鉴于篇幅 ,下面仅给出系统总体程序框图(图2)及中断服务程序框图(图 3)。



结论

实践表明,SJA1000是一种较好的CAN总线控制器件,它的抗干扰性能优良,通信速率较高,电路也比较简单。在PeliCAN模式下,其识别码达29位,因而可满足各种应用场合。在自动化控制系统中,合理安排这29位识别码可以使许多问题得以简化。PeliCAN模式增加的各种功能,如:各种错误处理功能大大地提高了用户程序处理各种通信错误的能力;支持热插拔和自身信息接收功能,使用户不必事先知道予设的波特率,从而大大地方便了通信的调试。本文是作者在阅读了大量的有关CAN总线资料后进行实际CAN总线的应用开发研究工作时的一些心得,同时也希望现场总线技术能够在自动化领域中应用的更加广泛。

相关推荐

针对PCB设计挑战 Mentor阐述3D PCB系统设计技术

PCB  系统设计  2013-07-08

NI成功举办第七届高校教师交流会

NI  测试测量  系统设计  2011-07-29

安富利全球"ARM系统设计策略"研讨会亚洲之旅将启动

ARM  系统设计  2011-05-13

一种 2-1-1 型 MASH ∑ - △调制器的系统设计

智能控制技术在无刷直流电机控制系统中的应用

兼容标准的高功率PoE系统设计

兼容标准  高功率  PoE  系统设计  2009-04-28
在线研讨会
焦点