SJA1000是一种应用于汽车和一般工业环境的独立CAN总线控制器,经过简单总线连接可完成CAN总线的物理层和数据链路层的所有功能。其硬件与软件设计和PCA82C200的基本CAN模式BasicCAN兼容。同时,新增加的增强CAN模式PeliCAN还可支持CAN2.0B协议。SJA1000的主要特性如下 :1、管脚及电气特性与独立CAN总线控制器PCA82C200兼容 ;2、软件与PCA82C200兼容(缺省为基本CAN模式);3、扩展接收缓冲器(64字节FIFO);4、支持CAN2.0B时支持11和29位标识符;5、位通讯速率为1Mbits/s;6、增强CAN模式(PeliCAN);7、采用24MHz时钟频率;8、支持多种微处理器接口;9、可编程CAN输出驱动配置;10、工作温度范围为-40~+125℃。
CAN控制模块构成
CAN控制模块由接口管理逻辑、发送缓冲器、接收缓冲器(RXFIFO)、接收过滤器、位流处理器 (BSP)、位时序逻辑 (BTL)和错误管理逻辑(EML)组成。
图1 智能控制系统硬件原理图
新增功能
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采用68脚PLCC封装形式,内部寻址采用寄存器结构,从而避免了以往8位单片机只能用累加器参与寻址而产生的瓶颈效应,大大提高了工作效率。其内部设有256个字节的RAM,带有28个中断源,可形成16个中断矢量。在16MHz的晶振下,16乘16位的乘法只需1.75ms,32除16位除法指令只需3.2ms,尤其适合于高采样频率快速控制系统,它本身还带有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变换器隔离电源;通信信号传输到导线的端点时会发生反射,反射信号会干扰正常信号的传输,因而总线两端两个124W的电阻对匹配总线阻抗起着相当重要的作用,忽略掉它们,会使数据通信的抗干扰性和可靠性大大降低,甚至无法通信;82C250第8脚与地之间的电阻RS称为斜率电阻,它的取值决定了系统处于高速工作方式还是斜率控制方式。把该引脚直接与地相连,系统将处于高速工作方式。在这种方式下,为避免射频干扰,建议使用屏蔽电缆作总线;而在波特率较低、总线较短时,一般采用斜率控制方式,上升和下降的斜率取决于RS的阻值。通常情况下,15KW~200KW为RS较理想的取值范围。在这种方式下,可以使用平行线或双绞线作总线。
系统软件设计
系统软件设计的指导思想是系统上电后首先对80C196KC和SJA1000进行初始化,以确定工作主频、波特率、输出特性等,然后通过查询方式获取模数转换采样值,并把该值通过SJA1000传送到CAN总线上由上位PC机进行显示控制,而对CAN总线上来的信息则采用中断方式,系统每接收到一帧信息,便产生一次中断以触发微处理器进入中断,在中断服务程序中读取该帧信息并传送到现场。为防止出现死机和干扰,程序中还采用看门狗技术进行定时监控。以下CAN总线的初始化设计,假设SJA1000的首址是A000H:
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 ,BTR0 ;传送波特率为
250kbps
LDB CL , # 1 4H
STB CL ,BTR1 ;定义位周期宽度 ,
采样点位置及采样次数选
LDB CL , # 0AAH
STB CL ,OCR ;选择正常输出方式
,建立输出驱动器的配置。
LDB CL, # 1AH
STB CL,CR ;复位请求位置0,初
始化结束
EI
对CAN控制器进行初始化,实际上就是对ACR、AMR、BTR0、BTR1、OCR这些寄存器进行访问。只有当控制寄存器CR中的复位请求位为高时,访问才被允许,否则既写不进去,也读不出正确的内容。对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后,系统就可以应用它来传输报文。系统总体程序框图及中断服务程序框图见本刊网站。
结语
实践表明,SJA1000是一种较好的CAN总线控制器件,在PeliCAN模式下,其识别码达29位,因而可满足各种应用场合。在自动化控制系统中,合理安排这29位识别码可以使许多问题得以简化。此外PeliCAN模式增加的各种功能,如:各种错误处理功能大大地提高了用户程序处理各种通信错误的能力;支持热插拔和自身信息接收功能,使用户不必事先知道预设的波特率,从而大大地方便了通信的调试。
上一篇:基于虚拟仪器的CANopen协议监控面板设计
下一篇:四轮独立驱动电动车高速CAN网络数据分析技术
推荐阅读最新更新时间:2024-05-03 00:25