利用STC11F02E的RS232/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转换器。
整个转换器的总体硬件电路图如图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机接收从机传来的数据。整个数据传输过程就这样反复地进行。
一般的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电源来供电,可以省去另外配置电源的麻烦。
该转换器已成功应用在所设计的水泵综合参数测试平台上,实际试验结果表明该转换器运行稳定可靠,可应用于由PC机作为主机的RS485总线的主从式半双工通信系统当中
评论
查看更多