CAN/RS232接口卡的设计及实现方法

最新更新时间:2012-04-14来源: 互联网关键字:接口卡 手机看文章 扫描二维码
随时随地手机看文章

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。

  选用芯片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所示。

串口接口电路

[page]

  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处理和显示。 

  各种类型的帧以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接口卡的设计及实现方法

上一篇:ISPl362在基于FPGA的红外成像系统中的应用
下一篇:采用Profibus现场总线的车间生产过程自动化管理设

推荐阅读最新更新时间:2023-10-12 20:39

基于PCI总线接口卡的ARINC429总线数据仿真与采集系统
ARINC429总线是目前航空电子分各子系统之间最常用的通信总线之一,作为现代航空电子系统的“骨架”,一旦该总线系统或挂接的机载电子设备发生故障时,整个数据传输就会出现异常。为了快速诊断及排查故障点,429总线数据的仿真发送及采集显得尤为重要。本文提出一种基于AEC429-PCI-22/S5总线接口卡的ARINC429总线数据的仿真发送与采集系统,通过与机载电子设备点对点的数据收发,能够快速排查出故障设备,为航空机载电子设备的日常维护和故障诊断提供了一种高效的辅助手段。 1 ARINC429航空总线简介 ARINC429是一种广泛应用于民用和军用飞机的串行数据总线结构,是一种单向广播式数据总线,其传输介质为屏蔽双绞线,调制
[嵌入式]
Aquantia推出AQtion网络接口卡
2017年5月22日,超高速以太网连接解决方案的先驱者和市场领导者Aquantia公司,宣布AQtion AQN-107 和AQN-108 网络接口卡在中国正式上市,用于需要多千兆以太网(Multi-Gig)连接的高性能电脑、专业工作站和其他流量密集平台。这些新的PCIe扩展卡搭载Aquantia 公司获奖 的以太网控制器芯片,提供个人用户可负担的多千兆以太网连接,过去只用于高端服务器中,现在一般个人用户也可以用了。 AQtion网络接口卡能以5G和 2.5Gbps传输速率连接网络,且符合2016年9月通过的IEEE 802.3bz标准,可兼容于现行的 Cat5e 和 Cat6 网线,也可以支持传统的千兆以太网(1000BASE
[网络通信]
基于AT89C51的CAN-RS232通信转换设计
1 引言 RS232作为标准的计算机串行接口已被广泛使用,与此同时,随着现场总线技术的飞速发展,具有实时性好、可靠性高、结构简单等优点的CAN总线在测控系统中也越来越多地被采用,但由于两者的总线结构、通信协议及传输特点各不相同,因而给不同设备之间的连接带来诸多不便。因此,如何以最简单的方式实现CAN节点与RS232串行口的通信就成为工程实践中一个不可回避的问题。 本文采用典型的不具备CAN通信能力的AT89C51单片机作为微处理器,设计了一个简单、实用的通信转换模块。该通信转换模块具有体积小、结构简单、通用性好、使用方便等特点。 2 工作原理 CAN-RS232通信转换模块通过硬件电路的电平标准转换和软件编程
[单片机]
基于AT89C51的<font color='red'>CAN</font>-RS232通信转换设计
基于虚拟无线电技术的多媒体收音接口卡设计
摘要:介绍了一种基于虚拟无线电技术的多媒体收音接口卡设计方法,可以接收调幅和调频信号,试验调试表明,接收效果良好。 关键词:软件无线电 虚拟无线电 多媒体收音接口卡 软件无线电是一种基于宽带A/D器件、高速DSP芯片,以软件为核心的崭新的体系结构。其基本思想就是将宽带A/D尽可能地靠近射频天线以便将接收到的模拟信号尽可能早地数字化,尽量通过软件来实现电台的各种功能。主要特点有:灵活性、适应性、开放性。 虚拟无线电与软件无线电的主要区别就是利用通用微机代替高速DSP芯片,完成各种功能,其灵活性、通用性和开放性比软件无线电有过之而无不及。相信随着通用微机运算速度的不断提高,虚拟无线电技术必将得到更加广泛的应用。 1 多媒体
[应用]
PC机和激光没距雷达双路高速数据通信接口卡
    摘要: 阐述了PC机和激光测距雷达双路高速串行数据通讯接口卡的系统构成。重点介绍了RS-422A高速串行通讯接口及收发控制、接口卡和PC机通信缓冲区的共享、卡上资源分配等关键性问题。     关键词: RS-422  高速串行通信  接口卡  双端口RAM  FPGA     在我们智能自主式移动机器人项目的研制中,采用了两路二维激光雷达来完成障碍物检测、路标检测及地图匹配等工作。我们采用的激光雷达均提供了一种RS-422串行通讯接口。雷达通过与PC机的握手通信完成初始化工作之后,便分别以40ms和80ms为工作周期将测距结果以500Kbps的速率发送至PC机。PC机
[工业控制]
CAN/RS232接口卡的设计及实现方法
CAN/RS232接口卡的设计及实现方法 控制器局域网(Controller Area Network,CAN)属于现场总线的范畴,其总线规范已被ISO国际标准化组织制定为国际标准,并被公认为是最有前途的现场总线之一。CAN总线广泛应用于控制系统中的各检测和执行机构之间的数据通信。因为CAN总线数据的传输和处理都由节点的单片机完成。这样就使设计者和观察者没有办法以比较直观的方式掌握总线的运行情况。 现在市场上主要有两种CAN的接口卡,使用PCI总线和使用USB接口。前者具有传输速度快的特点,但却要占用一个计算机的插槽,并且设计上十分困难;后者的传输速度也很快,且价格较便宜,但要花费很大的精力进行USB的固件开发和维护,
[模拟电子]
<font color='red'>CAN</font>/<font color='red'>RS232</font><font color='red'>接口卡</font>的设计及实现方法
CAN-RS232通信转换模块的设计与实现
1.引言     RS232作为标准的计算机串行接口已被广泛使用,与此同时,随着现场总线技术的飞速发展,具有实时性好、可靠性高、结构简单等优点的CAN总线在测控系统中也越来越多地被采用,但由于两者的总线结构、通信协议及传输特点各不相同,因而给不同设备之间的连接带来诸多不便。因此,如何以最简单的方式实现CAN节点与RS232串行口的通信就成为工程实践中一个不可回避的问题。     本文采用典型的不具备CAN通信能力的AT89C51单片机作为微处理器,设计了一个简单、实用的通信转换模块。该通信转换模块具有体积小、结构简单、通用性好、使用方便等特点。 2 工作原理     CAN-RS232通信转换模块通过硬件电路的电
[嵌入式]
基于PCI总线的1553B总线接口卡设计
  在航电系统的研制初期,通常要先在地面以微型计算机为基础做各种仿真实验。这使得用于各仿真系统的接口板的研制和革新工作便同时成为航电系统发展的一个重点。接口板的主要任务是实现航电系统的数据总线与PC机的数据总线之间的通信功能,这使PC机可以模拟航电系统数据总线上所挂接的实际子系统。PCI(Peripheral Component Interconnect)总线,即外围部件互连总线,是一种先进的高性能32/64位地址数据复用局部总线,可同时支持多组外围设备。PCI局部总线不受制于处理器,为中央处理器及调整外围设备提供一座桥梁,更可作为总线之间的交通指挥员,提高数据吞吐量,具有支持线性突发传输、极小的存取延误、采用总线主控和同步操作、
[嵌入式]
小广播
最新模拟电子文章
换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved