典型RS-485/RS-422收发器芯片学习系列:MAX1487

通信芯片

30人已加入

描述

MAX1487是用于RS-485与RS-422通信的低功耗收发器,每个器件中都具有一个驱动器和一个接收器。MAX1487的驱动器摆率不受限制,可以实现最高2.5Mbps的传输速率。

MAX1487收发器在驱动器禁用的空载或满载状态下,吸取的电源电流在120µA至500µA之间。所有器件都工作在5V单电源下。

驱动器具有短路电流限制,并可以通过热关断电路将驱动器输出置为高阻状态,防止过度的功率损耗。接收器输入具有失效保护特性,当输入开路时,可以确保逻辑高电平输出。

具有1/4单位负载的接收器输入阻抗,使得总线上最多可以有128个MAX1487收发器。MAX1487为半双工应用设计,其组成的差分平衡系统抗干扰能力强,接收器可检测低达200mv的信号,是一种高速,低功耗,控制方便的异步通讯接口芯片。

MAX1487引脚配置和典型工作电路

图表

RS-422

MAX1487的管脚及内部结构框图如上图所示。

脚1 RO:接收器输出(A―B≥+0.2V,RO=“1”:A―B≤―0.2V ,RO=“1”);

脚2 RE:接收器使能;

脚3 DE:驱动器使能;

脚4 DI:驱动器输入;

脚5 GND:地;

脚6 A:接收器非反相输入

或驱动器非反相输出;

脚7 B:接收器反相输入

或驱动器反相输出;

脚8 VCC:电源

根据MAXIM公司的资料,其器件特性如下:

1. 供电电压 4.75V≤VCC≤5.25V

2. 供电电流 120μA—500μA,静态电流 230μA

3. 共模输入电压范围 ―7V——+12V

4. 通讯传输线最多可挂128个收发器

5. 传输速率 2.5MB/S

6. 传输延时 30ns

7. 跳变坡度 5 ns

8. 工作温度 0°C——+70°C

MAX1487的输入脚DI可直接与单片机CPU的TXD脚相连,输出脚RO与单片机CPU的RXD脚相连。MAX1487内部的驱动器与接收器是三态的,通过DE(驱动器输出高电平使能)和RE(接收器低电平使能)进行发送与接收,发送与接收的两种控制信号是反相的。可将二者接同一控制信号(如图2中P3.5),即“1”电平控制发送,“0”电平控制接收。A、B端实现多机联网。

MAX1487特性说明

关键特性

容错应用

MAX3430:±80V故障保护、失效保护、1/4单位负载、+3.3V、RS-485收发器

MAX3440E–MAX3444E:±15kV ESD保护、±60V故障保护、10Mbps、失效保护、RS-485/J1708收发器

对于空间受限应用

MAX3460–MAX3464:+5V、失效保护、20Mbps、PROFIBUS RS-485/RS-422收发器

MAX3362:+3.3V、高速、RS-485/RS-422收发器,采用SOT23封装

MAX3280E–MAX3284E:±15kV ESD保护、52Mbps、+3V至+5.5V、SOT23、RS-485/RS-422、真失效保护接收器

MAX3293/MAX3294/MAX3295:20Mbps、+3.3V、SOT23、RS-485/RS-422发送器

对于多通道收发器应用

MAX3030E–MAX3033E:±15kV ESD保护、+3.3V、四路RS-422发送器

对于失效保护应用

MAX3080–MAX3089:失效保护、高速(10Mbps)、限摆率RS-485/RS-422收发器

对于低电压应用

MAX3483E/MAX3485E/MAX3486E/MAX3488E/MAX3490E/MAX3491E:+3.3V供电、±15kV ESD保护、12Mbps、限摆率、真正的RS-485/RS-422收发器

MAX1487芯片应用举例

一、基于MAX1487芯片的远程多机通讯应用

1.应用电路

在多机通信中,一般PC机作为上位机只有RS232标准的通讯接口,要实现RS485标准接口通信,须通过RS232/RS485转换接口电路,完成由EIA电平到TTL电平的转换。可用专门的带隔离RS232/485转换器来实现。

