基于CAN总线的处理器设备远程通信

发布者:gamma14最新更新时间:2014-08-21 来源: 21ic关键字:CAN  波特率  流控制 手机看文章 扫描二维码
随时随地手机看文章
1 引言 

       工业设备通信通常涉及到很多硬件和软件产品以及用于连通标准计算机平台(个人计算机或工作站)和工业自动化应用设备的协议,而且所使用设备和协议的种类繁多。因此,大部分自动化应用设备都希望执行简单的串行命令,并希望这些命令同个人计算机或者附加的串行端口板上的标准串行端口兼容。RS-232是目前PC机与通信工业中应用最广泛的一种串行接口。RS-232被定义为一种在低速率串行通讯中增加通讯距离的单端标准。由于RS-232的发送端与接收端之间有公共信号地,所以它不能使用双端信号,否则,共模噪声会耦合到信号系统中。RS-232标准规定,其最大距离仅为15m,信号传输速率最高为20kbit/s。 

       CAN,全称为“Controller Area Network”,即控制器局域网,是国际上应用最广泛的现场总线之一,一个由CAN总线构成的单一网络受到网络硬件电气特性的限制。CAN作为一种多主方式的串行通讯总线,其基本设计规范要求高位速率和较高的抗电磁干扰性能,而且要能够检测出通讯总线上产生的任何错误。当信号传输距离达10km时,CAN仍可提供高达50kbit/s的数据传输速率。表1为CAN总线上任意两个节点之间最大传输距离与其位速率之间的对应关系。

表1 CAN总线系统任意两节鼎足之势之间的最大距离

位速率/kbps 1000 500 250 125 100
最大距离/m 40 130 270 530 620
位速率/kbps 50 20 10 5  
最大距离/m 1300 3300 6700 10000  


       由此可见,无论从实时性、适应性、灵活性,还是可靠性上来看,CAN总线都是一种比RS-232更为优秀的串行总线。当两台串口设备的相距较远,不能直接用RS-232把它们连接起来时,就可以把RS-232转换为CAN,通过CAN总线来实现串口设备的网络互连。 

       但是,RS-232和CAN在电平和帧格式上都是很大的不同。具体表现如下: 

       RS-232标准电平采用负逻辑,规定+3V~+15V之间的任意电平为逻辑“0”电平,-3V~-15V之间的任意电平为逻辑“1”电平。而CAN信号则使用差分电压传送,两条信号线称为“CAN_H”和“CAM_L”,静态时均为2.5V左右,此时的状态表示为逻辑“1”,也可以叫做“隐性”;用CAN_H比CAN_L高表示逻辑“0”,称为“显性”。显性时,通常电压值为:CAN_H=3.5V,CAN_L=1.5V; 

       RS-232串口的帧格式为:一位起始位,八位数据位,一位可编程的第九位(此位为发送和接收的地址/数据位),一位停止位。而CAN的数据帧格式为:帧信息+ID+数据(可分为标准帧和扩展帧两种格式)。 



       因此,设计时就需要有一个微控制器来实现电平和帧格式等的转换。其转换方式如图1所示。

2 RS-232到CAN转换的硬件设计 

       在设计RS-232到CAN的转换装置时,用单片机AT89C52作为微处理器;用SJA1000作为CAN微控制器,SJA1000中集成了CAN协议的物理层和数据链路层功能,可被动局面对通信数据的帧处理;AT82C250作为CAN控制器和物理总线之间的接口,用于提供总线的差动发送能力和CAN控制器的差动接收能力,通过AT82C250的引脚3可选择三种不同的工作方式(高速、斜率控制和待机)。其中引脚3接地时为高速方式;高速光隔用6N137实现,其作用是防止串入信号干扰;MAX232用来完成232电平到微控制器接口芯片TTL电平的转换。具体的硬件接口电路参见SJA1000的有关资源,这里不再多做说明。但有以下几点需要注意。 

       (1)CAN总线两端接有一个120Ω的电阻,其作用是匹配总线阻抗,提高数据通信的抗干扰性及可靠行。但实际上只需保证CAN网络中“CAN_H”和“CAN_L”之间的跨接电阻为60Ω即可。 

       (2)SJA1000的20引脚RX1在不使用时可接地(具体原因见软件设计),配合CDR.6的置位可使总线长度大大增加。 

       (3)引脚TX0、TX1的接法决定了串行输出的电平。具体关系可参考输出控制寄存器OCR的设置。 

       (4)AT82C250的RS引脚与地间接有一个斜率电阻。电阻大小可根据总线通信速度作适当调整,一般在16kΩ~140kΩ之间。 

       (5)MAX232外围需要四个电解电容C1、C2、C3、C4,这些电容也是内部电源转换所需电容,其取值均为1μF/25V,宜选用钽电容并且位置应用量靠近芯片,电源VCC和地之间要接一个0.1μF的去耦电容。



3 RS-232到CAN转换的软件设计 

       在微处理控制下,RS-232和CAN进行数据交换时,采用串口接收和CAN中断方式可提高工作效率。其主程序流程图如图2所示。SJA1000的初始化在复位模式下才可以进行,主要包括工作方式的设置、时钟分频和验收滤波寄存器的设置、波特率参数的设置以及中断允许寄存器的设置等。 

       数据能否准确传递还取决于波特率和流量控制,这也是软件设计时不可忽略的地方。因此接下来主要介绍CAN波特率的设置、串口波特率的自动检测、串口数据流量控制。

3.1 CAN滤波率的设置 

       CAN协议中的要素之一是波特率。用户可以设置位周期中的位采样点位置和采样次数,以使用户可以自由地优化应用网络性能,但在优化过程中,要注意位定时参数基准参考振荡器的容差和系统中不同信号传播延迟之间的关系。 

       系统的位速率fBil表示每单位时间传输数据位的量,即波特率fBit=1/tBit。额定的位定时由3个互不重叠的段SYNC_SEG、TSEG1和TSEG2组成,这3个时间段分别是TSYNC_SEG、TSEG1和TSEG2组成,这3个时间段分别是tSYNC_SEG、tTSEG1和tTSEG2。所以,额定位周期tBit是3个时间段的和。 

       tBit=tSYNC_SEG+tTSEG1+tTSEG2 

       位周期中这些段都用整数个基本时间单位来表示。该时间单位叫时间份额TQ,时间份额的持续时间是CAN系统时钟的一个周期tSCL,可从振荡器时钟周期tCLK取得。通过编程预分频因数(波特率预设值BRP)可以调整CAN系统时钟。具体如下: 

       tSCL=BRP×2tCLK=2BPR/fCLK 

       对CAN位定时计算的另一个很重要的时间段是同步跳转宽度(SJW),持续时间是tSJW。SJW段并不是位周期的一段,只是定义了在重同步事件中被增长或缩短的位周期的最大TQ数量。此外,CAN协议还允许用户指定位采样模式(SAM),分别是单次采样和三次采样模式(在3个采样结果中选出1个)。在单次采样模式中,采样点在TESG1段的末端。而三次采样模式比单次采样多取两个采样点,它们在TSEG1段末端的前面,之间相差一个TQ。 [page]

       上面所提到的BPR、SJW、SAM、TESG1、TESG2都可由用户通过CAN控制器的内装中寄存器BTR0和BTR1来定义。具体如图3所示。设置好BTR0和BTR1后,实际传输的波特率范围为: 

       最大=1/(tBit-tSJW),最小=1/(tBit+tSJW)

3.2 串口波特率检测 

       当串口设备是主机时,如需检测此时转换装置的串口波特率,首先可对主机的接收波特率(以9600波特为例)进行设定,并在终端发送一个特定的字符(以回车符为例),这样,主机根据接收到的字符信息就可以确定转换装置的通信波特率。回车符的ASCII值是0DH,在不同波特率下接收到的值如表2所列。

表2 不同波特率下接收的字节

波特率(bit/s) 接收字节(十六进制) 波特率(bit/s) 接收字节(十六进制)
1200 80 4800 E6
1800 F0 9600 0D
2400 78 19200 F*

3.3 串口流控制 

       此处讲到的“流“指的是数据流。数据在两个串口之间的传输时,常常会出现丢失数据的现象。由于单片机缓冲区有限,如接收数据时缓冲区已满,那么此时继续发送来的数据就会丢失。而流控制能有效地解决该问题,当接收端数据处理不过来时,流控制系统就会发出“不再接收”的信号,而使发送端停止发送,直到收到“可以继续发送”的信号再发送数据。因此流控制可以控制数据传输的进程,防止数据丢失。常用的两种流控制是硬件流控制(包括RTS/CTS、DTR/CTS等)和软件流控制XON/XOFF(继续/停止),下面仅就硬件流控制RTS/CTS加以说明。 

       采用硬件进行流控制时,串口终端RTS、CTS接到单片机的I/O口,通过置I/O口为1或0来接收和发出起停信号。数据终端设备(如计算机)使用RTS来起始单片机发出的数据流,而单片机则用CTS来起动和暂停来自计算机的数据流。实现这种硬件握手方式时,在编程时根据接收端缓冲区的大小设置一个高位标志和一个低位标志,当缓冲区内数据量达到高位时,就在接收端将CTS线置低(送逻辑0),而当发送端的程序检测到CTS为低后,就停止发送数据,直到接收端缓冲区的数据量低于低位而将CTS置高为止。RTS则用来标明接收设备有没有准确好接收数据。



3.4 CAN接收子程序 

       PeliCAN格式既可以发送标准帧也可以送扩展帧,利用时钟分频寄存器中的CDR.7可以调协CAN模式(0-BasicCAN,1-PeliCAN),接收CAN数据时,可根据帧信息中的FF位来判断是标准帧还是扩展帧,并且RTR位来判断是远程帧还是数据帧。以下是CAN接收子程序:

;//////////////////////////////////////////////////////////////////

;//CAN数据接收/统一成2个字节ID的帧格式//

;///////////////////////////////////////////////////////////////////////

RECAN:

MOV R0,#C_RE ;单片机内缓冲区起始地址

MOV DPTR,#RXBUF ;读取并保存接收缓冲区的内容

MOVX A,@DPTR ;读取CAN缓冲区的2号字节

MOV @R0,A ;保存

JB ACC.7,EFF_RE ;FF位,0-SFF,1-EFF

MOV R2,#0

SJMP SFF_RE ;ID数目不同,截取“数据字节”的位置不同

EFF_RE:MOV R2,#2

SFF_RE:MOV R2,#2

SFF_RE:

JB ACC.6,EXIT_RECAN ;RTR位判断,1-远程帧,则跳出

ANL A,#0FH

MOV R3,A ;这时截取中间4位是数据长度

MOV C_NUM,A ;R3,R5中存放接收帧的长度

RDATA0:

INC DPTR ;2个字节ID

INC R0

MOVX A,@DPTR

MOV @R0,A

INC DPTR

MOVX A,@R0,A

INC DPTR

MOVX A,@DPTR

MOV @R0,A

MOV A,R2 ;如果是EFF则跳过两个字节ID

JZ DRATA1

INC DPTR

INC DPTR

DATA1: ;数据字节

INC DPTR

INC R0

MOVX A,@DPTR

MOV @R0,A

DJNZ R3,RDATA1

EXIT_RECAN:

RET

4 结束语

计算机的微型化为测控仪表的智能化提供了必要的条件,使得带微处理器的终端设备具备更好的数字通信能力。随着越来越多智能终端的出现,无论是对网络的结构、协议、实时性,还是适用性、灵活性、可靠性乃至成本都有了更高的要求,因此现场总线有着很好的发展前景。CAN总线的帧结构拥有标识ID,这使得设备网络中拥有多台网络主机成为可能,即通过网络主机可以监控整个设备网络的工作情况并作出相应的控制决策。本装置目前已开发完成,并在实际应用中取得了非常好的效果。

关键字:CAN  波特率  流控制 引用地址:基于CAN总线的处理器设备远程通信

上一篇:C8051F320在USB设计中的应用
下一篇:CAN总线-PROFIBUS-DP在处理器上的实现方法

推荐阅读最新更新时间:2024-03-16 13:40

