串行通信.docx

上传人:b****8 文档编号:30147392 上传时间:2023-08-05 格式:DOCX 页数:14 大小:778.98KB
下载 相关 举报
串行通信.docx_第1页
第1页 / 共14页
串行通信.docx_第2页
第2页 / 共14页
串行通信.docx_第3页
第3页 / 共14页
串行通信.docx_第4页
第4页 / 共14页
串行通信.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

串行通信.docx

《串行通信.docx》由会员分享,可在线阅读,更多相关《串行通信.docx(14页珍藏版)》请在冰豆网上搜索。

串行通信.docx

串行通信

异步串行通信

起始位:

⑴起始位——开始一个字符的传送的标志位。

起始位使数据线处于“0”状态。

位时间:

⑸位时间——一个格式位的时间宽度。

数据位:

数据位——起始位之后传送的数据信号位。

在数据位中,低位在前(左)高位在后(右)。

由于字符编码方式的不同,数据位可以是5、6、7或8位。

奇偶校验位:

用于对字符的传送作正确性检查,因此奇偶效验位是可选择的,共有3种可能,即奇效验、偶效验和无效验,由用户根据需要选定。

停止位:

用以标志一个字符的结束,它对应于“1”状态。

停止位在一帧的最后,它可能是1、1.5或2位,在实际中根据需要确定。

帧(frame)——从起始位开始到停止位结束的全部内容称之为一帧。

帧是一个字符的完整通信格式,因此也就把串行通信的字符格式称之为帧格式。

同步串行通信

同步通信中,在数据开始传送前用同步字符来指示(常约定1~2个),并由时钟来实现发送端和接收端同步,即检测到规定的同步字符后,下面就连续按顺序传送数据,直到通信告一段落。

同步传送时,字符与字符之间没有间隙,也不用起始位和停止位,仅在数据块开始时用同步字符SYNC来指示,其数据格式如图8-3所示。

在同步传送时,要求用时钟来实现发送端与接收端之间的同步。

为了保证接收正确无误,发送方除了传送数据外,还要把时钟信号同时传送。

同步传送的优点是可以提高传送速率(达56kbps或更高),但硬件比较复杂。

 

串行数据的传输

 

单工形式的数据传送是单向的,通信双方中一方固定为接收端。

单工形式的串行通信,只需要一条数据线,如图所示

半双工形式的数据传送也是双向的,但任何时刻只能由其中的一方发送数据,另一方接收数据。

因此半双工形式既可以使用一条数据线,也可以使用两条数据线,如上图所示。

全双工形式的数据传送是双向的,且可以同时发送和接收数据,因此全双工形式的串行通信需要两条数据线,如上图所示。

 

异步串行通信的信号形式

近程通信:

近程通信采用数字信号直接传送形式,即在传送过程中不改变原数据代码的波形和频率。

这种数据传送方式称之为基带传送方式。

计算机内部的数据信号是TTL电平标准,而通信线上的数据信号却是RS232C电平标准。

然而,尽管电平标准不同,但数据信号的波形和频率并没有改变。

近程串行通信只需用传输线把两端的接口电路直接连起来即可实现,既方便又经济。

 

远程通信

远距离直接传送数字信号,信号会发生畸变,因此要把数字信号变为模拟信号再进行传送。

信号形式的转变通常使用频率调制法,即以不同频率的载波信号代表数字信号的两种不同电平状态。

这种数据传送方式就称为频带传送方式。

 

波特率

波特率,即数据传送速率,表示每秒钟传送二进制代码的位数,它的单位是位/秒(bps)。

波特率对于CPU与外界的通信是很重要的。

假设数据传送速率是120bps,而每个字符格式包含10个代码位(1个起始位、1个终止位、8个数据位),这时传送的波特率为:

l0×l20bps=1200bps

每一位代码的传送时间td为波特率的倒数。

波特率是衡量传输通道频宽的指标,它和传送数据的速率并不一致。

如上例中,因为除掉起始位和终止位,每一个数据实际只占8位,所以数位的传送速率为:

8×120bps=960bps

 

接收/发送时钟

在串行通信过程中二进制数字系列以数字信号波形的形式出现,不论接收还是发送,都必须有时钟信号对传送的数据进行定位。