MAX1487的RE与DE连接同一控制信号,如下实际电路(下图)中8031的P3.5,可严格保证收发信号在时间上错开。

RS-422

2.通讯协议

MCS51中串行控制寄存器SCON设有多机通讯控制位SM2(SCON.5),在编程前,定义各从机的地址编号,如分别为00H,01H,02H等等。从机系统在初始化程序中将串行口编程为约定的接收方式,且置位SM2,允许串行口中断。在主机和某一从机通讯之前,先向所有从机发出所选从机的地址,以设置第9位TB8为1表示为地址帧,这时SM2作为地址监听位,所有从机当接收到的第9位RB8为1则置位中断标志RI,中断后判断主机送来的地址与本从机是否相同,若为本地址,则清SM2为0,准备接收主机送来的数据帧;其他从机保持SM2为1状态。接着主机发送数据帧(TB8=0表示),各串行口同时接收到了数据帧,而只有已选中的从机(SM2=0)才能产生中断并接收该数据,其余从机收到(SM2=1,RB8=0)不产生中断响应,将数据丢掉。这样就实现了多机一对一通讯。

一般的程序设计是中断一次接收一个字节数据,这里我们将使一次中断接收一个完整的数据包。数据包由五部分组成:从机地址(1Byte);命令字节(1Byte);数据字节数(1Byte);传送数据(0-256Byte);校验和(2Byte)。主机向下先发送从机地址,从机进入中断接收程序,如地址相符,再以查询方式接收命令字节、数据字节数、数据、校验和。从机根据接收到的校验和判断接收正确与否,这时从机由接收状态置成发送状态,若接收正确则向主机回发“A5H”信号及其它回应信息,否则发“5AH”信号,中断返回前从机再置成接收状态。在主从机收发程序中做了超时处理,若经过一段时间收不到信息,则此次通讯失败。

3 软件设计

1.单片机部分

工作方式:定时器1为工作方式2,串行口为工作方式3;

传送方式:中断接收与发送响应信息;

数据格式:一个起始位,八个数据位,一个TB8或RB8,一个停止位;

波特率:9600bps

从机中断子程序流程图略。

下面给出单片机通讯程序采用Franklin/Keil C51语言编制。

main()

{ //初始化

TMOD=0x20;

TL1=0xFD; //设定波特率为9600bit

TH1=0xFD;

PCON=0x80;

TCON=0x00;

SMOD=0x00;

SCON=0xF0;

TR1=1;

REN=1;

ES=1;

EA=1;

P35=1; //处于接收状态

}

//串行口中断程序

void serial() interrupt 4 using 1 {

unsigned char address;

RI=0; //关中断

address=SBUF;

//判断是否符合本机地址,如1号机

if (address= =0x01)

{ P35=0;

SM2=0; //清SM2位,准备接收数据

……

//接收数据及相应处理

(发送功能可在此部分完成)

……

SM2=1;

}

else SM2=1; //不是发给本机数据,

置位SM2,退出

}

2.PC机部分

传送方式:查询方式接收和发送数据;

数据格式:一个起始位,八个数据位,一个可编程位(类似TB8或RB8),一个停止位;

波特率:9600bps

上位PC机通信程序的开发环境采用Borland C++ Builder5.0可视化编程工具,它是基于C++语言的快速应用程序开发(RAD)工具,是最先进的开发应用程序组件思想和面向对象的C++语言融合的产物,C++ Builder5.0内置了近200个完全封装了Windows 9x公用特性且具有扩展性的可重用控件,这就使得利用C++ Builder开发应用程序非常方便、快捷。

在Windows98/95环境中,编写串行通信应用程序,一般采用如下两种方法:其一是通过调用Win32 API提供的串行通信函数,这种方法实现相当繁琐;另一种方法则是利用专门处理串行通信的控件来编程,用户只需在自己的应用程序中嵌入这一类控件,编写少量代码便可轻松高效地完成任务。在本系统中,我们选择一个名为Comm的第三方控件来实现串口的通信管理。

表1 Comm控件的重要属性和事件列表

属性(事件)名称 用 途

BaudRate 设置串行通信波特率

Databits 设置有效数据位长度

DeviceAddress 设置串行口地址

DeviceName 选择串行口

Parity 奇偶校验位设置

OnBreak 通信中断时激活

OnError 数据传输有误时激活

Comm控件的一些重要属性(Property)和事件(Event)如表1所示。串行端口的选择、波特率的设定以及数据格式的定义等都可通过设置相应的属性来完成。在由计算机和多个单片机应用系统构成的多机环境中,一般把通信数据分为“地址帧”和 “数据帧”来传送,PC机的串行通信本身并不具备多机通信功能,也不能产生TB8或者RB8,但可以通过灵活设置Comm控件中的“Parity”属性来形成正确的地址/数据标志位,从而使PC机与单片机之间实现多机通信。

PC机与某一下位机通信,在对话框中选择下位机的地址号、设定通信命令,在“连接”按钮(Button)的OnClick事件处理函数中编写代码实现与下位机的数据通信。另外在通信被中断或数据传输有误时,分别激活Comm控件的OnBreak事件和OnError事件。在OnBreak或者OnError的事件处理函数中加入代码用来完成是否重发或取消本次通信等操作。

二、MAX1487/485芯片DE控制端的设计方案解析
1 问题的提出

在分布系统的设计中,RS-485半双工异步通信总线是被各个厂家广泛采用的数据通信总线。在售饭管理系统的设计中也不例外,它往往应用在主控机房与各个食堂的分机之间。系统拓扑结构如图1所示。

RS-422

由于实际工程中,分机数量较多,分布较远,所处的环境较恶劣,现场的各种干扰也较大,所以,往往通信的可靠性及质量不高,再加上软硬件设计得不完善,使得实际工程应用中485总线的通信质量总是不尽人意。

在使用RS-485总线时,如果简单地按常规方式设计电路,在实际应用中可能会出现以下两个问题:一是数据传输的可靠性问题;二是在多机通信方式下,一个节点发生故障往往会导致整个系统的通信陷入瘫痪,而且故障点的定位也非常不容易,给系统维护带来困难。

针对上述问题,我们对485总线的软件和硬件分别采取了一些必要的改进措施。

2 硬件电路的设计现以8031单片机、单片机监控芯片MAX691A,外接485总线通讯芯片MAX1487为例。电路原理图如图2所示。在电路设计中注意了上述两个问题。

RS-422

2.1 MAX1487 485芯片DE控制端的设计由于在售饭系统中,主控机房与各个食堂相隔较远,而分机系统上电复位又常常不是在同一个时刻完成。8031在复位期间,I/O口输出高电平,此时该分机的MAX1487的DE端电位为“1”,那么它将会处于发送状态,也就是占用了通信总线,这样,就影响其它分机与主机进行通信。因此,在电路设计时,应保证系统上电复位时不占用总线。图2电路的接法可以有效地解决复位期间分机“拉死”总线的问题。

另外,当某个分机出现异常情况(如死机)时,若此时MAX1487的DE端电位恰好为“1”,则该分机将一直占用通信总线,造成整个系统通信的崩溃。因此,在电路中应考虑监控MAX1487的DE端的电平,如该端持续为“1”时,应使分机复位以解除异常情况。图2电路可有效地解决这种情况。此外,该电路还能咻 下不工作的窗口机(分机)能自行脱离通讯网络。

2.2 485总线输出电路部分的设计输出电路的设计要充分考虑到线路上的各种干扰及线路特性阻抗的匹配。由于工程环境比较复杂,现场常有各种形式的干扰源,所以,485总线的传输端一定要加有保护措施。在电路设计中采用稳压管Z1、Z2组成的吸收回路,也可以选用能够抗浪涌的TVS瞬态杂波抑制器件,或者直接选用能抗雷击的485芯片(如MAX1487E等),以消除线路浪涌干扰。

