CAN/RS 232接口卡的设计与实现

发布者:MindfulCreator最新更新时间:2014-03-14 来源: ofweek关键字:CAN  RS232  接口卡 手机看文章 扫描二维码
随时随地手机看文章

  控制器局域网(Controller Area Network,CAN)属于现场总线的范畴,其总线规范已被ISO国际标准化组织制定为国际标准,并被公认为是最有前途的现场总线之一。CAN总线广泛应用于控制系统中的各检测和执行机构之间的数据通信。因为CAN总线数据的传输和处理都由节点的单片机完成。这样就使设计者和观察者没有办法以比较直观的方式掌握总线的运行情况。现在市场上主要有两种CAN的接口卡,使用PCI总线和使用USB接口。前者具有传输速度快的特点,但却要占用一个计算机的插槽,并且设计上十分困难;后者的传输速度也很快,且价格较便宜,但要花费很大的精力进行USB的固件开发和维护,并要编写复杂的驱动程序。根据此,需要设计一种能够方便读取CAN总线数据,并通过RS 232串行口将数据送给PC机处理和显示的接口卡;此外还需对其串行传输的协议进行加强,以使能有效地降低传输过程中出现的错误。

  1 接口卡的硬件设计

  硬件部分主要包括主控制器、CAN总线控制器、CAN总线收发器以及与计算机的RS 232通信接口芯片等。系统的总体结构如图1所示。主控制器通过CAN总线接口接收和缓存数据。根据PC机的命令进行选择性的数据传输。

  1.1 与CAN总线接口

  如图2所示,接口卡的控制器选用Atmel公司的AT89S51,该单片机的引脚和功能与8051兼容,并且内部含有4 KB的FLASH ROM,支持在系统编程(ISP),这样可以很方便地将应用程序下载到单片机里。

  CAN总线控制器选用Philips公司生产的SJA1000,该芯片是PCA82C200CAN控制器的替代品,而且新增加了一种PeliCAN工作模式,能够支持CAN 2.0B协议。它还支持错误中断、报警限制、验收滤波器扩展和自接收请求等功能。在系统中,将SJA1000的中断输出引脚INT接到单片机的中断输入引脚,这样可以在接收数据或者总线错误时产生中断,由控制器进行相应的处理。SJA1000的片选CS端接单片机的P2.7引脚,这样SJA1000的地址就确定为7F00H~7FFFH。[page]

  选用芯片82C250作为CAN控制器和物理总线间的驱动接口,可以提供对总线的差动发送能力和对CAN控制器的差动接收能力,其最高速可达1 Mb/s。由于实际系统中存在干扰,故增加高速光隔6N137,以起到隔离的作用。电气接口很简单,有CANH和CANL两根线,用以完成CAN的数据传输。在CAN总线的两端有一个120Ω的电阻,其作用为匹配总线阻抗,用于提高数据通信的抗干扰性及可靠性。具体电路如图2所示。

  1.2 与RS 232接口

  RS 232标准是美国电子工业联合会(EIA)制定的一种串行物理接口标准,它适合于数据传输率在O~20 000 b/s范围内的通信,目前广泛用于计算机与终端或外设之间的近端连接。实际工作时,应保证电平在5~15V之间。所以为了与单片机进行通信。必须对其电平进行转换。现在常用的转换芯片是MAX232。MAX232内部有电压倍增电路和转换电路,只需5V电源便可实现TTL电平与RS 232电平的转换,使用十分方便。串口接口电路如图3所示。

  2 接口卡的软件设计

  2.1 RS 232接口软件设计

  单片机与PC端的数据通信需要设计一个通信协议,采用同步通信方式进行。将通信协议分成命令帧、应答帧和数据帧三种格式。每种帧都包含有起始字节、数据长度、校验字节和帧结束字节。具体格式如图4所示。

  命令帧共6个字节,传输方向为PC机到单片机。以0X00H作为帧起始,数据长度为2,当数据1和数据2同为0X00时,表示启动接口卡,单片机接收到该信号后.会初始化SJA1000,并将结果反馈给PC机(成功或失败);当数据1和数据2同为0XFFH时,表示要求接口卡停止工作,单片机会让 SJA1000进入睡眠模式,以退出总线;当数据1为0X01H时,表示PC机要求只接收某个节点的数据,数据2则表示该接点的节点号,单片机会重新设置 SJA1000的验收滤波器,屏蔽掉其他不需要的节点数据。

  应答帧共6个字节,传输方向为单片机到PC机。以0X11H作为帧起始,数据长度为2,当单片机接收到PC机的启动或停止命令,并设置成功后,发送两字节数据同为0X00H给PC,若设置失败,则发送两字节数据同为0XFFH给PC;对于PC要求读取特定节点的命令,单片机以0X10H作为应答起始,并以两字节同为0X00H表示成功,两字节同为0XFFH表示失败。

  数据帧为接口卡从总线上读到的数据,因为总线上数据有标准帧、远程帧等之分,而且每个帧中装载的数据长度未知,所以数据帧的长度不定,其传输方向也为单片机到PC,起始字节为0X22H。SJA1000每次接收到有效数据后会让单片机产生接收中断,单片机则在中断处理中将数据首先读入到RAM中暂时存放,然后计算其数据长度和校验和,将数据封装成帧,然后将帧通过串口送给PC处理和显示。[page]

  各种类型的帧以0X33H作为帧结束标识。校验和字节用来保证数据的准确性,单片机在发送数据前将各个字节相加,并将结果填人校验字节。PC端接收到数据后,重新计算校验和,并与单片机发送的校验和相比较,相同则正确接收,否则要求单片机重新发送。

  2.2 协议的透明性分析

  在同步传输数据的过程中,帧的起始字节和结束字节是非常重要的,它能够保证数据帧的准确性。但因为这两个字节的存在,同时也引出了另一个待解决的问题,就是当数据场中出现了与起始字节相同的数据时,很有可能会导致PC端把它看成一个新的帧起始,从而导致数据的处理和显示错误,这也就是数据传输的透明性问题。针对串口的数据传输,有一种比较好的解决方案。该方法将数据转换成为ASCII字符来进行传送,就是将每个字节的数据进行拆分,将一个16进制的字节拆分成两个字节,如5AH,5BH,5CH,…,可以拆分为50H,0AH,50H,0BH,50H,OCH,…,PC机再接收到数据后,再将数据进行两两相或组合。这样,只需要32个字节就可以组合成为00H~0FFH中任一个数据。但这种办法的缺点也是显而易见的,应用它所发送的有效数据量是正常发送的两倍,对于串口这种传输速度不高的通信介质而言,在数据量较大的情况下,不是一种可取的方法。

  在该接口卡中作者采取了另一种转义字符的方法。首先定义一个转义字符标识OXDBH。对于CAN总线而言,其每个帧的最大数据长度为8,即使将CAN的帧信息和识别码全部当作数据发送,其长度最大也只有13 B。这样可以肯定的是,正常情况下数据帧中数据长度字节的高4位必然为0。因此在数据发送之前,首先检查该数据中是否有与起始字节0X22H、结束字节 0X33H和转义标识0XDBH相同的数据,如果没有,则正常发送;如果有,则检测出与这两个字节相同数据的个数,并将该个数填充到数据长度字节的高4位中;同时,将这些数据前添加转义字符标识,并将该数据进行转义。如数据0X22H。0X33H,0XDBH…,则转义成0XDBH。0XD2H。 0XDBH,0XD3H,0XDBH,0XDDH…。PC机在接收到数据帧后,首先检查数据长度字节,看其高4位是否为0,如果为0,说明该数据组不存在转义字符,可以直接处理;如果为N。则表明数据组中存在N个转义字符,并且每个转义字符都以0XDB开始,需要首先将它们重新修改回原始数据。相比而言,这种办法有很好的稳定性和接口利用率,其数据流量也不会很高。

  2.3 CAN接口程序设计

  CAN总线的接口程序主要就是进行SJA1000的初始化过程和后面的接收中断处理过程。CAN初始化主要是设置CAN的通信参数。需要初始化的CAN控制寄存器有:模式寄存器(MOD)、验收代码寄存器(ACR)、验收屏蔽寄存器(AMR)、总线定时寄存器(RTR)、输出控制寄存器(OC)、中断寄存器(IR)和中断使能寄存器(IER)等。这些寄存器都只能在SJA1000处于复位状态下才可写访问。当SJA1000进入工作模式后,就能够自动接收总线上的数据,并将其放入接收缓冲区,同时产生接受中断,单片机进入中断后将数据从缓冲区中读出,并释放缓冲区。中断返回后,再将数据封装成帧发送给PC 机。

  2.4 PC端程序设计

  PC端程序使用VB 6.0进行开发。VB 6.O在图形界面的制作上比较方便,使用Mscomm组件能够轻松地制作串口的监视环境。只要在软件设计时将上述协议添加进行。图5给出了使用VB 6.0开发的软件调试情况。

  3 结 语

  该CAN总线接口卡经过实验验证,证明可以达到预期的要求,能够良好地监视总线上的数据,而且结构简单,有较大的利用价值。当CAN总线系统数据流量较大时,可以考虑使用USB接口和PC机进行通信,这样就能够更好地解决速度匹配和应用场合受限的问题。

