CAN总线分布式系统适配卡和控制单元设计

2006-05-07 15:50:07来源: 互联网

总线分布式系统中适配卡和控制单元的硬件组成及软件的设计方法,给出硬件原理图;详细分析SJA1000的初始化方法、验收滤波器的原理和使用方法、通信程序的设计,并给出CAN通信中断服务程序和初始化程序流程图。

1 CAN总线分布式系统的结构

系统结构如图1所示。本系统由上位监控计算机、CAN总线适配卡和控制单元三部分构成。其中上位监控计算机采用IBM-PC兼容机,主要负责对系统数据的接收与管理、控制命令的发送以及各控制单元动态参数和设备状态实时显示。控制单元以单片机为核心,主要负责对现场环境参数和设备状态进行检测,对采集来的数据进行处理,并对SJA1000进行操作和控制。CAN总线适配卡,可使PC机方便地连接到CAN总线上。它内嵌微处理器、CAN总线控制器、CAN总线收发器和双口RAM。双口RAM作为PC机与CAN总线适配卡的数据共享区,通过设备将其映射成PC机的物理内存,实现CAN与PC机的高速数据交换。CAN总线适配卡上带有光电隔离,可增强系统在恶劣环境中的抗干扰能力。总线两端各有1个电阻R(约120Ω)起总线阻抗匹配作用。

2 CAN适配卡的设计

2.1 硬件设计

    CAN适配卡的硬件组成框图如图2所示,由ISA接口、双口RAM、CPU、CAN通信控制器SJA1000、CAN总线接口82C250等组成。由于带有片上CAN控制器的单片机都含较多的I/O线、定时/计数器、A/D等功能,往往较复杂,因此微处理器使用价廉的AT89C51单片机。为了进一步提高抗干扰措施,在2个CAN器件之间使用了由高速隔离器件6N137构成的隔离电路。光耦两侧应采用DC-DC隔离电源。硬件电路中使用82C250的目的是为了增大通信距离。要实现PC机和CAN控制器之间的数据传送,必须在PC机和适配卡上的MPU之间建立起双向的数据交换通道。通过ISA总线实现单片机系统与主机之间的数据交换有多种实现方法。本适配卡采用集成双口RAM实现数据交换。由于CAN信号传输采用短帧结构(8字节数据),双口RAM的容量要求并不大,本卡选用2K×8位的带中断请求信号INT和忙信号BUSY的IDT7132。具体的连接电路如图3、图4所示。上位PC机对双口RAM的寻址方式采用I/O寻址方式,使用的控制线为IOW和IOR。为避免产生读写错误,使用双口RAM的关键是处理好争用现象。IDT7132提供了中断判优和硬件判优两种方式。当两端口争用同一地址单元时,由片内硬件电路,根据两边的地址、片选、读写信号到达先后顺序,裁决哪个端口有使用权。如左端口优先使用,则自动将右端口的BUSYR信号拉为低电平,通知右侧暂停读写操作。在本适配卡中,由于8031没有READY信号,可以将此信号接至8031的P1.0上。当8031发出读写IDT7132命令时,根据P1.0口的值就可判断对IDT7132读写是否存在冲突。当P1.0的值为0时,存在冲突,必须重发读写IDT7132的命令。由于ISA总线既没有READY信号,也没有通用的I/O引脚,因此将BUSYL信号通过三态门接至ISA数据线的最低位D0。用ISA总线的一个空闲I/O端口打开三态门,通过D0读取BUSYL的状态。

    SJA1000为CAN总线微控制器,是PHILIPS公司的PCA82C200的替代产品,可完成CAN总线的物理层和数据链路层的所有功能。SJA1000内部RAM由寄存器组和报文缓冲区组成。发送缓冲区和接收缓冲区共用同一段CAN地址16H~18H,共3个单元,能存储一条将在CAN总线上发送或接收的完整的报文。具有64字节扩展接收缓冲器RXFIFO,其CAN地址为32H~95H(地址为96H~109H的区域是存放发送信息的备份),有了64字节的REFIFO,CPU可以在处理一个报文的同时继续接收其他到来的报文;具有接收滤波器,它把报文头中的标识符(ID)和验收码寄存器中的内容进行比较,以判断该报文是否被接收。如果被接收,报文存入RXFIFO。CAN信息帧格式及单滤波方式的验收滤波器流程图如图5所示。

    格式信息内容如下:

FF RTR X X DLC.3 DLC.2 DLC.1 DLC.0