Linux环境下实现基于ARM9的CAN总线通信
1. 引言 CAN(Controller Area Network)总线最早是由德国BOSCH公司提出,实现汽车环境中的微控制器通讯,在车载各电子控制装置ECU之间交换信息,形成汽车电子控制网络。由于其具有成本低,实时性好,容错性高,设计灵活等特点,目前已被广泛的应用于各种工业领域,被公认为是最有前途的现成总线之一。与此同时,随着ARM(Advanced RISC Machines)芯片及嵌入式Linux操作系统的成熟与完善,使得CAN通信的开发更为便利,应用更为广泛。本文就将从硬件,软件两方面介绍一种在Linux环境下实现基于EP9315的CAN总线通信方式。 2. 硬件介绍及其接口实现 本设计选用的是Cirrus Logic公
[单片机]
Linux环境下实现基于ARM9的<font color='red'>CAN</font>总线通信
基于CAN-bus 总线的模拟空调温/湿度控制系统
一、系统结构     本系统是一个室内空调温/湿度控制系统的模拟系统数据采集及控制中心通过CAN-bus 总线定时采集各个房间的温/湿度数据,并对各个房间的温/湿度进行控制。系统的数据采集及控制中心由上位机的硬件即任一款ZLGCAN 系列接口卡和PC 构成,软件由组态软件MCGS 和ZOPC_Server 组成。控制室即下位机由DP-668 实验仪和ZLGCAN 系列接口卡中的PCI-9810 接口卡模拟。 图 1 系统结构图 二、MCGS 工程框架     本空调温/湿度控制系统需要对各个控制室及风道的温/湿度值进行监控,因此工程需要有实时显示和记录各控制室温/湿度值、修改房间温/湿度SV 值、报警显示、
[嵌入式]
基于CAN总线的潜水电机智能监控系统设计
目前,国内外已有多家公司开发出针对个体潜水电机的智能电了保护装置,虽然可以达到保护电机的目的,但无法实现集中管理。因此,对潜水电机群的实时监控与统一管理的要求日益迫切。本文设计了基于CAN现场总线的潜水电机群分布式智能监控系统,可以对散布的潜水电机保护装置进行组网,实现潜水电机的智能化控制和网络化管理。 潜水电机智能监控系统总体方案设计 基于CAN现场总线的潜水电机分布式智能监控系统由监控计算机(内置PC-CAN适配卡)、智能节点、CAN总线网络组成,其系统的总体结构如图1所示。分布在现场的监控节点可以独立对电机进行智能控制和故障保护;监控计算机可以通过CAN总线网络和各个监控节点进行实时通信,从而实现潜水电机群的分布式控
[嵌入式]
STC89C52RC串口波特率程序
一、完整代码如下:C #include#define uchar unsigned char #define uint unsigned int void send(uchar state) { SBUF=state; while(TI==0); TI=0; } void SCON_init(void) { TMOD=0x20;//6T模式,11.05992@115200 SCON=0x50; PCON=0x80; TL1=0xFF; TH1=0xFF; TR1=1; /*SCON=0x50;//定时器2模式,11.0592@115200 TH2=0xFF; TL2=0xFD; RCAP2H=0xFF; RCAP2L=0xFD;
[单片机]
单片机在波特率变换器中的应用
在一些复杂的系统中,系统与分系统、分系统与设备等之间存在数据的传递问题,往往采用通信的方式来解决。由于分系统、没备等通信波特率的不同,特别是一些特殊波特率设备的存在,使得系统中设备间的相互通信不易实现。例如,在一个系统中,上位机接收某一设备的数据,如图1所示,设备l和设备2采用的是172.8 kbps的波特率,而上位机用VB编程,其通信波特率为115.2 kbps、128 kbps或256 kbps,等,这样设备之间就不能相互通信,给设计带来困难。为了解决上述问题,采用双单片机电路,设计了波特率变换器,将接收波特率为172.8 kbps的数据,转换成波特率为115.2 kbps的输出,从而使不同波特率设备之间的通信成为可能。
[单片机]
基于CAN总线PC适配卡设计
引 言 分布式产业测控系统需要有现场总线来连接各现场设备及处理控制单元。CAN总线就是一种具有较高性能价格比、能满足分布式控制要求的现场总线,具有广泛的应用远景。它实际上是一种简化型网络结构,在构造单片处理器网络中极为有用。为了使上位机也能和CAN总线相连,使微机成为系统的上位机,增强控制系统的功能,从而进一步延伸CAN总线连通范围,就需要提供一个微机和CAN总线的接口。本文先容作者设计制作的一种CAN总线PCI适配器。 接口的硬件设计 PCI接口的实现 目前市面上有些CAN总线的适配器,但大多都是基于PC/104或者ISA总线,传输速度较慢,效率低下。作者在设计中使用高效的PCI总线,实现了数据的高速传输。与ISA总线相
[单片机]
基于<font color='red'>CAN</font>总线PC适配卡设计
车载CAN总线记录仪的大容量存储系统设计
引言     CAN(Controller Area Network,控制器局域网)总线是德国Bosch公司在20世纪80年代初,为了解决现代汽车中众多的控制与测试仪器之间的数据交换而开发的一种串行数据通信协议。它的短帧数据结构、非破坏性总线性仲裁技术以及灵活的通信方式适应了汽车的实时性和可靠性要求,倍受汽车生产厂商的青睐。随着汽车电子技术的发展,汽车上的ECU(Electronic Control Unit,电子控制单元)越来越多,如电控燃油喷射系统、防抱死制动系统、防滑控制系统等,相应的数据量也越来越大,如何采用合理的存储方案是记录仪等大容量存储系统的关键。本文详细阐述了大容量存储系统系统的整体结构、硬件电路设计。利用
[嵌入式]
LPC1768/1769之CAN控制器概述(附库函数下载地址)
一、背景: 使用LPC1769来做CAN的收发,在此对使用LPC1769的CAN控制器进行收发做个总结和记录,以备下 次开发快速上手使用。 附:LPC1768/1769除了支持最高频率不同以外,其它基本上一致。 二、正文: 先贴一张LPC1769 CAN控制器的方框图:   . 由上图可见,整个CAN控制器一头是CPU,另一头是CAN收发器:      CAN收发器负责CAN数据与CAN网络的通信。CAN内核模块解析和封装要发送到CAN收发器以及从CAN    收发器发过来的数据,此处CAN内核工作由硬件自行完成。      CPU通过APB总线即可设置CAN控制器状态,以及读取中断信息
[单片机]
LPC1768/1769之<font color='red'>CAN</font><font color='red'>控制</font>器概述(附库函数下载地址)
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

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