关键字:CAN  RS232  接口卡 引用地址:CAN/RS 232接口卡的设计与实现

上一篇:构建一个高质量的RS485通信网络
下一篇:基于CAN总线通信设计的的重型汽车内轮差预警系统

推荐阅读最新更新时间:2024-05-02 23:02

can总线基本概念
  CAN 是Controller Area Network 的缩写(以下称为CAN),是ISO国际标准化的串行通信协议。在汽车产业中,出于对安全性、舒适性、方便性、低公害、低成本的要求,各种各样的电子控制系统被开发了出来。由于这些系统之间通信所用的数据类型及对可靠性的要求不尽相同,由多条总线构成的情况很多,线束的数量也随之增加。为适应“减少线束的数量”、“通过多个LAN,进行大量数据的高速通信”的需要,1986 年德国电气商博世公司开发出面向汽车的CAN 通信协议。此后,CAN 通过ISO11898 及ISO11519 进行了标准化,在欧洲已是汽车网络的标准协议。   CAN总线使用总结   一,can总线是由德国BOSCH公司提
[嵌入式]
CAN总线的通信错误及其处理
  在CAN总线中存在5种错误类型,它们互相并不排斥,下面简单介绍一下它们的区别、产生的原因及处理方法。 位错误:向总线送出一位的某个节点同时也在监视总线,当监视到总线位的电平与送出的电平不同时9则在该位时刻检测到一个位错误。但是在仲裁区的填充位流期间或应答间隙送出隐性位而检测到显性位时,不认为是错误位。送出认可错误标注的发送器,在检测到显性位时也不认为是错误位。 填充错误:在使用位填充方法进行编码的报文中,出现了第6个连续相同的位电平时,将检 测出一个填充错误。 CRC错误:CRC序列是由发送器CRC计算的结果组成的。接收器以与发送器相同的方法计算CRC。如果计算的结果与接收到的CRC序列不同,则检测出一个CRC错误