FF=1,本帧为标准帧;FF=0,本帧为扩展帧。RTR=1,为远程帧;RTR=0,为数据帧。DLC.3~DLC.0表示数据字节的长度,最大值为8。验收滤波原理:初始化时将标识符ID写入验收码寄存器ACR中,验收屏蔽寄存器AMR为0的位,ACR和CAN信息帧的对应位必须相等才算验收通过,AMR为1的位,CAN信息帧的对应位不验收。验收时对于标准帧;11位标识符和RTR对应ACR0的8位和ACR1的高4位。对于扩展帧:29位标识符和RTR对应4个ACR,只是ACR3和AMR3的低2位未用。MAX813组成硬件复位及看门狗电路。

    2.2 软件设计

适配卡主要承担上位计算机和CAN节点之间的数据转发任务,其软件设计包括两部分。一是PC机端的应用程序接口(API)函数,采用可视化的编程工具Builder C++编写,主要包括按CAN报文格式向适配卡上双口RAM写入控制命令、请求控制单元发送数据命令。在双口RAM引起的中断服务程序中,读取双口RAM中由AT89C51转发的控制单元发送的数据并进行处理。双口RAM向PC机发出的中断请求INTL,是由单片机将接收的数据写入双口RAM后再写双口RAM片内地址为7FEH单元触发的。二适配卡上单片机端的程序设计,采用汇编发的。二是适配卡上单片机端的程序设计,采用汇编语言编写,分为主程序、INT0和INT1中断服务程序。主程序主要完成对SJA1000的初始化。SJA1000的初始化是通过在复位期间对模式寄存器MOD(CAN地址为0,滤波和复位等方式选择)、时钟分配寄存器CDR(CAN地址为31H,选择PeliCAN模式及时钟输出频率)、滤波码寄存器ACR0~ACR3(复位模式CAN地址为16H~18H,初始化时写入ID标识符)、验收屏蔽寄存器AMR0~AMR3(复位模式CAN地址为20H~23H,初始化时设置是否屏蔽ACR相应位)、总线定时寄存器BTR0(CAN地址为06H,设置波特率和同步跳转宽度)和BTR1(CAN地址为07H,定义每个位周期长度、采样位置和每个采样点的采样数目)、输出控制寄存器OCR(CAN地址为08H,选择正常输出控制模式)等写入控制字来确定其工作方式的。INT1中断请求是由PC机将数据写入双口RAM后再写双口RAM片内地址为7FFH单元触发的。在INT12中断服务程序中,首先读取双口RAM中的数据,然后再将数据转发给CAN控制器SJA1000,具体参见流程图6。INT0中断请求是由SJA1000发送或接收完1帧信息或接收数据超载或产生错误中断后产生的。INT0中断服务程序流程如图7所示。

3 控制单元设计

控制单元的任务就是对现场环境参数进行采集并从CAN总线上接收上位机的命令。根据上位机的要求,对设备进行控制或将采集的数据通过CAN总线传给上位机。现以温室控制单元为例说明控制单元设计方法。温室控制单元的结构原理如图8所示。以AT89C52为核心,采用2片8255扩展I/O端口,其中2个PA口和1个PB口用来检测天窗、遮阳伞、补光灯、通风机等21路开关量的状态。由于8255的PC口的各位通过置复位控制字可以单独置位或复位,AT89C52的P1口可以按位寻址,所以用8255的2个PC口和AP89C52的P1口来控制继电器的吸合。3片8位A/D转换器ADC0809实现对温度、湿度、pH值、CO2浓度、光照强度、液位等20路模拟量的数据采集。

    控制单元的控制软件采用汇编语言编程,主要包括初始化、数据采集、数据通信、I/O接口控制等功能。初始化包括对8255和SJA1000的初始化,使8255的PA、PB口作为输入口,PC口各位通过置复位控制字可以单独置位或复位,从而开启或停止一个继电器的动作。数据采集采用查询方式工作,每一路模拟量连续采集3次,中值滤波后作为该传感器的数据存入相应的内部RAM中,全部数据采集完后再检测开关状态并存入相应RAM中。随后开CPU中断,进入数据循环采集状态,等待CAN通信中断的产生。本系统采用中断方式实现AT89C52与SJA1000之间的通信。

    需要说明的是,CAN2.0A或CAN 2.0B协议只是一个低层的规范,用户还需要定制简单的应用层协议。应用层协议的任务一方面是将要发送的数据分类、拆卸、合并,确定发送对象,再根据CAN的数据链路层协议规范填写CAN的各个信息帧;另一方面是根据应用层协议解释接收数据的具体含义,并进行相应的处理。

关键字:can总线  分布  分布式  分布式系统

编辑: 引用地址:http://www.eeworld.com.cn/wltx/qtjs/200605/2856.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
can总线
分布
分布式
分布式系统

小广播

独家专题更多

富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
走,跟Molex一起去看《中国电子消费品趋势》!
走,跟Molex一起去看《中国电子消费品趋势》!
 
带你走进LED王国——Microchip LED应用专题
带你走进LED王国——Microchip LED应用专题
 
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved