基于单片机的SRS232/RS485转换器设计方案

发布者:美丽的1号最新更新时间:2015-06-26 来源: eepw关键字:单片机  SRS232  RS485  转换器 手机看文章 扫描二维码
随时随地手机看文章
为了便于对分布式的各个现场测控设备实现集中控制,现场总线技术得到了广泛的应用。RS485总线因其硬件设计和通信协议简单、控制方便、成本低廉、传输距离远以及可挂接多个从设备等优点而成为目前国内应用较多的现场总线之一。

目前大多数的分布式现场总线通信系统通常都使用PC机(或工控机)作为主机对各个现场设备进行集中控制和数据传输。PC机只有标准的RS232接口,而RS232总线和RS485总线的接口电平不兼容,要实现PC机和RS485总线构成的通信网络的连接就必须进行RS232和RS485之间的电平转换。因此,进行RS232/RS485转换器的设计就显得很有必要。

采用单片机进行RS232/RS485转换器的设计是比较常用的一种方法。传统的基于单片机设计的RS232/RS485转换器存在着以下不足之处:

(1)采用的单片机和外围器件个数较多,给设计带来不便,也不利于降低成本,减小体积;

(2)设置不灵活,不能改变波特率和通信方式,或者更改参数不方便,使通用性受限。

鉴于以上不足,本文采用宏晶科技公司生产的增强型51单片机STC11F02E为核心设计了一款RS232/RS485转换器来弥补这些缺陷,降低了成本,减小了体积,同时能够方便地进行波特率和通信方式的设置,增强了其通用性;而且单片机的可编程方式也方便了转换器的功能扩展,灵活性大大增强。

转换器的总体结构概述

转换器主要由三部分组成,分别为:RS232电平转TTL电平模块、RS485电平转TTL电平模块和单片机主控制模块。转换器的总体结构框图如图1所示。



图1 转换器总体结构框图

RS232电平转TTL电平模块用来实现RS232总线和单片机之间的连接,RS485电平转TTL电平模块用来实现RS485总线和单片机之间的连接,而单片机主控制模块起到一个过渡连接的作用,用于协调和控制RS232总线和RS485总线之间的数据传输。

下面详细阐述这3个模块的具体硬件电路设计。

转换器的硬件电路设计

RS232电平转TTL电平模块的电路设计

这里采用Maxim公司生产的MAX232电平转换芯片设计RS232和单片机的电平转换接口电路。

MAX232芯片只需用5V的单电源供电,外加4个电容,就可实现RS232电平和TTL电平之间的转换,可直接驱动RS232总线进行数据传输,使用十分方便。采用该芯片可以很容易地实现单片机和RS232总线之间的连接,其最高传输速率可达120kbps。

该模块的具体电路设计图如图2所示。


图2 RS232电平转TTL电平电路

RS485电平转TTL电平模块的电路设计

该模块的电路采用Maxim公司生产的RS485接口芯片MAX483E进行设计。

MAX483E芯片是一款用于RS485和RS422通信的低功耗总线收发器,具有±15kV静电放电冲击保护和限摆率驱动特性,减小了电磁干扰和终端电缆反射,允许高达250kbps速率的无差错数据传输。该芯片只需用5V的单电源电压供电即可正常工作,而且在一条总线上最多可以连接32个负载。利用该芯片可以极大地简化单片机和RS485总线的接口电路设计。

该模块的具体电路设计图如图3所示。


图3 RS485电平转TTL电平电路

单片机主控制模块的电路设计

该模块是转换器的核心模块,转换器的主要功能就是通过该模块来实现的。整个电路设计也非常简单,只需一片增强型的51单片机STC11F02E外加一些基本的外围电路(包括外部晶体振荡器电路和复位电路)即可完成设计。

STC11F02E单片机为增强型的8051内核,具有2KB的片内Flash程序存储器、2KB的EEPROM存储器和256KB的片内SRAM数据存储器。这款单片机的UART(Universal Asynchronous Receiver/Transmitter,通用异步收发器)模块的最大特点就是通过配置特殊功能寄存器AUXR1中的第7位UART_P1的状态可以使UART模块的两个引脚(RXD、TXD)接到P3端口的P3.0、P3.1引脚,或者接到P1端口的P1.6、P1.7引脚,从而可以充当两个串口使用。这里主要利用该功能来设计RS232/RS485转换器。[page]

整个转换器的总体硬件电路图如图4所示。


图4 转换器总体硬件电路图

转换器的工作原理

转换器硬件电路的工作原理是先将PC机串口输出的RS232总线信号电平通过电平转换芯片MAX232转换成STC11F02E可以接收的TTL电平信号,由该单片机接收PC发送过来的数据。STC11F02E接收完传来的全部数据后将串口引脚从P3.0和P3.1切换至P1.6和P1.7引脚,再把接收到的数据通过RS485收发器MAX483E发送到RS485总线上。从机应答后将相应的数据传至RS485总线上,再通过RS485收发器转成TTL电平后由单片机STC11F02E接收。STC11F02E接收完从机传来的全部数据后将串口引脚重新切换至P3.0和P3.1引脚,再通过MAX232电平转换芯片传送到PC机的RS232串口上去,使PC机接收从机传来的数据。整个数据传输过程就这样反复地进行。[page]

一般的RS485总线的多机通信方式是半双工方式,也就是发送和接收不是同时进行的,某一个终端设备在某一时刻只能是发送状态或者是接收状态,所以采用这种方法来设计RS232/RS485转换器是合理的。这里的关键问题是如何协调好P3.0、P3.1和P1.6、P1.7这两组串口引脚之间的切换,这可以通过单片机的程序设计来实现。

转换器的程序设计和通信协议设计

转换器的程序设计流程

转换器的整个程序的总体流程图如图5所示,主要包括程序初始化模块、主程序模块和串行口中断服务模块这三个部分。



图5 转换器程序流程图

程序初始化模块主要完成一些寄存器的初始化工作,包括看门狗设置、设定主机数据接收结束标志位MDE和从机数据接收结束标志位SDE、初始化串行口的连接引脚、初始化串行口设置寄存器和通信波特率、开启串口中断和总中断。主程序模块主要任务是完成串行口连接引脚之间的有序切换以及数据的发送。串行口中断服务模块的功能是完成数据的接收并置位标志位MDE和SDE。

由于每次通信结束之后单片机的UART模块的引脚总是和主机相连的,所以每次通信都必须是由主机发起的,从机总是处于接收状态,只有主机寻址到从机时,从机才可向主机发送数据。

RS485总线通信协议设计

为了保证数据传输的可靠性,必须规定好RS485总线主从式通信的通信协议。

该转换器采用的通信协议在传送每个字节数据时共发送的数据位有10位和11位两种,具体采用哪种通信方式可以人为进行设置。通信数据以信息帧的格式发送信息,每一信息帧由多个字节数据构成,包含地址域、功能域、数据域和CRC校验域这4个部分,如表1所示。其中地址域用于选择要进行通信的从机地址;功能域用于指示要执行的具体操作;数据域包含所要传输的数据;CRC校验域用于存放产生的CRC差错校验码,保证数据传输的正确性。

通信协议中规定的通信波特率有2400 bps 、4800 bps 、9600 bps 、19200 bps、38400bps和115200bps六种波特率,默认波特率为9600bps,可以根据实际需要通过软件设定。通信方式和波特率对应的设置参数存于单片机自带的EEPROM存储器中。

通信协议中定义的功能码及其功能如表2所示。将来如果需要扩展功能的话,还可以通过在应用程序中增加相应的功能码来增加系统对应的功能,使得系统功能扩展更加灵活。

表1 信息帧标准结构


表2 功能


转换器的试验结果

为了方便转换器的调试,这里采用10位的通信方式,即1位起始位、8位数据位和1位停止位。其中上位机为PC机,通信接口为RS232接口;下位机是以C8051F020单片机为核心设计的水泵综合参数测试平台的主控电路板,通信接口为RS485接口。调试软件使用串口调试助手。上位机和下位机的连接就是采用上面已经设计好的RS232/RS485转换器。这里设置从机地址为01H,采用前面设置的功能码进行调试。具体的调试结果如图6所示。

图6中第1行竖线左边的数据是PC机发送03H功能码读取从机外部数据存储器2345H地址单元开始的16个单元中的数据时从机返回的数据。主机发送的数据帧(16进制数)为:

01 03 23 45 10 db 12

图6中第1行竖线左边部分第1字节代表从机地址,第2字节代表从机返回的功能码,第3字节为从机发给主机的数据个数,后面的16个字节为所读取的单元的数据,最后2个字节为CRC16校验码。重复发送相同功能码时可以看到返回的数据是一样的,说明通信正常。