[嵌入式]
基于CAN总线的电控自动离合器控制器的设计与实现
随着社会的发展, 人们对汽车的舒适性和安全性要求越来越高, 而手动档汽车因其繁重的选换档及离合器操作增加了驾驶难度。对于驾驶新手而言,又会产生坡道起步易熄火、油耗大、离合器磨损严重等问题 。自动档汽车虽然驾驶操作简单, 但其造价高,开发难度大。本文设计的电控自动离合器ACS(Automatic Clutch System) 是在手动变速箱基础上安装电控系统,取消离合踏板,实现自动离合。ACS 的优势十分明显:与手动挡相比,其驾驶操控更为简单, 具有加速快、驾驶舒适的特点; 与自动变速器汽车相比,ACS 具有造价便宜、维修方便、经济、省油。 1 系统功能 ACS 将现代电子控制技术用于控制干式摩擦离合器, 模拟优秀驾驶员的操纵动作和
[单片机]
基于<font color='red'>CAN</font>总线的电控自动离合器控制器的设计与实现
CAN现场总线的智能脱扣器简述
智能化脱扣器能使断路器具有更强大的功能"我国新研制开发的脱扣器已具有与工控机PLC等通信的功能,能提供开关状态、三相电流电压、功率因数、有功功率等参数"在通信方面目前各国都在研究采用比较成熟的现场总线技术,以实现断路器的遥测、遥控、遥信和遥调"智能化脱扣器可实现过电流、电压和分励等传统脱扣器的功能"在硬件上,辅助功能模块和执行单元都可以是相同的,对电流和电信号处理显示等的不同,可以在软件设计里实现"另外,过电流保护功能需要配置过电流信号检测单元,而电压保护则需配置电源、整流滤波、稳压、欠压延时等单元,分励功能只需增加一个开关即可。 1 CAN总线 根据IEC标准和现场总线基金会的定义:现场总线是连接智能现场设备和自动化系统的
[嵌入式]
canopen总线协议在地铁通信网络中的应用
1  引言                   为了保障城轨列车的正常运行,必须有一套智能化、网络化的系统专门负责列车各模块的数据采集、分析,并对列车各设备实施监测,以降低操作的复杂度,提高列车的安全性。为满足上述需求,作为城轨列车车辆核心技术的列车通信网络监测技术应运而生。                   列车通信网络对列车的运行监测、状态监测、故障诊断以及旅客服务信息服务进行综合处理。它应用多种总线技术把分布于各车厢内部、独立完成特定功能的计算机互连起来形成一种工业局域网,以实现资源共享、协同工作、分散监测和集中操作等目的。                   在众多应用于 轨道交通 车辆的 现场总线 中,can是一种有效
[嵌入式]
基于CAN总线的工厂电力监测分析网络系统设计
1.引言   由于现场总线(Field Bus)能同时满足过程控制和制造业自动化的需要,因此现场总线的研究与应用已成为工业数据总线领域的热点。尽管目前对现场总线的研究尚未能提出一个完善的标准,但现场总线高性能价格比将吸引众多工业控制系统采用。   工业配电对于工业企业的电网质量和生产的可靠运行至关重要,并对计划用电、节约用电有着重要意义。基于CAN总线的工业配电计算机监测分析网络系统即采用这种性能价格比很高的现场总线技术构成实时状态监测网络系统,其系统构成灵活简单,连线极少,抗干扰能力强,适应性好,易于维护,具有数据处理、分析、运行监测、录波和打印等功能,同时对原有设备未作太多的改动。实用性和可扩展性极强。 2.CAN总线的特
[嵌入式]
基于CAN总线的轮胎智能实时监控系统方案设计
汽车行驶中轮胎的气压和温度是影响行驶安全关键因素之一,本文阐述了一种基于集成传感器MPXY8020A和射频收发模块为核心器件的直接式轮胎测压系统。基于当前流行的 TPMS方案,提出一种基于 CAN总线的同时具有测温、测压和智能过压保护功能的实时监控新方案,可避免爆胎的威胁,提高了轮胎使用安全性,可为 TPMS的设计提供参考。 汽车行驶安全是人们随着生活水平的提高,越来越关心的话题。汽车轮胎压力将直接影响汽车行驶安全,还将影响车辆的油耗和轮胎的寿命 。TPMS是汽车轮胎压力监视系统(Tire Pressure monitoring System),主要用于在汽车行驶时实时地对轮胎气压进行自动监测,对轮胎漏气、低气压、高压、高温等异常
[单片机]
基于<font color='red'>CAN</font>总线的轮胎智能实时监控系统方案设计
STM32的CAN总线的基本原理及实现过程
1、什么是CAN CAN是Controller Area Network 的缩写(简称称CAN),是ISO国际标准化的串行通信协议。由德国电气商博世公司在1986 年率先提出。此后,CAN 通过ISO11898 及ISO11519 进行了标准化。现在在欧洲已是汽车网络的标准协议。ISO11898是针对通信速率为125Kbps~1Mbps的高速通信标准,而ISO11519-2是针对通信速率为125Kbps以下的低速通信标准。现场总线是当今自动化领域技术发展的热点之一,被誉为自动化领域的计算机局域网。 CAN 控制器根据两根线上的电位差来判断总线电平。总线电平分为显性电平和隐性电平,二者必居其一。发送方通过使总线电平发生变化,将消
[单片机]
STM32的<font color='red'>CAN</font>总线的基本原理及实现过程
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved