基于C8051F020的通用串口适配器的设计
1引言
串行通信的广泛应用可使各种传输设备有机地连成一体,能够安全可靠地进行数据交换和信息传递。但是由于各个设备传输信道上的信号不同,所应用的串口也各种各样,要完成众多设备相互之间的通信,就必然要涉及到各个设备之间的串口转换问题。
为了使计算机的RS-232|0">RS-232接口与各种不同的串口进行通信,从而测试或控制不同设备的工作状态,本文设计了一种通用串口适配器,适配器有4个对外接口,其中,1口连接控制计算机,2、3、4口连接不同标准串口的通信设备,如图1所示。
2 硬件设计
为了实现对适配器的自动控制以及扩展其他接口,采用了C8051F020单片机。适配器选用了C8051F020微处理器、MAX4534电子模拟开关、MAX232电平转换器以及RS-485/RS-422信号转换器MAX491等。
整个系统以C8051F020为核心,原理框图如图2所示。通过串口1控制从上位机串口发送的数据的接收、存储和判别,然后通过串口2控制电子模拟开关,使其内部的模拟开关接通相应的串口,最后实现计算机与各个串口的通信。
2.1 与上位机通信电路
C8051F020引脚的信号电平为TTL类型,而PC机串口的异步串行通信基于RS-232标准。两者通信信号的逻辑电平不一致,必须进行信号电平转换。因此,选用Maxim公司的MAX232实现TTL电平与RS-232电平的双向转换。
MAX232包含两路接收和驱动器,适用于各种EIA-232C和V.28/V.24的通信接口。该器件内置一个电源电压转换器,可将5 V电压转换成RS-232C输出电平所需的±10 V电压。所以,采用此器件的串行通信系统只需单一的+5 V电源。
串口通信的RS-232通信距离以不超过12 m为宜。接口采用9针串口DB9,串口传输数据只要有接收数据引脚和发送引脚就可实现。
2.2 模拟开关控制电路
该控制电路主要由MAX4534(一对四)完成。地址端A0和A1与单片机I/O端口相连,开关1、2、3、4分别与各测试设备的串口相连,MAX4534的内部连接逻辑如图3所示。
当上位机实现与单片机的握手后,若与RS-422口通信。则需先发送一个检测信号TEST,该信号经MAX232电平转换后,送至单片机C8051F020,单片机接收到信号后,通过其I/O端口P6.0和P6.1的输出状态分别控制开关MAX4534的地址端A0和A1。若A0和A1均为0,则接通开关NO1,如表1所示,使检测电路的MAX491接收端处于导通状态,从而形成通路。此时单片机回发一个通路信号给上位机,当上位机接收到通路信号后,MCU的串口TXD端就可自由发送数据,从设备发来的回应信号也可以被MCU正常接收,从而完成整个通信过程.
2.3 RS-232(TTL电平)接口电路设计
因为从单片机引脚出来的信号为TTL电平,所以TTL电平的RS-232接口无需进行电平转换,可以直接通过模拟开关MAX4534与串口相连。
对于五线RS-232接口,由于C8051F020串口只有两根线连接RXD和TXD,RTS和CTS通过其两个I/O口实现。
2.4 RS-422接口的转换电路设计
RS-232串行接口属于个人计算机(PC)及电信应用领域中最为成功的串行数据标准;而RS-422串行接口则是工业应用领域中最为成功的串行数据标准。上述这些数据标准并不直接相互兼容。RS-422标准全称为"平衡电压数字接口电路的电气特性",它定义了接口电路的特性,与RS-232不同,RS-422数据信号采用差分传输方式,也称作平衡传输,它使用一对儿双绞线,将其中一条线路定义为A,另一条线路定义为B。通常情况下,发送驱动器A、B之间的正电平为+2 V~+6 V,是一个逻辑状态;负电平为-2 V~-6 V。RS-422的最大传输距离为4000英尺(约1 219 m),最大传输速率为10 Mb/s,最多可接10个节点,具有单独的发送和接收通道,故无需控制数据方向。
RS-232与RS-422之间的电平转换由Maxim公司的差分平衡型收发器MAX491实现,它适用于RS-422/RS-485通信标准,内部包含1个发送驱动器和1个接收器。RE为接收器输入允许端,接地;DE为驱动器输出允许端,接+5 V电压。单片机控制信号使MAX491接收端自动禁能,以免整个有线通信环路形成正反馈造成自激,而MAX491发送端则自由导通,控制信号正常传输。
3 软件编程
软件程序主要包括上位机可视化界面程序和单片机与PC串口通信程序。单片机采用C51语言编程,上位机的操作界面程序采用C++Builder进行可视化编程。
3.1 上位机可视化界面编程
以C++Builder为开发工具,利用串行通信控件MSComm进行编程,实现对单片机的控制。本通信系统中规定的字符格式为:每一帧的数据占10位,其中,1位起始位,8位数据位,1位停止位,无奇偶校验位。中间的8位数据位即为有效的通信传输字节。为了增强通信的可靠性、减少通信的误码率,双方的波特率设置为4 800 b/s,以较低速度进行通信。软件握手协议规定如下:PC机发送握手信号0xFF给单片机,单片机接收到的上位机数据若为握手信号0xFF,则回送一个正确信号060606给PC机,表示握手成功,PC机即可发送数据包,单片机经校验正确后将该数据包直接存储接收,并从中分解有效的数据信息;若单片机接收到的上位机数据不是握手信号,则回送一个错误信号151515,并继续等待。人机界面如图4所示。
- 通用异步串口扩展芯片GM8123/25的原理和应用(11-11)
- 高效FIFO串口双机通信在ARM7上的实现(06-20)
- 基于VxWorks的多路高速串口的通信方法设计(08-14)
- 嵌入式系统高效多串口中断源的实现(08-20)
- 基于单片机AT89C51SND1C的MP3方案设计(07-24)
- 基于ARM-Linux的Modbus串口服务器设计(11-08)