图6中第2行竖线右边的数据是PC机发送10H功能码对从机外部数据存储器2345H地址单元开始的16个单元写入数据时从机返回的数据。主机发送的数据帧(16进制数)为:

01 10 23 45 10 00 11 22 33 44 55 66 77 88 99 aa bb cc dd ee ff a7 21

图6中第2行竖线右边部分第1字节代表从机地址,第2字节代表从机返回的功能码,第3和第4字节分别为外部数据存储器地址的高字节和低字节,第5字节代表写入的数据个数,最后2个字节为CRC16校验码。重复发送相同功能码时可以看到返回的数据是一样的,说明此时通信也正常。在发送10H功能码之后再发送03H功能码进行检查,可以看出从机返回的外部数据存储器2345H地址单元开始的16个单元中的数据和刚才写入的数据是相同的,由此可知对应功能码的操作正确,而且通信也正常。



图6 采用串口调试助手对设计的转换器进行调试的结果

从上面的试验可以看出该转换器可以实现PC机和RS485总线的正常通信,说明所设计的转换器符合预期的要求。

结论

本文利用单片机STC11F02E的串口引脚可以在P3.0、P3.1引脚和P1.6、P1.7引脚之间随意切换的特性,设计了一个简单实用的RS232/RS485转换器。该转换器结构非常简单,只用到了三片常用集成芯片外加少量外围器件便可完成总体设计,极大地减小了体积和成本,而且转换器的电源还可以通过PC机的USB接口提供的5V电源来供电,可以省去另外配置电源的麻烦。
关键字:单片机  SRS232  RS485  转换器 引用地址:基于单片机的SRS232/RS485转换器设计方案

上一篇:stc12c5a60s2独立波特率器-串口
下一篇:太阳射电望远镜自动观测控制平台的研究与设计

推荐阅读最新更新时间:2024-03-16 14:05

提高RS485通信可靠性的设计方法
  RS-485接口芯片能担当起一种电平转化的角色,把TTL信号、COMS信号等转化为能在485总线上传输的差分信号,把接收到的485差分信号转化为MCU能够识别的TTL或COMS电平,在工业控制、仪器、仪表、多媒体网络、机电一体化产品等诸多领域得到了广泛应用。但在RS485通信中,常常会存在通信距离不远、通信质量差等问题。为提高RS485的通信质量,除了采用终端匹配的总线型结构外,在系统设计中通常要考虑以下几个问题。   1.故障保护   根据RS-485的标准规定,接收器的接收灵敏度为±200mV,这意味着当接收端的差分电压大于等于+200mV时,接收器输出为高电平,小于等于-200mV时输出为低电平,介于±200mV
[嵌入式]
51单片机系列(串口理解)
串口,通信方式的一种。串口的数据发送接受单位为字节,一个字节即为8位二进制数。对一个字节进行发送时,为一位一位的发送,先低位后高位。例如十进制的9,对其发送时,首先将其转化为二进制0000 1001。然后按照从低位到高位的发送顺序为1001 0000。当我们在示波器或是在Protues仿真中可以看到单片机的I/O口波形为 第一位为0(起始位),最后一位1(结束位)。总共有十位。 当单片机进行数据发送时,I/O口会发出上述的波形(中间的八位高低电平代表数据),每发送一个数据会有一个上述的波形在I/O口中出现。 当单片机进行数据接收时,I/O口也会有一个上述的波形出现,单片机对该波形进行读取,就可以读到数据。但问题来了,单
[单片机]
单片机实现智能家居的远程控制
  1 引言   随着科技的发展和人们生活水平的提高,人们对居住环境方便快捷的要求越来越高,智能家居系统应运而生。智能家居是现代电子技术、通讯技术及自动化技术相结合的产物。它能够实现对家电设备的自动控制和管理、对家庭的安全进行监测报警,能够为用户提供安全舒适、高效便利的生活环境。本文结合语音识别技术,利用SPCE061A 丰富的语音处理功能,在已有的电力线和电话线的基础上, 设计了一套智能家居系统, 该系统结构简单、功能完善并且具有较高的性价比。   2 系统架构   系统主要由主控制器、分控制器(89C51)、电话接口和电力线载波通信等几部分组成。本系统使用了大量的硬件电路来完成部分功能模块,其目的就是充分利用硬