考虑到线路的特殊情况(如某一台分机的485芯片被击穿短路),为防止总线中其它分机的通信受到影响,必须在其A、B输出端与485总线之间进行隔离。一种简单可行的方法是:在MAX1487的信号输出端串联两个10~30Ω的电阻R1、R2,这样一来,一方面,本机的硬件故障就不会使整个总线的通信受到影响;另一方面,与Z1、Z2配合,进一步保护了485总线通讯芯片。

在售饭系统产品的现场施工中,一般采用双绞线来连接,它的特性阻抗为120Ω左右,所以,线路设计时,在整个485网络传输线两端应各接1只120Ω的匹配电阻(如图2中R7),以减少线路上传输信号的反射。

由RS-485芯片的特性可知,接收器的检测灵敏度为±200mV,即差分输入端的电位差的绝对值大或等于200mV时,输出状态不确定。如果总线上所有发送器被禁止时,总线处于空闲状态,接收器的输出状态是不定的。如处于逻辑“0”,这会被误认为是通信帧的起始位而引起工作不正常。解决这个问题的办法是人为地使A端电位高于B端电位,这样接收端的电平在485总线不发送期间(总线空闲时(呈现唯一的高电平,8031单片机就不会被误中断而收到乱字符。通过在485电路的A、B输出端加接上拉、下拉电阻R5、R6,即可很好地解决这个问题。需要注意的是,在整个网络中只需在一处接入这两只电阻,通常在主机中接入。

有些资料中提到,在施工中不能将主机安装在网络的中间形成T型分布,而应将主机放在总线的一端。由485总线规范指出,最大通讯距离可达1.2km,笔者在现场施工中,为了增加通讯距离,将主机设置在网络的中央,由于分机间无需进行通讯,两台分机之间的最大距离可达到2.4km。实际应用中可达到2km而保证通讯正常。

3 软件的编程RS-485通常应用于一对多点的主从应答式通信系统中,相对于RS-232等全双工总线,效率低了许多,因此选用合适的通信协议及控制方式就显得非常重要。

3.1 总线稳态控制大多数使用者选择在数据发送前1ms将收发控制端DE置成高电平,使总线进入稳定的发送状态后才发送数据,数据发送完毕再延迟1ms后置TC端成低电平,使数据可靠发送完毕后才转入接收状态。如按这样的要求来做,系统的通讯效率将大大降低。据笔者使用的经验,DE端有10个机器周期的延时已满足要求。

3.2 通讯协议制定由于485总线是半双工异步通信总线,在某一个时刻,总线只可能呈现一种状态,所以,这种方式一般适用于主机对分机的查询方式通信,总线上必然有一台始终处于主机地位的设备在巡检其它的分机,所以需要制定一套合理的通信协议来协调总线的分时共用。这里采用的是数据包通信方式。为保证数据传输质量,对每个字节进行校验的同时,应尽量减少特征字和校验字。惯用的数据包括格式由引导码、长度码、地址码、命令码、数据、校验码、尾码组成,每个数据包长度达20~30字节。在RS-485系统中这样的协议不太简练,笔者采用了如下协议:上位机数据包格式由地址码、长度码、命令(或数据)码、CRC校验码组成;下位机应答帧由长度码、状态码、数据码和CRC校验码组成。实际使用效果良好。

4 结束语经过上述的软硬件共同处理,485总线在售饭系统应用中的可靠性大大提高,在食堂比较恶劣的环境条件下,系统的通信始终处于正常状态,整机性能满足了现场工程的需要。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
评论(0)
发评论
1431897797 2014-09-16
0 回复 举报
第一代RS-232/RS-485转换器充分体现了当时由MAXIM主导的RS-485总线的性能:无源、128节点和1200米距离,典型的代表是BOSHIKA的485A型号的转换器。现在RS-485领域又出现了革命性的技术和产品485A2,通信距离不再受1200米的限制、节点数不再受128个的限制。 收起回复
whcwddp 2014-08-14
2 回复 举报
学习了 收起回复

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分