1 概述 计算机通信是指计算机与外界的信息传输,既包括计算机与计算机之间的传输,也包括计算机与外部设备,如U盘、打印机和磁盘等设备之间的传输。在通信领域内,根据每次传送的数据位数,计算机通信可分为:并行通信和串行通信。 串行通信是指计算机主机与外设之间以及主机系统与主机系统之间数据的串行传送。使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个固定的时间长度。其只需要少数几条线就可以在系统间交换信息,特别适用于计算机与计算机、计算机与外设之间的远距离通信。 2 通信基础 2.1 串行通信与并行通信 串行通信是通过一根数据线,一个bit一个bit地传输数据,且每个bit表示的值为0或1,信号线分为RXD(数据接收)、TXD(数据发送)两根如图 1所示。具有速度慢、信号线少、成本低的特点,适合远距离、低速率的数据传输。常见的串行通信应用包括USB、SATA、以太网口、COM(RS232/RS485/RS422)等。 图 1 串行通信 并行通信是通过数据线,一次传输和接收多个bit数据,如图 2所示,每个bit的数据都有对应的数据线进行传输,传输一次即可完成以个8个数据bit即一个Byte(字节)的数据以及1个校验bit数据,实际应用中,有可能不是8bit数据,而是更多bit数据,如32bit、64bit等,但原理都是相同的,计算机内部的总线结构(PCI总线、PCIe总线、以及以前的并口硬盘、光驱等)就是典型的并行通信。并行通信具有传输效率高、使用信号线多、成本高、信号间电容会引起串扰,不适合远距离传输,一般用于外设与计算机终端设备间近距离、大量和快速的传输。 图 2 并行通信 2.2 串行通信工作方式 计算机是以并行的方式来处理数据的,通过串行发送数据时候,先由具有几位(8/16/32/64位)总线的计算机内的发送设备,将几位(8/16/32/64位)并行数据经并——串转换硬件转换成串行方式,再逐位经数据线到达接收站的设备中,并在接收端将数据从串行方式重新转换成并行方式,以供接收方使用,如图 3所示。串行通信时,数据的发送与接收需要时钟进行控制。 图 3 计算机数据传输基本原理 根据串行通信时,收发双方的始终是否相同,可以分为:异步通信和同步通信。 2.3 异步通信 如图 4所示,发送与接收方各自配置有独立的时钟进行控制,叫异步串行通信。 图 4 异步串行通信 异步串行通信时,数据是以数据帧(每个数据帧传送一个字符)来进行传输的,异步通信数据帧结构如下图 5所示。 图 5 异步通信数据帧格式 以字符为单位进行信息传送,每次传输一个字符即一个数据帧; 每个字符都是以起始位开始("0"),以停止位("1",停止位为1~2位)结束; 校验位分为奇校验(数据位加上这一位后,"1"的个数为奇数)与偶校验(数据位加上这一位后,"1"的个数为偶数),在通信过程中也可以不使用校验位; 字符之间为空闲位,没有严格的定时要求,因此,空闲位可以为多位; 案例1:某计算机采用异步串行通信方式,数据格式为:8位数据位,奇校验,2位停止位。试画出传送字符"A"时通信线路上的波形。 字符"A"的ASCLL码为"65H"换成二进制位0110 0101,从低位开始传输1010 0110。加上1位起始位"0",后加奇校验位"1"(由于数据位"1"的个数为4个,偶数个,传输采用奇校验,因此需要填"1",如果采用偶校验则填"0"),再加上2位停止位"11"。整个数据帧为0 1010 0110 1 11,波形如下 图 6 "A"数据帧 异步通信中,在异步通行中有两个比较重要的指标:字符帧格式和波特率。数据通常以字符或者字节为单位组成字符帧传送。字符帧由发送端逐帧发送,通过传输线被接收设备逐帧接收。 发送端和接收端可以由各自的时钟来控制数据的发送和接收,这两个时钟源彼此独立,互不同步。接收端检测到传输线上发送过来的低电平逻辑"0"(即字符帧起始位)时,确定发送端已开始发送数据,每当接收端收到字符帧中的停止位时,就知道一帧字符已经发送完毕。 2.4 同步通信 如图 7所示,发送与接收由同一个时钟控制,叫同步串行通信。 图 7 同步串行通信 同步通信是一种连续串行传送数据的通信方式, 一次通信只传送一帧信息。这里的信息帧与异步通信中的字符帧不同,通常含有若干个数据字符。 它们均由同步字符、数据字符和校验字符(CRC)组成。 其中同步字符位于帧开头,用于确认数据字符的开始。数据字符在同步字符之后,个数没有限制,由所需传输的数据块长度来决定;校验字符有 1 到 2 个,用于接收端对接收到的字符序列进行正确性的校验。 同步,通信的缺点是要求发送时钟和接收时钟保持严格的同步。 同步串行通信不使用起始位与停止位来标识字符传输的开始和结束,而使用特定的帧头与帧尾,以固定的时钟节拍来发送数据信号,每个字符间的时间间隔是相等的,而且每个字符中各相邻位代码间的时间间隔也是固定的,每个字符也可以对应5~8位。同步串行通信现阶段主要包括两类通信种类: 1)面向字符(Character Oriented)的同步通信: 一个数据帧由若干个字符组成(IBM的BSC协议); 图 8 BSC协议数据帧格式 该协议规定了10个特殊字符(称为控制字符)作为信息传输的标志,其格式如图 8所示: SYN:同步字符(Synchronous character),每帧可加1个(单同步)或2个(双同步)同步字符; SOH:标题开始(Start of Header); 标题:Header,包含源地址(发送方地址)、目的地址(接收方地址)、路由指示; STX:正文开始(Start of Text); 数据块:正文(Text),由多个字符组成; ETB:块传输结束(end of transmission block),标识本数据块结束; ETX:全文结束(end of text),(全文分为若干块传输); 块校验:对从SOH开始; 直到ETB/ETX字段的检验码; 2)面向比特(Bit-Oriented)的同步通信: 一个数据帧由任意位bit组成,主要用于二进制的传输;典型的面向位的同步协议如国际标准化组织(ISO)的高级数据链路控制规程HDLC和IBM的同步数据链路控制规程SDLC。 图 9 SDLC数据格式 面向比特时,将数据块看作数据流, F场:开始于结束标志;用序列01111110作为开始和结束标志。为了避免在数据流中出现序列01111110时引起的混乱,发送方总是在其发送的数据流中每出现5个连续的"1"就插入一个附加的"0";接收方则每检测到5个连续的"1"并且其后有一个"0"时,就删除该"0"。 A场:地址,规定接收方可为 8的整倍位。接收方检查每个地址字节第 1位,如果为 "0" ,则后边跟着另一个地址字节。若为 "1" ,则该字节为最后一个地址。 C场:控制场。指示信息场的类型,8位或16位。若第1字节的第1位为0,则还有第2个字节也是控制场。 I场:信息场。要传送的数据 FC场:帧校验场。16位循环冗余校验码CRC。除F场和自动插入的"0"位外,均参加CRC计算。 2.5 通信模式 串行通信通常是在两个站点(点对点)之间进行数据传输,按照数据流的传输方向课分成三种传送模式。 单工通信模式 使用一根数据线,只允许在一个方向上传送数据,主要表现在一端只发送,另一段只能接受,如我们的电视机,以及我们的远程控制(门禁、智能开关等)。 图 10 单工通信 半双工方式 使用同一根数据线,即可发送数据又可接收数据,但同一时刻只能进行一个方向的传送,如图 11所示。半双工通信每端需要一个收/发切换电子开关,在切换时,也会产生延迟。如我们的对讲机、USB、打印机串口外设等。 图 11 半双工通信 全双工方式 在两个站点之间传输数据中,数据的发送和接收分别在两根数据线上同时进行,通信双方都能在同一时刻进行数据的发送和接收操作如图 12所示。通常在交互式应用、远程检测控制场景。如电话通信、上网(登录某个网站,进行上传、下载文件)、两台计算机通过网线传送文件电影等。 图 12 全双工通信 异步通信和同步通信的比较 异步通信简单,双方时钟可允许一定误差。同步通信较复杂,双方时钟的允许误差较小; 异步通信只适用于点←→点,同步通信可用于点←→多; 通信效率:异步通信低,同步通信高。 2.6 传输速率 传输速率是指每秒钟传送的二进制位数,通常称为波特率(Band Rate)。 即:1波特 = 1bit/s (位/秒) 国际上规定了标准波特率系列,最常用的标准波特率是:110、300、600、1200、l800、2400、4800、9600、115200、19200波特等。 3 RS232串行接口标准 3.1 RS232串口简介 RS232串口是美国电子工业协会EIA于1962年发布,并于1969年修订的串行接口标准,已成为国际上通用的标准,标准代号EIA-RS-232C。RS是英文"推荐标准"的缩写,232为标识号,C表示修改次数。该标准定义了DTE(Data Terminal Equipment,数据终端设备)与DCE(Data Communication Equipment,数据通信设备)两者间按串行传输信息的接口的机械特性、电气特性、功能特性。标准规定采用DB25连接器进行通信连接,IBM将RS232简化成DB9连接器,DB9连接器由于使用更简单,得到更普遍的应用。 标准规定DB25或DB9连接器公头做为DTE设备端接口插座DB25或DB9连接器母头做为DCE设备端接口插座,如图 13所示。 图13 连接器示意图 3.2 机械特性 EIA-RS-232C标准对针连接器的引脚定义做出了规定,如图 14所示。 图 14 针连接器(公头)引脚定义 3.3 功能特性 RS-232C最初设计为计算机(称为数据终端设备DTE--Data Terminal Equipment和数据通信设备DCE--Data Communication Equipment(如MODEM)的连接,如图 15所示。 图 15 通过调制解调器连接 通过MODEM接入电话网络,可连接世界上任何接入电话网络的主机,该种网络连接方法在90年代较为常见,作者在08年在某军工企业工作时候,也曾使用该网络连接方法,与军方某研究所人员进行文件传输,这种点对点的拨号连接,可不经过第三方服务器即可完成文件传输,相关方法步骤如下: 1)通过串口线把台式机上的COM1串口与串口拨号猫(某宝上搜寻56K拨号猫应能找到); 2)把座机的电话线拔掉,插到拨号猫的电话口上,对端计算机也照此连接; 3)线路连接好后,可通过超级终端软件进行拨号连接,打开超级终端,在"待拨电话详细资料"中选择国家代码为中国(86),输入朋友的电话号码和区号(如果同城就直无须国家代码与区号);"确定"后弹出一个"连接"对话框,这时不用理它,单击"取消",这样"超级终端"的配置工作就算完成了。当然,另一台远程机器也必须进行同样的配置,只不过他填的是我的区号与电话号码。 RS-232C标准规定的数据传输速率为每秒50、75、 100、150、300、600、1200、2400、4800、9600、19200波特 。 现阶段,通过电话网络进行拨号网络连接的应用已很少见,工业引用领域,更多常见的应用场景的是近距离(<15m)DTE设备与DTE设备直连,如计算机与计算机、计算机与网络设备(路由器、交换机等)管理口连接等。在应用时,则需要把收发信号进行交叉连接,如图 16所示。 图 16 DTE设备与DTE设备连接 3.4 电气特性 EIA-RS-232C标准规定: 逻辑"1"信号,电平在 –3V ~ -15V 之间; 逻辑"0"信号,电平在 +3V ~ +15V 之间; 在实际应用中,常采用±12 V或±15V。RS-232C可承受±25 V的信号电压。另外,要注意RS-232C数据线TXD和RXD使用负逻辑,即高电平表示逻辑0,用符号SPACE(空号)表示;低电平表示逻辑1,用符号MARK(传号)表示。其它控制线均为正逻辑,高电平有效,为ON状态;低电平无效,为OFF状态。 在串口电路设计时,由于发送器/接收器芯片使用TTL电平,但RS-232C却使用上述EIA电平,所以为满足EIA电气特性,必须在发送器/接收器与RS-232C接口之间使用转换器件。如SN75150、 MC1488等芯片完成TTL电平到EIA电平的转换,而SN75154、MCI489等芯片可完成EIA电平到TTL电平的转换。 电平转换器不仅可以由晶体管分立元件构成,也可以直接使用集成电路。目前美信的MAX232芯片使用较多,该芯片使用单端+5V电源供电实现电平转换。