接收/发送时钟就是用来控制通信设备接收/发送字符数据速度的,该时钟信号通常由微机内部时钟电路产生。

在接收数据时,接收器在接收时钟的上升沿对接收数据采样,进行数据位检测;在发送数据时,发送器在发送时钟的下降沿将移位寄存器的数据串行移位输出。

如下图所示。

接收/发送时钟频率与波特率有如下关系:

收/发时钟频率=n×收/发波特率

收/发波特率其中频率系数n=1,16,64。

对于同步传送方式,必须取n=l,即接收/发送时钟的频率等于收/发波特率。

对于异步传送方式,n=1,16,64,即可以选择的接收/发送时钟频率是波特率的1,16或64倍。

因此,可由要求的传送波特率及所选择的倍数n来确定接收/发送时钟的频率。

 

串行通信的过程

串行通信协议

1.起始位

当通信线上没有数据被传送时处于逻辑“1”状态。

当发送设备要发送一个字符数据时,首先发出一个逻辑“0”信号,这个逻辑低电平就是起始位。

起始位通过通信线传向接收设备,接收设备检测到这个逻辑低电平后,就开始准备接收数据位信号。

起始位所起的作用就是使设备同步,通信双方必须在传送数据位前协调同步。

2.数据位

当接收设备收到起始位后,紧接着就会收到数据位。

数据位的个数可以是5、6、7或8,PC机中经常采用7位或8位数据传送,8051串行口采用8位或9位数据传送。

这些数据位被接收到移位寄存器中,构成传送数据字符。

在字符数据传送过程中,数据位从最低有效位开始发送,依次在接收设备中被转换为并行数据。

3.奇偶校验位

数据位发送完之后,便可以发送奇偶校验位。

奇偶校验用于有限差错检测,通信双方应约定一致的奇偶校验方式。

如果选择偶校验,那么组成数据位和奇偶位的逻辑“1”的个数必须是偶数;如果选择奇校验,那么逻辑“1”的个数必须是奇数。

4.停止位约定

在奇偶位或数据位(当无奇偶校验时)之后发送的是停止位。

停止位是一个字符数据的结束标志,可以是1位、1.5位或2位的低电平。

接收设备收到停止位之后,通信线路上便又恢复逻辑“1”状态,直至下一个字符数据的起始位到来。

5.波特率设置

通信线上传送的所有位信号都保持一致的信号持续时间,每一位的宽度都由数据传送速率确定,而传送速率是以每秒多少个二进制位来度量的,这个速率叫波特率。

如果数据以每秒300个二进制位在通信线上传送,那么这个传送速率为300bps。

6.软件挂钩(握手)信号约定

 

串行接口电路——通用的异步接收/发送器(UART)

现把UART的主要功能综述如下

1.数据的串行化/反串行化

所谓串行化处理就是把并行数据变换为串行数据。

所谓反串行化就是把串行数变换为并行数据。

在UART中,完成数据串行化的电路属发送器,而实现数据反串行化处理的电路则属接收器。

2.格式信息的插入和滤除

格式信息是指异步通信格式中的启始位、奇偶位和停止位等。

在串行化过程中,按格式要求把格式信息插入,与数据位一起构成串行数据位串,然后进行串行数据传送。

在反串行化过程中,则把格式信息滤除而保留数据位。

3.错误检验

错误检验的目的在于检验数据通信过程是否正确。

在串行通信中可能出现的错误包括奇偶错和帧错等。

串行口寄存器结构

图中SBUF是串行口的缓冲寄存器,它是一个可寻址的专用寄存器,其中包括发送寄存器和接收寄存器,以便能以全双工方式进行通信。

这两个寄存器有同一地址(99H)。

串行发送时,向SBUF写入数据;串行接收时,从SBUF读出数据。

此外,在接收寄存器之前还有移位寄存器,从而构成了串行接收的双缓冲结构,以避免在数据接收过程中出现帧重叠错误。

与接收数据情况不同,发送数据时,由于CPU是主动的,不会发生帧重叠错误,因此发送电路就不需双重缓冲结构。

 

串行控制寄存器(SCON)

电源控制寄存器PCON

该寄存器中除最高位之外,其它位都没有定义。

最高位(SMOD)是串行口波特率的倍增位,当SMOD=1时,串行口波特率加倍。

系统复位时,SMOD=0。

串行口的工作方式

