串行接口及串行通信技术
- 格式:doc
- 大小:182.00 KB
- 文档页数:11
数据通信的类型及原理
数据通信的类型主要有以下几种:
1. 串行通信:在串行通信中,数据在一个接口上一位一位地传输,即一次只发送/接收一位。
常见的串行通信协议包括RS-232、USB、SPI和I2C等。
2. 并行通信:在并行通信中,数据以多位同时传输。
每个接口上有对应的数据线,每条数据线承载一个位的数据。
并行通信的主要特点是传输速度快,但要求数据线的数量较多。
常见的并行通信接口包括并行打印口、IDE接口和系统总线接口等。
3. 无线通信:无线通信是一种将数据通过无线电波传输的通信方式。
无线通信可以分为远距离无线通信和近距离无线通信。
远距离无线通信包括蜂窝网络通信(如4G、5G)、卫星通信等;近距离无线通信包括蓝牙、Wi-Fi、NFC等。
数据通信的原理是通过传输介质将数据从发送方传输到接收方。
在串行通信中,数据通过一个线路逐位传输,发送方将数据按位依次发送,接收方按照相同的顺序逐位接收。
在并行通信中,数据的各个位同时通过多条数据线传输。
在无线通信中,数据通过无线电波以电磁信号的形式传输,发送方的电子设备将数据转换为电磁信号发送,接收方的电子设备接收并解码电磁信号重新获取数据。
无论是哪种通信方式,数据通信都需要发送方和接收方之间达成一致的通信协议,包括
数据格式、传输速率、错误检测和纠错等。
第12章串行通信与串行接口习题12.1 什么是串行通信?串行通信与并行通信相比,有哪些基本特点?【参考答案】串行通信是指使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个固定的时间长度。
其只需要少数几条线就可以在系统间交换信息,特别适用于计算机与计算机、计算机与外设之间的远距离通信。
如果一组数据的各数据位在多条线上同时被传输,这种传输方式称为并行通信。
并行通信是把一个字符的各数位用几条线同时进行传输,传输速度快,信息率高。
但它比串行通信所用的电缆多,故常用在传输距离较短(几米至几十米)、数据传输率较高的场合。
12.2 在串行通信中有哪几种数据传送方式,各有什么特点?【参考答案】在串行通信中,按照在同一时刻数据流的方向可分为三种基本传送模式:单工传送、半双工传送和全双工传送。
单工传送方式仅支持在一个方向上的数据传送。
即由设备A传送到设备B。
在这种传送模式中,A只作为发送器,B只作为接收器。
半双工传送方式支持在设备A和设备B之间交替地传送数据。
即设备A为发送器发送数据到设备B,设备B为接收器。
也可以设备B做发送器发送数据到设备A,设备A 为接收器。
由于A、B之间仅一根数据传送线,它们都有独立的发送器和接收器,所以在同一个时刻只能进行一个方向的传送。
全双工传送方式支持数据在两个方向同时传送。
即设备A可发送数据到设备B,设备B也可以发送数据到设备A,它们都有独立的发送器和接收器,并有两条传送线。
12.3 全双工和半双工通信的区别是什么?在二线制电路上能否进行全双工通信?为什么?【参考答案】全双工是指在二线上可以同时进行收发两个动作,半双工是指在二线上在某一个时刻只能进行收发中的一个动作。
全双工和半双工通信,双方都既是发送器又是接收器。
两者的区别在于全双工可以同时发送和接收。
半双工不能同时双向传输,只能分时进行。
在二线制电路上是不能进行全双工通信的,只能单端发送或接收。
因为一根信号线,一根地线,同一时刻只能单向传输。
串行通信及接口电路1. 串行通信的概念串行通信是一种数据传输的方式,它将数据逐位地按照一定顺序传输,相比于并行通信的方式,串行通信只需使用一个通信线路传输数据。
在串行通信中,每个数据位被顺序发送,并且在接收端被顺序接收和重组。
串行通信的优点是可以节省通信线路的数量,但其传输速度相对较慢。
2. 串行通信的应用串行通信广泛应用于各种领域,包括计算机通信、网络通信、工业控制等。
它可以用于长距离通信,如在局域网或广域网中传输数据。
此外,串行通信还常用于外设与主机之间的通信,如串行口和串行外设之间的通信。
3. 串行通信的协议串行通信的实现需要一定的协议来确保数据的可靠传输。
常见的串行通信协议包括UART(通用异步收发器),SPI(串行外设接口)和I2C(双线串行通信接口)。
这些协议都定义了数据的传输规则、时序要求以及错误处理机制,以确保数据的准确性和完整性。
3.1 UARTUART是一种使用异步传输方式的串行通信协议。
它通过发送方和接收方之间的单个通信线路进行数据传输。
UART协议定义了数据的起始位、数据位、停止位和校验位等信息。
发送端根据这些信息将数据发送给接收端,并且接收端根据这些信息识别数据的边界和校验数据的正确性。
3.2 SPISPI是一种同步传输方式的串行通信协议,它使用一对数据线(Master Out, Slave In - MOSI 和 Master In, Slave Out - MISO)以及时钟线(SCLK)进行通信。
SPI协议由主设备(Master)和从设备(Slave)组成,主设备通过时钟信号控制从设备进行数据传输。
SPI协议定义了数据的传输时序,通过时钟的上升沿和下降沿进行数据采样和传输。
3.3 I2CI2C是一种双线串行通信接口,它使用两条线路(串行数据线(SDA)和串行时钟线(SCL))进行通信。
I2C协议由主设备(Master)和从设备(Slave)组成,主设备通过时钟信号控制从设备进行数据传输。
第9章串行接口及串行通信技术难点•串行通信的四种工作方式要求掌握:•串行通信的控制寄存器•串行通信的工作方式0和方式1了解:•串行通信的基础知识•串行通信的工作方式2和方式39.1 串行通信的基础知识9.2 MCS-51单片机串行通信的控制寄存器9.3 MCS-51单片机串行通信工作方式9.1 串行通信的基础知识串行数据通信要解决两个关键技术问题,一个是数据传送,另一个是数据转换。
所谓数据传送就是指数据以什么形式进行传送。
所谓数据转换就是指单片机在接受数据时,如何把接收到的串行数据转化为并行数据,单片机在发送数据时,如何把并行数据转换为串行数据进行发送。
9.1.1 数据传送单片机的串行通信使用的是异步串行通信,所谓异步就是指发送端和接收端使用的不是同一个时钟。
异步串行通信通常以字符(或者字节)为单位组成字符帧传送。
字符帧由发送端一帧一帧地传送,接收端通过传输线一帧一帧地接收。
1. 字符帧的帧格式字符帧由四部分组成,分别是起始位、数据位、奇偶校验位、停止位。
如图9.1所示:1)起始位:位于字符帧的开头,只占一位,始终位逻辑低电平,表示发送端开始发送一帧数据。
2)数据位:紧跟起始位后,可取5、6、7、8位,低位在前,高位在后。
3)奇偶校验位:占一位,用于对字符传送作正确性检查,因此奇偶校验位是可选择的,共有三种可能,即奇偶校验、偶校验和无校验,由用户根据需要选定。
4)停止位:末尾,为逻辑“1”高电平,可取1、1.5、2位,表示一帧字符传送完毕。
图9.1 字符帧格式异步串行通信的字符帧可以是连续的,也可以是断续的。
连续的异步串行通信,是在一个字符格式的停止位之后立即发送下一个字符的起始位,开始一个新的字符的传送,即帧与帧之间是连续的。
而断续的异步串行通信,则是在一帧结束之后不一定接着传送下一个字符,不传送时维持数据线的高电平状态,使数据线处于空闲。
其后,新的字符传送可在任何时候开始,并不要求整倍数的位时间。
2. 传送的速率串行通信的速率用波特率来表示,所谓波特率就是指一秒钟传送数据位的个数。
每秒钟传送一个数据位就是1波特。
即:1波特=1bps(位/秒)在串行通信中,数据位的发送和接收分别由发送时钟脉冲和接收时钟脉冲进行定时控制。
时钟频率高,则波特率高,通信速度就快;反之,时钟频率低,波特率就低,通信速度就慢。
9.1.2 数据转换MCS-51单片机只能处理8位的并行数据,所以在进行串行数据的发送时,要把并行数据转换为串行数据。
而在接收数据时,只有把接收的串行数据转换成并行数据,单片机才能进行处理。
能实现这种转换的设备,称为通用异步接收发送器(Universal Asynchronous Receiver /Transmitter)。
这种设备已集成到单片机内部,称为串行接口电路。
串行接口电路为用户提供了两个串行口缓冲寄存器(SBUF),一个称为发送缓存器,它的用途是接收片内总线送来的数据,即发送缓冲器只能写不能读。
发送缓冲器中的数据通过TXD引脚向外传送。
另一个称为接收缓冲器,它的用途是向片内总线发送数据,即接收缓冲器只能读不能写。
接收缓冲器通过RXD引脚接收数据。
因为这两个缓冲器一个只能写,一个只能读,所以共用一个地址99H。
串行接口电路如图9.2所示。
图9.2 MCS-51串行口寄存器结构9.2 MCS-51单片机串行通信的控制寄存器1. 串行口控制寄存器(SCON)SCON是MCS-51单片机的一个可位寻址的专用寄存器,用于串行数据通信的控制。
单元地址为位地9FH 9EH 9DH 9CH 9BH 9AH 99H 98H址位符SM0SM1SM2REN TB8RB8TI RI号各位的说明如下:1)SM0、SM1——串行口工作方式选择位其状态组合和对应工作方式为:SM0SM1 工作方式00 方式00 1 方式110 方式21 1 方式32)SM2——允许方式2、3的多机通信控制位在方式2和3中,若SM2=1且接收到的第九位数据(RB8)为1,才将接收到的前8位数据送入接收SBUF中,并置位RI产生中断请求;否则丢弃前8位数据。
若SM2=0,则不论第九位数据(RB8)为1还是为0,都将前8位送入接收SBUF中,并产生中断请求。
方式0时,SM2必须置0。
3)REN——允许接收位REN=0 禁止接收数据REN=1 允许接收数据4)TB8——发送数据位8在方式2、3时,TB8的内容是要发送的第9位数据,其值由用户通过软件来设置。
5)RB8——接收数据位8在方式2、3时,RB8是接收的第9位数据。
在方式1时,RB8是接收的停止位在方式0时,不使用RB86)TI——发送中断标志位在方式0时,发送完第8位数据后,该位由硬件置位。
在其它方式下,于发送停止位之前,由硬件置位。
因此,TI=1表示帧发送结束,其状态既可供软件查询使用,也可请求中断。
TI由软件清“0”。
7)RI——接收中断标志位在方式0时,接收完第8位数据后,该位由硬件置位。
在其它方式下,于接收到停止位之前,该位由硬件置位。
因此,RI=1表示帧接收结束,其状态既可供软件查询使用,也可请求中断。
RI由软件清“0”。
2. 电源控制寄存器(PCON)PCON不可位寻址,字节地址为87H。
它主要是为CHMOS型单片机80C51的电源控制而设置的专用寄存器。
其内容如下:与串行通Array信有关的只有D7位(SMOD),该位为波特率倍增位,当SMOD=1时,串行口波特率增加一倍,当SMOD=0时,串行口波特率为设定值。
当系统复位时,SMOD=0。
3. 中断允许控制寄存器(IE)此寄存器在第六章已经介绍过,在此不作赘述。
9.3 MCS-51单片机串行通信工作方式串行口的工作方式由SM0和SM1确定,编码和功能如表8-1所示。
表8-1 串行口工作方式SM0 SM1 方式功能说明波特率0 0 方式0 移位寄存器方式fosc/120 1 方式1 8位UART 可变1 0 方式2 9位UART fosc/64 或者fosc/321 1 方式3 9位UART 可变方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可变的,由T1的溢出率决定。
9.3.1 串行工作方式0串行口工作在方式0时,串行口作同步移位寄存器使用。
以RXD(P3.0)端作为数据的输入或输出端,而TXD(P3.1)提供移位的时钟脉冲。
外接移位寄存器,实现数据并行输入或输出。
工作在方式0时,波特率为fosc/12,即一个机器周期移位一次。
1. 数据输出(发送)当数据写入SBUF后,数据从RXD端在移位脉冲(TXD)的控制下,逐位移入74LS164,74LS164能完成数据的串并转换。
当8位数据全部移出后,TI由硬件置位,发生中断请求。
若CPU响应中断,则从0023H单元开始执行串行口中断服务程序,数据由74LS164并行输出。
其接口逻辑如图9.3所示。
由逻辑图可知,通过外接74LS164,串行口能够实现数据的并行输出。
图9.3 外接移位寄存器输出2. 数据输入(接收)要实现接收数据,必须首先把SCON中的允许接收位REN设置为1。
当REN设置为1时,数据就在移位脉冲的控制下,从RXD端输入。
当接收到8位数据时,置位接收中断标志位RI,发生中断请求。
其接口逻辑如图9.4所示。
由逻辑图可知,通过外接74LS165,串行口能够实现数据的并行输入。
图9.4 外接移位寄存器输入【例8-1】使用74LS164的并行输出端接8支发光二极管,利用它的串入并出功能,把发光二极管从左到右依次点亮,并反复循环。
假定发光二极管为共阴极接法。
图9.5 电路设计解:电路如图9.5。
软件部分如下:ORG0000HLJMP MAINORG1000HMAIN:MOV SCON,#00H;串行口工作在方式0CLR ES;禁止串行中断MOV A,#80H;发光二极管从左边亮起DELR:CLR P1.0;关闭并行输出MOV SBUF,A;串行输出WAINT:JNB TI,WAIT;状态查询SETB P1.0;开启并行输出ACALL DELAY;调用延时子程序CLR TI;清发送中断标志RR A;发光右移AJMP DELR;继续EDN9.3.2 串行工作方式1方式1为10位为一帧的异步串行通信方式。
其帧格式为1个起始位、8个数据位和1个停止位。
如图9.6所示。
图9.6 方式1的帧格式1. 数据输出(发送)数据写入SBUF后,开始发送,此时由硬件加入起始位和停止位,构成一帧数据,由TXD串行输出。
输出一帧数据后,TXD保持在高电平状态下,并将TI置位,通知CPU可以进行下一个字符的发送。
2. 数据输入(接收)当REN=1且接收到起始位后,在移位脉冲的控制下,把接收到的数据移入接收缓冲寄存器(SBUF)中,停止位到来后,把停止位送入RB8中,并置位RI,通知CPU接收到一个字符。
3. 波特率的设定工作在方式1时,其波特率是可变的,波特率的计算公式为:其中,SMOD为PCON寄存器最高位的值,其值为1或0。
当定时器1作波特率发生器使用时,选用工作方式2(即自动加载定时初值方式)。
选择方式2可以避免通过程序反复装入定时初值所引起的定时误差,使波特率更加稳定。
假定计数初值为X,则计数溢出周期为:溢出率为溢出周期的倒数。
则波特率的计算公式为:实际使用中,波特率是已知的。
因此需要根据波特率的计算公式求定时初值X。
用户只需要把定时初值设置到定时器1,就能得到所要求的波特率。
4. 应用举例(用方式1实现双机串行通信)(1)通信双方的硬件连接作为应用系统首先要研究通信双方如何连接。
一种办法是把两片8051的串行口直接相连,一片8051的TXD与另一片的RXD相连,RXD与另一片的TXD相连,地与地连通。
由于8051串行口的输出是TTL电平,两片相连所允许的距离极短。
(2)通信双方的软件约定通信双方除了在硬件上进行连接外,在软件还必须作如下约定:作为发送方,必须知道什么时候发送信息,发什么,对方是否收到,收到的内容有没有错误,要不要重发,怎样通知对方结束。
作为接收一方,必须知道对方是否发送了信息,发的是什么,收到的信息是否有错误,如果有错误怎样通知对方重发,怎样判断结束等等。
这些规定必须在编程之前确定下来。
为实现双机通信,我们规定如下:●假定A机为发送机,B机为接收机。
●当A机发送时,先送一个“AA”信号,B机收到后回答一个“BB”信号,表示同意接收。
●当A机接收到“BB”后,开始发送数据,每发送一次求一次“检查和”,假定数据块长16个字节,起始地址为30H,一个数据块发送完后再发出“检查和”。
●B机接收的数据并转存到数据区,起始地址也为30H,同时每接收一次也计算一次“检查和”,当一个数据块收齐后,再接收A机发来的“检查和”,并将它与B机的“检查和”进行比较。