第七章单片机的串行通信.docx
《第七章单片机的串行通信.docx》由会员分享,可在线阅读,更多相关《第七章单片机的串行通信.docx(41页珍藏版)》请在冰点文库上搜索。
第七章单片机的串行通信
第七章单片机的串行通信
本章基本要求:
:
通过本章的学习了解80C51单片机串行接口结构;掌握80C51单片机串行接口的使用方法;建立起计算机串行通信应用极为广泛的概念.重点理解80C51单片机串行口接收和发送数据的实现方法;熟悉80C51单片机串行通信的格式规定及串行通信的程序设计思路。
.
7.1串行通信基础
计算机通信是指计算机技术与通信技术相结合,完成计算机与其外界的数据传送.随着多外设备、多机系统的广泛应用和计算机网络的普及,它们间的通信功能显得愈来愈重要。
通信有串行通信和并行通信两种方式。
串行通信是将数据字节分成一位一位的形式在一条传输线上逐个地传送(故也称串行数据传送)。
如图6.2所示。
串行通信时,数据发送设备先将数据代码由并行形式转换成串行形式,然后一位一位地放在传输线上进行传送。
数据接收设备将接收到的串行形式数据转换成并行形式进行存储或处理。
串行通信的特点是:
数据传送按位顺序进行,传输线少(最少只需1根即可完成传输),成本低速度慢,且可以利用电话网等现成的设备,但数据的传送控制比并行通信复杂。
易远距离传送。
计算机与外界的数据传送大多数是串行的,其传送的距离可以从几米到几千公里。
并行通信是将数据字节的各位用多条数据线同时进行传送(也称为并行数据传送),如图6.1所示。
并行通信除了数据线外还有通信联络控制线。
数据发送方在发送数据前,要询问数据接收方是否“准备就绪”。
数据接收方收到数据后,要向数据发送方回送数据已经接收到的“应答”信号。
并行通信的特点是:
各数据位同时传送,传送速度快,效率高。
控制简单,由于传输线较多(并行数据传送有多少数据位就要多少根数据线),远距离传送成本高。
并行数据传送的距离通常小于30米,计算机内部的数据传送都是并行的。
通常所提到的计算机通信都是指计算机与外界间通信,即串行通信。
7.1.1串行通信的基本原理
串行通信的数据信息,控制信息要按位在一条线上依次传送,为了能识别数据和控制信息,实现正确传送,收发双方要事先约定共同遵守的通信协议,通信协议约定的内容包括数据格式、同步方式、传送速率、校验方式等。
按收发双方的时钟情况,串行通信又分为异步和同步两种方式。
在单片机中使用的串行通信都是异步方式,因此本章重点介绍异步通信。
串行通信的分类:
1、异步通信
(1)异步串行通信的帧格式
异步通信是指通信的发送与接收设备使用各自的时钟控制数据的发送和接收过程。
但要求发送和接收设备的时钟尽可能一致,使双方收发协调。
异步通信示意图如图6.3所示。
异步通信是以字符(帧)为单位进行传输,即一个字符一个字符地传送。
图6.4是一个字符的异步串行通信格式。
·位时间:
格式中的时间宽度。
·帧(frame)。
从起始位开始到停止位结束的全部内容称为一帧,帧是一个字符的完整通信格式,因此也就是把串行通信的字符格式称为帧格式。
异步串行通信是一帧接一帧进行的,传送可以是连续的,也可以是不连续的。
连续异步串行通信是在一个字符格式的停止位之后立即发送下一个字符的起始位,开始下一个新的字符传送,即帧与帧之间是连续的。
而断续的异步串行通信,则是一帧结束之后并不一定接着传送下一个字符,不传送时维持数据线“1”的空闭状态。
其后,新的字符传送可在任意时刻开始,并不要求整数信的位时间。
即字符间的时间间隙是任意的(字符是异步的),但字符中的各位是以固定的时间传送的各位间的距离均为“位时间”的整数信。
(位是同步的)。
为了实现异步传输字符的同步,采用的办法是使传送的每一个字符都以起始位0开始,以停止位1结束。
这样,传送的每一个字符都用起始位来进行收发双方的同步。
停止位和间隙作为时钟频率偏差的缓冲,即使双方时钟频率略有偏差,总的数据流也不会因偏差的积累而导致数据错位。
异步通信的每帧数据由4部分组成:
·起始位:
发送器是通过发送起始位而开始一个字符的传送。
占一位。
·数据位:
起始位之后就传送数据位,在数据位中,低位在前(左),高位在后(右)。
由于字符编码方式的不同,数据位占5-8位。
·奇偶校验位:
用于对字符传送作正确性检查,因此奇偶校验位是可选择的,共有3种可能,即:
奇校验、偶校验和无校验。
由用户根据需要选定。
占0和1位。
·停止位:
停止位在最后,用以标志一个字符传送的结束。
占1、1.5或2位。
在应用中根据需要确定。
图中给出的是7位数据位、1位奇偶校验位和1位停止位,加上固定的1位起始位,共10位组成一个传输字符帧。
强调字符间允许有不定长的空闲位,这是异步通信的由来。
异步通信过程:
传送开始后,接收设备不断检测传输线,看是否有起始位到来。
当收到一系列的1(空闲位或停止位)之后,检测到一个0,说明起始位出现,就开始接收所规定的数据位和奇偶校验位以及停止位。
经过处理将停止位去掉,把数据位拼成一个并行字节,并且经校验无误才算正确地接收到一个字符,一个字符接收完毕后,接收设备又继续测试传输线,监视0电平的出现(下个字符开始),直到全部数据接收完毕。
(2)异步通信的信号形式
近程的串形通信和远程的串行通信形式上有所不同。
·近程通信
近程通信又称本地通信。
近程通信采用数字信号直接传送形式,就是在传送过程中不改变原数据代码的波形和频率。
这种数据传送方式称之为基带传送方式。
图6.5就是两台计算机近程串行通信的连接和代码波形图。
可以看出,计算机内部的数据信息是TTL标准,而通信线上的数据信号却是RS-232C电平标准。
然而,尽管电平标准(电平高低)不同,但数据信号的波形和频率并没有改变。
近程串行通信只需用传输线把两端的接口电路直接连起来即可实现,方便又经济。
·远程通信
在远程通信,应使用专用通信电缆,但出于经济考虑通常也借用现存的公用电话作为传输线。
可是电话线是音频模拟信号,对计算机通信的二进制数字信号传输是不合适的,为此在传送时需对二进制数据进行调制,使之转为模拟信号在电话网上传输。
在接收时,需进行解调以将模拟信号还原成数字信号。
信号形式的转变通常使用频率调制法,即以不同频率的载波信号代表数字信号的两种不同电平状态。
即为频带传送方式。
为次,在串行通信的发送端应该有调制器(modulator)把电平信号调制频率信号,而在接收端则应用解调器(Demodulator)把频率信号解调为电平信号。
由于远程串行通信多采用双工方式,即通信双方都有发送和接收功能。
因此通信端都应设置调制器和解调器。
并把两者合在一起称之为调制解调器(modem)。
如图6.6所示。
在图中,调制器和解调器是进行数据通信所需的设备,因此把它叫做数据通信设备(DCE)。
计算机是终端设备(DTE)。
电话线本来是用于传送声音(模拟信号)的,人讲话的声音频率范围大约在300-3400Hz之间。
因此使用电话线进行串行数据传送,其调频信号的频率也应在此范围只内。
通常以1270Hz或2225Hz的频率信号代表RS-232C标准的mark(=1)电平,以1070Hz或2025Hz的频率信号代表space(=0)电平。
对于半双工方式,即用一条传输线完成两个方向的数据传送。
发送断串行接口输出的是RS-232C标准电平信号,由调制器把电平信号分别调制成1270Hz和1070Hz的调频信号后再送上电话线进行远程传输。
在接收端,由解调器把调频信号解调为RS-232C标准的电平信号,再经串行接口电路调制为TTL电平信号。
另一个方向的数据传输,其过程完全相同,所不同的只是调频信号的频率分别为2225Hz和2025Hz。
异步串行通信的特点是:
不要求收发双方时钟的严格一致,实现容易,设备开销较少,但每个字符要附加2-3位用于起止位,各帧之间还有间隔,因此传输效率不高。
2、同步通信
同步通信是按数据数据块传送的。
把传送的字符顺序地连接起来,组成数据块,在数据块前面加上特殊的同步字符,作为数据块的起始符号,由收/发一致的同步时钟在发送端发出,接收端接收到同步字符后,开始接收数据块,使收/发双方同步,同步通信中的字符格式如图所示。
在数据块后面加上校验字符,用于校验通信中的错误。
要求发送时钟和接收时钟必须保持严格同步。
发送时先发同步字符,接收端接收到同步一字符后,开始接收串行数据字符。
发送端在发送数据流过程中,若出现没有准备好数据的情况,使用同步字符来填充,一直到下一字符准备好为止。
同步字符是一个或二个8位二进制码,可以采用统一标准格式,也可以由用户自行约定。
同步通信的收/发双方必须采用相同的同步字符。
在同步通信中,一次通信可以传送若干个数据字符,每个数据字符可选5-8个数据位和一个奇偶校验位。
每个字符之间不包含起始位和停止位,因而传送数据容量大,传送速率高,通常可达56000bps或更高。
同步通信的特点是:
传输的速率较高,但实现的硬件设备比异步通信复杂。
二、串行通信的数据通信形式
串形通信依数据传输方向及时间关系可分为:
单工、半双工和全双工。
如图6.7所示。
(a)单工(b)半双工
(c)全双工
图三种传输方向
1、单工(simplex)形式
单工是指数据传输仅能沿一个方向,不能实现反向传输。
即通信双方中一方固定为收送端,另一方则固定为接收端。
只需一条数据线传输。
如图6.8(a)所示。
例如计算机与打印机之间的串行通信就是单工形式,因为只能有计算机向打印机传送数据,而不可能有相反方向的数据传送。
2、半双工
半双工是指数据传输可以沿两个方向,但需要分时进行。
即任何时刻只能由其中的一方发送数据,另一方接收数据。
因此半双工形式既可以使用一条数据线,也可以使用两条数据线。
如图6.8(b)所示。
3、全双工
全双工是指数据可以同时进行双向传输。
即可以同时发送和接收数据,因此全双工形式的串行通信需两条数据线。
如图6.8(c)。
三、串行通信的传送速率
数据的传输速率可以用比特率表示。
比特率是每秒钟传输二进制代码的位数,单位是:
位/秒(bps)。
如每秒钟传送240个字符,而每个字符格式包含10位(1个起始位、1个停止位、8个数据位),这时的比特率为:
10位×240个/秒=2400bps
应注意的是,在数据通信中常用波特率表示每秒钟调制信号变化的次数,单位是:
波特(Baud)。
波特率和比特率不总是相同的,如每个信号(码元)携带1个比特的信息,比特率和波特率就相同。
如1个信号(码元)携带2个比特的信息,则比特率就是波特率的2倍。
对于将数字信号1或0直接用两种不同电压表示的所谓基带传输,比特率和波特率是相同的。
所以,也经常用波特率表示数据的传输速率。
在串行通信中,格式位的发送和接收分别由发送时钟脉冲和接收时钟脉冲进行定时控制。
时钟频率高,则波特率也高,通信速度就快,反之时钟频率低,则波特率也低,通信速度就慢。
串行通信可以使用的标准波特率在RS-232C标准中已有规定,使用时应根据速度需要。
线路质量及设备情况等因素选定。
波特率选定之后,对设计者来说,就是如何深刻满足波特率要求的发送时钟脉冲和接收时钟脉冲。
另外,串行接口或终端直接传送串行信息位流的最大距离与传输速率及传输线的电气特性有关。
当传输线使用每0.3m(约1英尺)有50PF电容的非平衡屏蔽双绞线时,传输距离随传输速率的增加而减小。
当比特率超过1000bps时,最大传输距离迅速下降,如9600bps时最大距离下降到只有76m。
四、串行通信的错误校验
在通信过程中往往要对数据传送的正确与否进行校验。
校验是保证准确无误传输数据的关键。
常用的校验方法有奇偶校验、代码和校验及循环冗余校验。
1、奇偶校验
在发送数据时,数据位尾随的1位为奇偶校验位(1或0)。
奇校验时,数据中“1”的个数与校验位“1”的个数之和应为奇数;偶校验时,数据中“1”的个数与校验位“1”的个数之和应为偶数。
接收字符时,对“1”的个数进行校验,若发现不一致,则说明传输数据过程中出现了差错。
2、代码和校验
代码和校验是发送方将所发数据块求和(或各字节异或),产生一个字节的校验字符(校验和)附加到数据块末尾。
接收方接收数据同时对数据块(除校验字节外)求和(或各字节异或),将所得的结果与发送方的“校验和”进行比较,相符则无差错,否则即认为传送过程中出现了差错。
3、循环冗余校验
这种校验是通过某种数学运算实现有效信息与校验位之间的循环校验,常用于对磁盘信息的传输、存储区的完整性校验等。
这种校验方法纠错能力强,广泛应用于同步通信中。
7.1.2串行通信的接口标准
在单片机应用系统中,数据通信主要采用异步串行通信。
在设计通信接口时,必须根据需要选择标准接口,并考虑传输介质、电平转换等问题。
采用标准接口后,能够方便地把单片机和外设、测量仪器等有机地连接起来,从而构成一个测控系统。
例如当需要单片机和PC机通信时,通常采用RS-232标准进行电平转换。
异步串行通信接口主要有三类:
RS-232接口;RS-449、RS-422和RS-485接口以及20mA电流环。
下面详细介绍三种接口标准。
一、RS-232C接口
RS-232是EIA(美国电子工业协会)于1962年制定的标准。
RS表示EIA的“推荐标准”,232为标准编号。
1969年修订为RS-232C,1987年修订为EIA-232D,1991年修订为EIA-232E,1997年又修订为EIA-232F。
由于修改不多,所以人们习惯于早期的名字“RS-232C”。
RS-232C实际上是串行通信的总线标准。
现已在全世界的范围广泛采用。
RS-232C定义了数据终端设备(DTE)与数据通信设备(DCE)之间的物理接口标准。
如图6.8所示。
接口标准包括机械特性和电气特性等几个方面的内容。
1、机械特性
RS-232C接口规定使用25针连接器,连接器的尺寸及每个插针的排列位置都有明确的定义。
在一般的应用中并不一定用到RS-232C标准的全部信号线,所以,在实际应用中常常使用9针连接器替代25针连接器。
连接器引脚定义如图6.9所示。
图中所示为阳头定义,通常用于计算机侧,对应的阴头用于连接线侧。
2、功能特性
RS-232C标准定义了25条信号线,各位信号线(引脚)功能定义如表6-1所示。
引脚
序号
功能定义(缩写符)
信号
方向
引脚
序号
功能定义(缩写符)
信号
方向
1
屏蔽(保护)接地(PGND)
14
辅助通道发送数据(TXD)
DTE←DCE
2(3)
发送数据-串行输出(TXD)
DTE→DCE
15
发送时钟(TXC)
DTE←DCE
3
(2)
接收数据-串行输入(RXD)
DTE←DCE
16
辅助通道接收数据(RXD)
DTE←DCE
4(7)
请求发送(RTS)
DTE→DCE
17
接收时钟(RXC)
DTE←DCE
5(8)
允许发送(CTS)
DTE←DCE
18
未定义
6(6)
DEC准备就绪-数据建立就绪(DSR)
DTE←DCE
19
辅助通道请求发送(RTS)
DTE→DCE
7(5)
信号接地(SGND)
20(4)
DTE就绪-数据终端准备就绪(DTR)
DTE→DCE
8
(1)
载波检测(DCD)
DTE←DCE
21
信号质量检测
DTE←DCE
9
接收线路建立检测
22(9)
振铃指示(RI)
DTE←DCE
10
线路建立检测
23
数据信号速率选择器
DTE→DCE
11
未定义
24
发送时钟
DTE→DCE
12
辅助通道接收线信号检测(DCD)
DTE←DCE
25
未定义
13
辅助通道清除发送(CTS)
DTE←DCE
注:
引脚序号()内为9针非标准连接器的引脚号,也就是25脚中9个主要引脚。
DTE:
数据终端设备(如个人计算机)
DCE:
数据通信设备(如调制解调器)
3、电气特性
RS-232C采用负逻辑电平。
规定DC(-3V----15V)为逻辑1,DC(+3V---+15V)为逻辑0。
-3V---+3V为过度区,不作定义。
如图6.11所示。
应注意,RS-232C的逻辑电平与通常的TTL和MOS电平不兼容,为了实现与TTL或MOS电路的连接,要外加电平转换电路。
RS-232C发送方和接收方之间的信号线采用多芯信号线,要求多芯信号线的总负载电容不能超过2500pF。
通常RS-232C的传输距离为几十米,传输速率小于20Kbps。
4、RS-232C电平与TTL电平转换驱动电路
如上所述,80C51单片机串行接口与PC机的RS-232C接口不能直接对接,必须进行电平转换。
常见的TTL到RS-232C的电平转换器有MC1488、MC1489和MAXM232等芯片。
MC1488输入为TTL电平,输出为RS-232电平;MC1489输入为RS-232电平,输出为TTL电平。
MC1488的供电电压为±12V,MC1489的工电电压为+5V。
MC1488和MC1489的逻辑功能如图6.14所示。
MC1488和MC1489和RS-232电平转换如图6.15所示。
近来一些系统中,愈来愈多地采用了自升压电平转换器。
各厂商生产的此类芯片虽然不同,但原理类似,并可代换。
其主要功能是在单+5V电源下,有TTL信号输入到RS-232C输出的功能,也有RS-232C输入到TTL输出的功能。
如RS-232C双工发送器/接收器接口电路MAXM232,它能满足RS-232C的电气规范。
且仅需要+5V电源,内置电子泵电压转换器将+5V转换成-10V--+10V。
该芯片与TTL/CMOS电平兼容。
片内有2个发送器,2个接收器,使用比较方便。
5、采用RS-232C接口存在的问题
(1)传输距离短,传输速率低
RS-232C总线标准受电容允许值的约束,使用时传输距离一般不要超过15米(线路条件好时也不超过几十米)。
最高传送速率为20Kbps。
(2)有电平偏移
RS-232C总线标准要求收发双方共地。
通信距离较大时,收发双方的地电位差别较大,在信号地上将有比较大的地电流并产生压降。
(3)抗干扰能力差
RS-232C在电平转换时采用单端输入输出,在传输过程中当干扰和噪声混在正常的信号中。
为了提高信噪比,RS-232C总线标准不得不采用比较大的电压摆幅。
二、RS-422A、RS-485接口
1.RS-422A接口
针对RS-232C总线标准存在的问题,EIA协会制定了新的串行通信标准RS-422A。
它是平衡型电压数字接口的电气标准。
如图6.16所示。
RS-422A电路由发送器、平衡连接电缆、电缆终端负载、接收器等部分组成。
电路中规定只许有一个发送器,可有多个接收器。
RS-422A与RS-232C的主要区别是,收发双方的信号地不再共用。
另外,每个方向用于传输数据的是两条平衡导线。
所谓“平衡”是指输出驱动器为双端平衡驱动器。
如果其中一条线为逻辑“1”状态,另一条线就为逻辑“0”,比采用单端不平衡驱动对电压的放大倍数大一倍。
驱动器输出允许范围是±2--±6V。
差分电路能从地线干扰中拾取有效信号,差分接收器可以分辨200mV以上电位差。
若传输过程中混入了干扰和噪声,由于差分放大器的作用,可使干扰和噪声相互抵消。
因此可以避免或大大减弱地线干扰和电磁干扰的影响。
RS-422A与RS-232C相比信号传输距离远、速度快。
传输距离为120米时,传输速率可达到10Mbps;降低传输速率(90Kbps)时,传输距离可达1200米。
RS-422A与TTL电平转换常用的芯片为传输线驱动器SN75174或MC3487和传输线接收器SN75175或MC3486。
2.RS-485接口
RS-485是RS-422A的变型:
RS-422A用于全双工,而RS-485则用于半双工。
RS-485是一种多发送器标准,在通信线路上最多可以使用32对差分驱动器/接收器。
如果在一个网络中连接的设备超过32个,还可以使用中继器。
如图6.17所示。
RS-485的信号传输采用两线间的电压来表示逻辑1和逻辑0。
由于发送方需要两根传输线,接收方也需要两根传输线。
传输线采用差动信道,所以它的干扰抑制性极好,又因为它的阻抗低,无接地问题,所以传输距离可达1200米,传输速率可达1Mbps。
RS-485是一点对多点的通信接口,一般采用双绞线的结构。
普通的PC机一般不带RS485接口,因此要使用RS-232C/RS-485转换器。
对于单片机可以通过芯片MAX485来完成TTL/RS-485的电平转换。
在计算机和单片机组成的RS-485通信系统中,下位机由单片机系统组成,上位机为普通的PC机,负责监视下位机的运行状态,并对其状态信息进行集中处理,以图文方式显示下位机的工作状态以及工业现场被控设备的工作状况。
系统中各节点(包括上位机)的识别是通过设置不同的站地址来实现的。
三、20mA电流环路串行接口
20mA电流环是目前串行通信中广泛使用的一种接口电路。
电流环串行通信接口的最大优点是低阻传输线对电气噪声不敏感,而且易实现光电隔离,因此在长距离通信时要比RS-232C优越得多。
图是一个实用的20mA电流环接口电路。
它是一个加上光电隔离的电流环传送和接收电路。
在发送端,将TTL电平转换为环路电流信号,在接收端又转换成TTL电平。
上面我们介绍了三类接口,在计算机进行串行通信时,选择接口标准,必须注意以下两点:
1.通信速度和通信距离。
通常的标准串行接口,都要满足可靠传输的最大通信首都和传送距离指标,但这两个指标具有相关性,适当降低传输速度,可以提高通信距离,反之亦然。
例如,采用RS-232C标准进行单向数据传输时,最大的传输速度为20kb/s,最大的传输距离为15m。
而采用RS-422A标准时,最大的传输速度为10Mb/s,最大的传输距离为300m,适当降低传输速度,传输距离可达1200m。
2.抗干扰能力。
通常选择的标准接口,在保证不超过其使用范围时都有一定的抗干扰能力,以保证可靠的信号传输。
但在一些工业测控系统中,通信环境恶劣,因此在通信介质选择、接口标准选择时,要充分考虑抗干扰能力,并采取必要的抗干扰措施。
例如在长距离传输时,使用RS-422A标准,能有效地抑制共模信号干扰;使用20mA电流环技术,能大大降低对噪声的敏感程度。
在高噪声污染的环境中,通过使用光纤介质可减少噪声的干扰,通过光电隔离可以提高通信系统的安全性。
7.280C51单片机的串行接口
串行数据通信主要有两个技术问题。
一个是数据传送,另一个是数据转换。
数据传送主要解决传送标准、格式及工作方式等问题,这些内容已在前面叙述过了。
而数据转换是指数据的串并转换,因此在计算机中使用的数据都是并行数据,因此在发送端,要把并行数据转换成串行数据;而在接收到的串行数据转换成并行数据。
数据转换由串行接口电路实现,这种电路也称之为通用异步接收发送器(UART)。
它应包括发送器电路、接收器电路和控制电路等内容。
其主要功能是:
1、数据的串行化/反串行化
所谓串行化处理就是把并行数据格式变换为串行数据格式,即按帧格式要求把格式信息(起始位、奇偶位、停止位)插入,和数据位一起构成串行数据的位串,然后进行串行数据传送。
在UART中,完成数据串行化的电路属发送器。
所谓反串行化就是把串行数据格式变换为并行数据格式,即把帧中的格式信息漏除而保留数据位。
在UART中,实现数据反串行化处理的电路属接收器。
2、错误检验
错误检验的目的在于检验数据通信过程是否正确。
在串行通信中可能出现的错误包括奇偶错和帧错等。
但请注意,要完成串行数据通信,光有硬件电路还不够,还需要有软件的配合。
80C51单片机已集成了UART在其中