串行口工作方式0

在方式0下,是把串行口作为同步移位寄存器使用,这时以RXD(P3.0)端作为数据移位的入口和出口,而由TXD(P3.1)端提供移位时钟脉冲.移位数据的发送和接收以8位为一组,低位在前高位在后。

实例

串行移位输出电路连接

使用CD4094的并行输出端接8只发光二极管,利用它的“串入并出”功能,把发光二极管从左向右依次点亮,

并反复循环。

假定发光二极管为共阴极型,则电路连接如上图所示。

当串行口把8位状态码串行移位输出后,TI置1。

如把TI作为状态查询标志,则使用查询方法完成的参考程序如下:

 

MOV

SCON,

#00H

;串行口方式0工作

 

CLR

ES

 

;禁止串行中断

 

MOV

A,

#80H

;发光管从左边亮起

DELR:

CLR

P1.0

 

;关闭并行输出

 

MOV

SBUF,

A

;串行输出

 

JNB

TI,

$

;状态查询

 

SETB

P1.0

 

;开启并行输出

 

ACALL

DELAY

 

;状态维持

 

CLR

TI

 

;清发送中断标志

 

RR

A

 

;发光右移

 

AJMP

DELR

 

;继续

 

串行口工作方式1

方式1的数据发送是由一条写发送缓冲器(SBUF)的指令开始的,随后在串行口由硬件自动加入起始位和停止位,构成一个完整的帧格式,然后在移位脉冲的作用下,由TxD端串行输出。

一个字符帧发送完后,使TXD输出线维持在“1”状态下,并将SCON寄存器的TI置“1”,通知CPU可以接着发送下一个字符。

RxD(P3.0)

TxD(P3.1)

RXD(P3.0)端作为数据移位的入口和出口,

而由TXD(P3.1)端提供移位时钟脉冲

接收数据时,SCON的REN位应处于允许接收状态(REN=1)。

在此前提下,串行口采样RXD端,当采样到从“1”向“0”的状态跳变时,就认定是接收到起始位。

随后在移位脉冲的控制下,把接收到的数据位移入接收缓冲器(SBUF)中。

直到停止位到来之后把停止位送入RB8中,并置位中断标志位RI,通知CPU从SBUF取走接收到的一个字符。

在接收数据时,接收器在接收时钟的上升沿对接收数据采样,进行数据位检测;在发送数据时,发送器在发送时钟的下降沿将移位寄存器的数据串行移位输出。

波特率的设定

方式0的波特率是固定的(fosc/12),但方式1的波特率则是可变的。

若以定时器1作波特率发生器,则方式1的波特率=

当定时器1作波特率发生器使用时,选用定时方式2。

之所以选择工作方式2,是因为方式2具有自动加载功能,可以避免通过程序反复装入初值所引起的定时误差,使波特率更稳定。

 

工作方式2,3

方式1是10位为一帧的异步串行通信方式。

共包括1个起始位,8个数据位和1个停止位。

方式2是11位为一帧的串行通信方式。

在方式2下,字符还是8个数据位,只不过增加了一个第9数据位(D8),而且其功能由用户确定,是一个可编程位。

在发送数据时,应预先在SCON的TB8位中把第9数据位的内容准备好。

这可使用如下指令完成:

SETBTB8;TB8位置“1”

CLRTB8;TB8位置“0”

在方式2、3时,其值由用户通过软件设置。

在双机通信时,TB8一般作为奇偶效验位使用;在多机通信中,常以TB8位的状态表示主机发送的是地址帧还是数据帧,且一般约定:

TB8=0为数据帧,TB8=1为地址帧。

发送数据(D0~D7)由MOV指令向SBUF写入,而D8位的内容则由硬件电路从TB8中直接送到发送移位寄存器的第9位,并以此来启动串行发送。

一个字符帧发送完毕后,将TI位置“1”,其它过程与方式1相同,方式2的接收过程也与方式1基本相似,所不同的只在第9数据位上。

方式2的波特率是固定的,且有两种。

一种是晶振频率的三十二分之一;另一种是晶振频率的六十四分之一。

方式3同样是11位为一帧的串行通信方式,其通信过程与方式2完全相同,所不同的仅在于波特率。

方式3的波特率可由用户根据需要设定,其设定方法与方式1相同。

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1