摘要:本文介绍了一种新型的现场总线控制器SJA1000的基本原理结构及功能特点,重点叙述了基于CAN控制器SJA1000的智能控制系统硬件电路及软件设计,给出了初始化程序。
SJA1000的特点及功能
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模式增加的各种功能,如:各种错误处理功能大大地提高了用户程序处理各种通信错误的能力;支持热插拔和自身信息接收功能,使用户不必事先知道预设的波特率,从而大大地方便了通信的调试。
- 系统设计(21466)
相关推荐
基于MCP2515的多路CAN总线接口电路设计
4751
CAN总线通信系统的研究与设计
5734
基于VxWorks操作系统实现PC/104-CAN适配卡的驱动系统设计
3272
基于SJA1000的完整CAN节点设计
8224
CAN控制器SJA1000及其应用
CAN控制器SJA1000片选基址怎么确定?
CAN控制器和收发器的相关资料推荐
CAN总线控制器与DSP的接口
CAN总线基础知识大合集
CAN总线应用sja1000 首发数据。
CAN通信控制器程序框架与实现
SJA1000PeliCAN模式下自收发问题
SJA1000PeliCAN模式下自收发问题
SJA1000CAN通信控制器作用
C8051F020型单片机与SJA1000型控制器接口电路
Small RTOS 下SJA1000驱动程序的编写
一种基于DSP与SJA1000的CAN总线系统设计介绍
一种基于FPGA的飞行模拟器通信接口设计流程介绍
关于FPGA如何连接CAN收发器?
基于CAN总线的温度测量节点设计
基于FPGA的CAN总线通信系统
多个智能仪表的CAN接口设计
如何用CH368驱动SJA1000 can总线板卡?
如何设计一种具有CAN总线接口的24位称重数据采集系统?
如何设计基于FPGA的CAN总线控制器SJA1000软核?
嵌入式系统的CAN总线设计
怎样去解决ARM读写sja1000的问题呢?
急求关于SJA1000中断INT引脚问题
采用8位单片机的CAN系统解决方案
采用P89C668单片机实现CAN总线接口设计
采用Infinenon C166系列单片机的CAN系统解决方
19基于SJA1000 的CAN 总线系统智能节点设计
52SJA1000 在CAN 总线系统节点的应用
62CAN总线在分布式烤烟控制系统中的应用
12SJA1000在数据采集与控制系统中的应用
54SJA1000,CAN控制器性能典型应用电路的介绍以及基于S
113SJA1000,中文资料,pdf datasheet(独立控
482基于单片机和CAN控制器的嵌入式系统
17SJA1000独立的CAN控制器应用指南
102SJA1000 Stand-alone CAN contro
37基于CAN总线智能节点设计
51SJA1000控制器在多电机综合保护器中的应用
45CAN总线 RS232接口的软件设计
106基于ADμC812的CAN总线智能节点的设计
949
CAN总线在机车监控系统中的应用
1005
CAN总线在机车监控系统中的应用
913
SHARC DSP与SJA1000的CAN总线接口设计
1310
SJA1000控制器在多电机综合保护器中的应用
1002
基于CPLD的电池管理系统双CAN控制器的设计
816
基于LPC2119的自动化控制系统中CAN节点解决方案
75CAN总线PC适配卡设计
1938
基于AT89C51的CAN总线智能节点设计
8509
基于CAN总线的智能节点设计
120CAN总线控制器SJA1000中文资料
41基于DSP与SJA1000的CAN总线系统设计方案
12DSP与CAN控制器SJA1000的总线接口的差别
5CAN集散式电源控制系统通信实现设计
910
基于AT89C51单片机和CAN总线控制器SJA1000设计中央空调控制系统
2881
SJA1000独立CAN控制器的详细数据手册和应用资料免费下载
36CAN控制器SJA1000的硬件结构和验收滤波器的原理与应用资料说明
21SJA1000独立CAN控制器的用户手册免费下载
11英创信息技术SJA1000的CAN通讯接口函数介绍
2251SJA1000独立CAN控制器的应用指南资料免费下载
35SJA1000独立控制器的数据手册免费下载
10采用CAN总线控制器SJA1000实现控制电路接口的设计
6646
基于Lenze9326变频器和SJA1000芯片实现多台异步电机协调控制的设计
1424
利用TL16C554和SJA1000芯片实现4路UART总线与CAN总线的通讯设计
3542
基于CAN控制器SJA1000实现非智能适配卡的设计
1382
基于FPGA的VHDL语言设计控制器SJA1000的IP软核设计
2712
sja1000引脚和功能
18051
基于单片机、SJA1000和总线技术实现装备器材库监控系统的设计
1911
基于51单片机SJA1000 CAN通讯实现(代码+原理图)
63CAN控制器和收发器
27CAN总线节点的两种硬件构成方案
1224SJA1000独立CAN控制器中文手册
2
电子发烧友App



评论