[单片机]
<font color='red'>单片机</font>实现智能家居的远程控制
单片机的串口通信编程的总结
本次小结的主要目的是更加明确单片机的串口中断是如何发生的。即:是如何触发串口中断的发送功能的。在说明中我使用特殊的字体颜色来强调重点部分和注意事项。 程序一: 本程序是使用软件设置TI来实现串口中断的触发,如果在初始化函数中不增加 TI=1; 这条语句,那么是不会触发中断的 #include STC89C5X.h //包含51单片机的头文件 #define uint unsigned int #define uchar unsigned char /* 串口通讯接口定义 RXD-------P3.0 数据接收端 TXD-------P3.1 数据发送端 */ /*====================
[单片机]
电子车速里程表的单片机实现方案
1 概述     传统的汽车转速里程表的功能有两个,一是用指针指示汽车行驶的瞬时车速,二是用机械计数器记录汽车行驶的累计里程。现代汽车正向高速化方向发展,随着车速的提高,用软轴驱动的传统车速里程表受到前所未有的挑战,这是因为软轴在高速旋转时,由于受钢丝交变应力极限的限制而容易断裂,同时,软轴布置过长会出现形变过大或运动迟滞等现象,而且,对于不同的车型,转速里程表的安装位置也会受到软轴长度及弯曲度的限制。凡此种种,使得基于非接触式转速传感器的电子式转速里程表得以迅速发展。 2 里程累计实现原理     车速里程表的速比表示的是:车速里程表转轴(软轴)在汽车行驶一公里时所转过的转数。基于单片机的车速里程表采用霍尔型非接触式
[嵌入式]
ROHM开发出世界最小消耗电流180nA的DC/DC转换器
ROHM最新的Nano Energy技术助力纽扣电池实现10年驱动 <概要> 全球知名半导体制造商ROHM面向移动设备、可穿戴式设备及IoT设备等电池驱动的电子设备,开发出实现世界最小消耗电流的内置MOSFET的降压型DC/DC转换器*1)“BD70522GUL”。 “BD70522GUL”是旨在实现IoT领域的关键词“纽扣电池10年驱动”开发而成的超低功耗电源IC。在ROHM的垂直统合型生产体制下,利用凝聚“电路设计”、“布局”、“工艺”三大尖端模拟技术优势而独创的Nano Energy技术,实现了世界最小的消耗电流180nA(n为10的负9次幂)。这使无负载时(应用待机时)的电池驱动时间比普通产品长1.4倍※,有
[电源管理]
ROHM开发出世界最小消耗电流180nA的DC/DC<font color='red'>转换器</font>
PIC单片机低功耗的实现
  许多人说PIC 单片机 一大的优势就是低功耗,那我们就来讨论,讨论低功耗的实现。   1,睡眠(sleep)   睡眠方式是我们最常用的一种方式来降低功耗,但睡眠期间单片机不能做任何的事情。对于那些没事情就睡着,有事情就做一下的情况睡眠无疑是功耗最低的处理方式。   比如:   睡眠+ I/O电平变化中断唤醒 当按键没按下时,单片机睡眠,当按键按下后,执行相应的工作。   睡眠+数据接收中断唤醒 这样单片机就可以再没有接收到数据时候进入睡眠状态,接收到数据的时候就唤醒然后处理数据。当然首先单片机要有相关的外设比如SPI ,I2C,USART,等这些支持这些通讯的模块。   睡眠+看门狗唤醒 这个可以用在需要定时唤醒
[单片机]
基于单片机和PWM控制方法调速实现无刷控制器检测设计
引言 伴随着城市化进程,人们生活的交通距离不断扩大,代替燃油汽车和自行车的电动车的普及大幅度的提高了电力资源的利用效率,促进了国民经济的健康发展。电动自行车以电力作动力,骑行中不产生污染,无损于空气质量。从改善人们的出行方式、保护环境和经济条件许可情况等因素综合来看,电动自行车目前乃至今后都有着广阔的发展空间。电动自行车所用直流电机分为有刷电机和无刷电机两种。其中有刷电机控制较简单。但其易磨损的电刷带来维修保养工作量相对较大、使用寿命相对较短等缺点。而直流无刷电机本身没有易磨损部件,电机寿命长,维修保养工作量小。但直流无刷电机采用电子换向原理工作,其控制过程比有刷电机复杂得多,因此对控制器质量的要求也高得多。 目前电动自行车采
[单片机]
基于<font color='red'>单片机</font>和PWM控制方法调速实现无刷控制器检测设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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