基于AT89C51和SJA1000控制器实现CAN总线接口_第1页
基于AT89C51和SJA1000控制器实现CAN总线接口_第2页
基于AT89C51和SJA1000控制器实现CAN总线接口_第3页
基于AT89C51和SJA1000控制器实现CAN总线接口_第4页
基于AT89C51和SJA1000控制器实现CAN总线接口_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于AT89C51和SJA1000控制器实现CAN总线接口 Realization of CAN Bus Interface Based on AT89C51and SJA1000Controller吴繁红(江阴职业技术学院电子信息工程系 江苏江阴214433摘 要 以单片机AT89C51和SJA1000控制器为核心组成了CAN总线接口模块。介绍了硬件原理图和SJA1000的初始化、发送和接收模块程序的设计方法。关键词:CAN总线,AT89C51,SJA1000Abstract In this paper,the module of CAN bus interface is mainly ma

2、de up of M CU AT89C51and SJA1000controller.The hardw are principle and the programming methods for initia-lization,transmitting and receiving modules of SJA1000are introduced.Keywords:CAN bus,AT89C51,SJA10001 引 言CAN总线是控制器局域网总线(Controller Area Netw ork的简称。属于现场总线的范畴,是一种有效支持分布式控制或实时控制的串行通信网络。由于其高性能、高可靠

3、性及独立的设计而被广泛应用于工业现场控制系统中。SJA1000是一个独立的CAN控制器,与PCA82C200的硬件和软件都兼容,具有一系列先进的性能,特别在系统优化、诊断和维护方面,因此, SJA1000将会替代PCA82C200。SJA1000支持直接连接到两个著名的微型控制器系列80C51和68XX。开发CAN总线模块综合了基于模拟量的输入/输出、开关量输入/输出、I/O端口设计、数据接收/发送等。下面以单片机AT89C51和SJA1000为例,介绍CAN总线模块的硬件设计和CAN通信软件的基本设计方法。2 SJA1000内部结构和功能简介SJA1000是一个独立的控制器,有两种不同的模式

4、。(1BasicCAN模式:系统上电后默认的模式,与PCA82C200兼容。(2PeliCAN模式:支持CAN2.0B 协议规定的所有功能。SJA1000的内部结构如图1所示,其功能模块主要有:接口管理逻辑、接收FIFO队列、接收滤波器、发送缓冲器和CAN核心模块。CAN 核心模块基于CAN2.0B的协议执行对CAN帧的发送和接收。逻辑管理接口实现与外部单片机的连接。SJA1000的发送缓冲器可以存储一个完整的报文,当单片机开始一个传送时,逻辑管理接口会使CAN核心模块读发送缓冲器的数据,依照CAN2.0B协议发送数据。当收到一个报文时,CAN核心控制模块将连续的位转换为标准的数据存放于接收过

5、滤器中,通过验收码寄存器、验收屏蔽寄存器进行过滤处理,将符合标志位要求的数据放入接收FIFO 队列中。图1 CAN内部结构3 硬件设计原理框图CAN总线接口的原理框图如图2所示。SJA1000的地址/数据复用总线同AT89C51的P0口相连, M ODE引脚接高电平时选择Intel模式,AT89C51的时钟信号由CLKOUT提供。为了提高总线的驱动能力,在SJA1000与CAN总线之间加PCA82C25总线驱动芯片,82C25是SJA1000与物理总线间的接口。对模拟信号的采样用AD7715,该器件有一个差分模拟输入端口,能直接接收来自传感器的弱电平信号并输出连续的数字信号。它运用 - 转换技

6、术实现了无损编码。AD7715串行接口包括CS、SCLK、DIN、DOUT和DRDY。在串行时钟信号控制下,数据可以从DIN、DOUT与AT89C51进行串行数据通信。AT89C51的P1口通过驱动电路接执行机构。为了防止单片机因外界干扰而导致系统不能正常工作,在模块中加入了复位芯片X5045P,该芯片集成了看门狗、电压检测和4K的E2PROM3种功能。SJA1000的T X1脚悬空,RX1引脚电位必须为0.5VCC,否则不51电子工程师 电子技术应用 Vol.29No.7 2003 收稿日期:2003-05-08能形成CAN 协议所要求的逻辑电平。图2 CAN 总线接口原理图4 C AN 通

7、信软件的设计思想软件设计主要根据系统的工作要求,分为CAN 总线通信程序、看门狗的初始化程序、A/D 采样控制程序、执行机构控制程序和控制算法程序等。这里讨论CAN 通信软件的设计,主要包括SJA1000初始化程序设计、发送程序设计和接收程序设计。4.1 SJA1000初始化程序设计AT89C51上电或复位后,调用复位程序给SJA1000的复位端RST 提供复位信号,使SJA1000进入复位模式,SJA1000的初始化只有在复位模式下才可以进行,程序框图如图3所示。初始化程序主要包图3 初始化程序括以下寄存器的设计:(1通过时钟分频寄存器定义:是使用Bas -icCAN 模式还是PeliCAN

8、 模式;是否使能CLKOUT 及输出时钟频率;是否旁路CAN 输入比较器;TX1输出是否用专门的接收中断输出。(2通过验收码寄存器和验收屏蔽寄存器定义接收报文的验收码和对报文和验收码进行比较的相关位定义验收屏蔽码。(3通过总线定时寄存器定义总线的位速率、位周期内的采样点和一个位周期内的采样数量。(4通过输出寄存器定义CAN 总线输出管脚T X0、TX1的输出模式和输出配置。最后,要清除SJA1000的复位请求标志进入工作模式,SJA1000方可进行报文的发送和接收。4.2 发送程序的设计单片机将要发送的报文送到SJA1000发送缓冲区,然后将SJA1000命令寄存器的发送请求标志位(TR置位,

9、发送过程由SJA1000独立完成。在新报文写入发送缓冲区之前,必须先检查状态寄存器的发送缓冲器状态标志(TBS,若为 1 ,发送缓冲器被释放,可将新的报文写入发送缓冲器,否则,发送缓冲器被锁定,新的报文不能被写入。发送程序可采用中断方式和查询方式,查询方式的程序框图如图4 所示。图4 发送程序框图 图5 中断接收框图4.3 接收程序的设计报文的接收也是由SJA1000独立完成。收到的报文通过接收滤波器放在FIFO 队列中,第1条报文进入接收缓冲器,由状态寄存器的接收缓冲器状态标志位(RBS和接收中断标志位(RI标出。单片机从接收缓冲器取走1条报文后,通过置位SJA1000的命令寄存器的释放接收

10、缓冲器的标志位(RRB来释放接收缓冲器。接收程序的设计也有中断方式和查询方式,中断方式的程序框图如图5所示。这时,在主程序中必须使SJA1000的中断使能寄存器(PeliCAN 模式或控制寄存器(BasicCAN 模式的中断接收使能位(RIE置 1 。需要指出的是:当释放接收缓冲器后,接收中断标志将被清除,队列中的下一条报文进入接收缓冲器并将会产生新的中断。5 结束语将本方法应用于化工自动化生产系统角执行器的流量控制中,提高了生产的安全性和系统运行的可靠性。有关SJA1000内部各寄存器的地址和功能、报文的格式、验收滤波器的设定及错误分析处理等,请参阅网站:http:/w w w.zlg .参 考 文 献1 张培仁,孙占

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论