综合资讯 在线阅读 原文阅读 在线商城 下载专区 DATASHEET 技术论坛 商务频道

嵌入式系统  单片机  D S P  EDA/PLD  接口电路  存储技术  显示光电  电源技术
传感/控制  模拟技术  通信网络  无线通信  电测仪表  消费电子  汽车电子

所在的位置:首页技术文章通信网络正文
 
CAN总线分布式系统适配卡和控制单元设计
发布日期:2005-12-24 作者:高玉芹 来源:单片机与嵌入式系统应用

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

    关键词:CAN总线 适配卡 控制单元 SJA1000 双口RAM

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的各个信息帧;另一方面是根据应用层协议解释接收数据的具体含义,并进行相应的处理。

 (全文结束)

信息发布:   转引自: 【 】 【打印】 【关闭
 相 关 文 章
SJA1000在CAN总线系统节点的应用 (12-24)
增强型并行口EPP协议及其在CAN监控节点中的应用 (12-01)
基于CAN总线的数据采集模块设计 (11-13)
基于CAN总线的分布式控制网络智能节点设计 (11-10)
CAN总线节点电路的设计与实现 (05-28)
USB 2.0 高速主机适配卡的设计 (03-01)
MCP2515在CAN总线系统智能节点的应用 (09-28)
CAN总线技术在智能汽车系统中的应用 (09-28)
一种具有双CANBUS接口的通用多功能DI模块设计和应用 (01-20)
SHARC DSP与SJA1000的CAN总线接口设计 (07-25)
发电机状态监测仪中CAN适配卡的设计方案 (12-27)
CAN总线控制器与DSP的接口 (03-10)
CAN总线在机车监控系统中的应用 (04-06)
分布式蓄电池智能节点设计 (05-02)
eCAN模块与SJA1000的应用比较 (06-16)
基于CAN总线的监控系统设计 (09-28)
基于CAN总线的数字式传感器群管理系统 (10-11)
单线CAN总线收发器芯片AU5790 (12-20)
基于CAN总线的智能寻位制造系统 (12-24)
基于CAN总线的家庭控制器的设计与实现 (12-27)
基于CAN总线的分布式铝电解控制系统 (01-17)
基于CAN总线的客房通信控制器的设计 (11-15)
基于CAN总线的智能接口卡的设计 (11-04)
基于CAN总线的分布式三维步进电机控制系统 (10-03)
基于CCP协议利用CANape进行电控单元标定 (01-21)
基于CAN总线的分布式潜水电机监控系统 (10-27)
基于软PLC和CAN总线的自动定量包装机控制方案 (10-27)
基于PC/104的电液伺服机构与CAN总线接口设计 (09-28)
关于我们 ┋ 友情链接


深圳市福田区海滨广场恒福花园恒华阁11F
电话:0755-88305872 传真:0755-88305880
Copyright©2005-2007 无忧电子开发网版权所有

粤ICP备05064233号