串行口如何工作的?

  如今,通过多种设备进行通信已成为每个人的必需品。有几种通信媒介和协议正在被使用。大家可以根据项目需求选择通信方式。常见的通讯设备基本上有两种主要的通信接口,串行协议、以太网协议。这两种方式都是高效传输协议,两者各有特征,了解两者差异,就了解如何选择所需协议。

  所谓串行,我假设您指的是串行(例如RS232、USB)端口?计算机上的串行(或并行)端口与以太网端口之间的关键区别在于所连接的对象。USB和等串行端口用于将外围设备直接连接到计算机。您可以使用串行端口创建一个小型网络,但它通常仅限于与计算机可以支持的设备进行接口。另一方面,以太网是用于更大网络的唯一网络连接,允许其他设备和计算机通过很长的距离相互通信。例如设备

  可以使用USB连接到打印机或以太网接口适配器,也可以使用以太网连接到另一台联网打印机、服务器或计算机。虽然两者在小范围内可以相似,但串口不支持以太网所能支持的网络大小。

  在通信或数据传输领域,串行是用于在特定时间发送一位数据的网络或进程的术语。串行通信只是顺序的,所有的数据位都在系统地、一个接一个地传输。基本上,串行接口或串行链路对线路上的二进制数位置的位进行编码,然后数据以二进制信号的形式通过电缆逐位传输。您需要了解串行接口只能用于单向通信。这意味着,数据是在某个时间发送或接收的。如果您使用串行接口进行网络连接,则不能期望同时发送和接收数据。

  这是一种过时的技术,仍在广泛的应用中使用,其中发送大量数据或速度不是主要问题,他们正在寻找可以安全地为他们完成工作的基本技术,并且没有任何问题。这就是为什么,如果您正在寻找互联网,从一个地方向另一个地方发送大文件,串行通信是比较慢的解决方案。因为它在某个时间只发送一位。

  串行描述了OSI第1层协议,字面上只涉及从一个物理端口到另一个物理端口的位移动。而以太网是第2层协议,在其他第1层协议之上实现。以太网描述了一种将数据块分解为帧进行传输的方法,以及指示帧的源和目的地、所包含数据的更高级别协议、错误更正、所需优先级指标和一组其他信息的元数据(头)。

  正确的比较不是以太网和串行之间的比较,而是以太网和在串行连接上运行的线路协议之间的比较。如PPP、HDLC或类似协议(甚至SONET、帧中继、X.25等都是在某种串行连接上运行的协议。这增加了管理连接的类似机制,将数据分成数据包/帧,提供将数据定向到适当目的地的提示(如果是多址访问)等等。

  另一点值得澄清的是,名为以太网的协议实际上只是同名通用(且经常使用)商业术语的一部分。商业术语通常指连接L2/L3交换机和各种终端主机(服务器、工作站、路由器等)的非屏蔽双绞线。但是,请记住,物理介质(UTP)可以支持以太网以外的东西,以太网作为一种协议,不仅支持UTP(想想光纤、无线等),还可以通过更高级别的协议进行封装和逻辑桥接。

  在通过LAN或WAN网络连接设备时,它没有比以太网更好的了。以太网有很多附加的好处,这将使它成为任何希望同时获得可靠、安全和快速的东西的人的完美选择。以太网基本上是一组同时用于上行链路和下行链路的多条电缆。这意味着您可以轻松地使用以太网同时发送和接收数据。自 1980 年发布以来,以太网已成为使用最广泛的通信协议。以太网上必须不惜一切代价遵守一组规则和协议。所有这一切使它高度可靠,这就是为什么以太网被用于广泛的应用程序,除非保护高度机密的事物的隐私至关重要。

  以太网具有一系列优势,其中包括与其他通信协议相比成本相对较低。它还具有向后兼容性,因此如果您有一些串行通信设备,它也可以与它们一起使用。展望未来,由于电缆上的良好基础设施,以太网具有抗噪声能力。这将帮助您获得稳定的网络体验,并且您将享受更好的体验,而不会中断连接。

  以太网的另一个好处是速度。

  由于以太网协议拥有多个上行链路和下行链路通道,所以这种通讯方式拥有比其他网络通道都更好的速度体验。数据安全也受到高度重视,防火墙可以很容易地在以太网上使用。

  以太网是串行通信还是并行通信

  以太网是打包的,您实际上无法发送单个有效字节,因为存在一堆寻址、CRC 等开销。以太网也不能确保数据包之间的顺序,因此您可以发送数据包 AB 和 C,但接收器可以按照 CA B 的顺序获取它们。还有像 CSMA/CD 一样的半双工冲突检测和重传。

  按照 OSI 模型栈,与用于 Internet 的 TCP/IP 模型相比,Internet 是在网络层定义的,而串行协议(严格意义上,不是实现)是由物理层定义的,在底层堆。因此,以太网可以串行通信。10-base-T 以太网连接按顺序发送单个位,但高速布线通常使用各种信令方法一次发送多个位。

  当我们谈论 PC 的串行和并行外设时,过去我们谈论的是点对点链接。一台计算机与一台打印机或一个调制解调器(每根电缆)通话。一般来说,有一个主设备控制这些链接上的所有通信,而从设备则按照他们的要求执行。

  当我们谈论以太网时,我们谈论的是网络。多台计算机连接到网络,它们都不一定是主机或从机。在早期的以太网协议中,多台计算机实际上会连接到同一根同轴电缆上。如今,以太网通常意味着点对点链接,但以太网包括能够与对等网络中的多个其他设备进行通信的协议。

  如何确保我的串行端口在 Windows 中正常工作

  要检查 RS-232 串口是否工作,请执行以下操作执行 RS-232 环回测试:

  如果您的串行端口不是母头,请通过使用母/母电缆或性别转换器并将其插入串行端口来进行转换。

  拿一个金属回形针或金属丝,将针脚 2 和 3 交叉。如果仔细观察母端,针脚应该编号。

【摘要】:本章主要学习AT89S52单片机中串行接口的基本结构和基本原理,了解波特率的计算方法,掌握AT89S52单片机串行接口控制方法,能根据系统需要选择合理的工作方式,完成串行数据的传输。本章的重要知识点有串行通信的概述及基本概念,串行接口特殊功能寄存器的设置,串行工作方式及应用,多机通信原理等。

第6章 AT89S52单片机串行接口

本章主要讲解单片机串行原理和串行接口的使用方法,要求学生能够设计简单的串行接口,并能够通过串行接口完成数据传输。

本章主要学习AT89S52单片机中串行接口的基本结构和基本原理,了解波特率的计算方法,掌握AT89S52单片机串行接口控制方法,能根据系统需要选择合理的工作方式,完成串行数据的传输。

本章重点是掌握串行通信的基本概念,串行口特殊功能寄存器;难点是串行口特殊功能寄存器设置和单片机多机通信原理的掌握。

本章的重要知识点有串行通信的概述及基本概念,串行接口特殊功能寄存器的设置,串行工作方式及应用,多机通信原理等。

方式0接收前,务必先置位REN=1,允许接收数据。此时,RXD为串行数据输入端,TXD仍为同步脉冲移位输出端。当RI=0和REN=1同时满足时,就会启动一次接收过程。接收器以fosc/12的固定波特率接收TXD端输入的数据。当接收到第8位数据时,将数据移入接收寄存器,并由硬件置位RI,向CPU申请中断,方式0的接收时序如图6-8所示。

图6-8 方式0的接收时序

CPU响应中断后,用软件使RI清0,使移位寄存器开始接收下一帧数据,CPU执行读SBUF指令,数据经由内部总线进入CPU。

MOV SBUF,A    ;将数据送出

JNB TI,$     ;等待数据发送完毕

当SM0=0、SM1=l时,串行口选择方式1,单片机工作于8位数据异步通信方式(UART)。在方式1时,传送一帧信息为10位,即1位起始位(0),8位数据位(低位在先)和1位停止位(1)。数据传输波特率由定时器/计数器T1和T2的溢出决定,可用程序设定。当T2CON寄存器中的RCLK和TCLK置位时,采用T2作为串行口接收和发送的波特率发生器。而当RCLK和TCLK都为零时,采用T1作为串行口接收和发送的波特率发生器。由TXD(P3.1)引脚发送数据,由RXD(P3.0)引脚接收数据。

当CPU执行MOV A,SBUF指令将数据写入发送缓冲SBUF时,就启动发送。先把起始位输出到TXD,然后把移位寄存器的输出位送到TXD。接着发出第一个移位脉冲(SHIFT),使数据右移一位,并从左端补入0。此后数据将逐位由TXD端送出,而其左面不断补入0。发送完一帧数据后,就由硬件置位TI。方式1的发送时序如图6-9所示。

图6-9 方式1的发送时序

当REN=1且清除RI后,若在RXD(P3.1)引脚上检测到一个1到0的跳变,立即启动一次接收。同时,复位16分频计数器,使输入位的边沿与时钟对齐,并将1FFH(即9个l)写入接收移位寄存器。接收控制器以16倍波特率的速率继续对RXD(P3.l)引脚进行检测,计数器的16个状态把1位时间等分成16份,并在第7、8、9个计数状态时采样RXD的电平,当接收到的三个值中至少有两个值相同时,这两个相同的值才被确认接收,即采用3取2的多数表决法,当两次或两次以上的采样值相同时,采样值予以接受,可抑制噪声。

如果在第1个时钟周期中接收到的不是0(起始位),说明它不是一帧数据的起始位,则复位接收电路,继续检测RXD(P3.1)引脚上l到0的跳变。如果接收到的是起始位,就将其移入接收移位寄存器,然后接收该帧的其他位。一帧信息也是10位,即1位起始位,8位数据位(先低位),1位停止位。

接收到的位从右边移入,原来写入的1从左边移出,当起始位移到最左边时,接收控制器将控制进行最后一次移位,把接收到的9位数据送入接收数据缓冲器SBUF和RB8,并置位RI。进行最后一次移位时必须满足两个条件:

(1)RI=0,上一帧数据接收完成时发出的中断请求已被响应,SBUF中数据已被取走。

(2)SM2=0或接收到的停止位为1。

若以上两个条件中有一个不满足,将不可恢复地丢失接收到的这一帧信息;如果满足上述两个条件,则数据位装入SBUF,停止位装入RB8且置位RI。中断标志RI必须由用户在中断服务程序中清0。方式1的接收时序如图6-10所示。

图6-10 方式1的接收时序

6.3.3 方式2和方式3——9位数据异步通信方式

当SM0=1、SM1=0时,串行口选择方式2;当SM1=1、SM0=1时,串行口选择方式3。方式2和方式3的工作原理相似,定义为9位的异步通信接口,发送(通过TXD)和接收(通过RXD)一帧信息都是11位,1位起始位(0)、8位数据位(低位在先)、1位可编程位(即第9位数据)和1位停止位(1)。

方式2和方式3唯一的差别是方式2的波特率是固定的,方式3的波特率是可变的。均利用定时器1或定时器2作波特率发生器,与方式1的波特率发生相同。

1.方式2和方式3发送

方式2和方式3发送的串行数据由TXD端输出,第9位附加数据来自SCON寄存器的TB8位,用软件置位或复位。它可作为多机通信中地址/数据信息的标志位,也可以作为数据的奇偶校验位。当CPU执行一条数据写入SUBF的指令时,就启动发送器发送。把一个起始位(0)放到TXD端,经过一位时间后,数据由移位寄存器送到TXD端,通过第一位数据,出现第一个移位脉冲。在第一次移位时,把一个停止位“1”由控制器的停止位送入移位寄存器的第9位。此后,每次移位时,把0送入第9位。因此,当TB8的内容移到位寄存器的输出位置时,其左面一位是停止位“1”,再往左的所有位全为“0”。这种状态由零检测器检测到后,就通知发送控制器作最后一次移位,然后置TI=1,请求中断。方式2和方式3的发送时序如图6-11所示。

图6-11 方式2和方式3的发送时序

2.方式2和方式3接收

REN=1,允许接收。串行口采样RXD引脚,接收过程由RXD端检测到负跳变时开始。当检测到负跳变,16分频计数器就立即复位,同时把1FFH写入输入移位寄存器,计数器的16个状态把一位时间等分成16份,在每一位的第7、8、9个状态时,位检测器对RXD端的值采样,如果所接收到的起始位不是0,则复位接收电路等待另一个负跳变的来到,若起始位有效,则起始位移入输入移位寄存器,并开始接收这一帧的其余位。当起始位0移到最左面时,通知接收控制器进行最后一次移位。在接收到附加的第9位数据后,当(RI)=0或者(SM2)=0时,第9位数据才进入RB8,8位数据才能进入接收寄存器,并由硬件置位中断标志RI;否则信息丢失,且不置位RI。再过一位时间后,不管上述条件是否满足,接收电路自行复位,并重新检测RXD上从1到0的跳变。

方式2和方式3与方式1在接收上的不同,方式2和方式3装入RB8的是第9位数据,而不是停止位,方式1中装入RB8的是停止位。方式2和方式3的接收时序如图6-12所示。

图6-12 方式2和方式3的接收时序

6.3.4 波特率的计算

波特率反映串行口传输数据的速率,它取决于振荡频率、PCON寄存器的SCON位以及定时器的设定。在串行通信中,收发双方的数据传送率(波特率)要遵循一定的约定。AT89S52串行口的四种工作方式中,方式0和2的波特率是固定的,而方式1和3的波特率是可变的,由定时器的溢出率控制。

方式0为固定波特率:波特率=fosc/12

方式2可选两种波特率:波特率=(2SMOD/64)×fosc

方式1、3为可变波特率,用T1作波特率发生器。

波特率=(2SMOD/32)×T1溢出率,T1溢出率为T1溢出一次所需时间的倒数。

常用波特率和T1初值如表6-4所示。

表6-4 由T1产生的常用波特率值

例:计算波特率。要求用T1工作于方式2来产生波特率2400,已知晶振频率=12MHz。解:求出T1的初值:

在集散式分布系统中,往往采用一台主机和多台从机。其中主机发送的信息可以被各个从机接收,而各从机的信息只能被主机接收,从机与从机之间不能互相直接通信。

在串行口控制寄存器SCON中,设有多处理机通信位SM2。当串行口以方式2或方式3接收时,若SM2=1,只有当接收到的第9位数据(RB8)为1时,才将数据送入接收缓冲器SBUF,并使RI置1,申请中断,否则数据将丢弃;若SM2=0,则无论第9位数据RB8是1还是0,都能将数据装入SBUF,并且发送中断。利用这一特性,便可实现主机与多个从机之间的串行通信。图6-13为多机通信连线,系统中左边为主机,其余的为1~n号从机,并保证每台从机在系统中的编号是唯一的。

图6-13 多处理机通信连接

系统时,将所有从机中的SM2位均设置为1,并处于允许串行口中断接收状态。主机欲与某从机通信,先向所有从机发出所选从机的地址,从机地址符合后,接着才发送命令或数据。在主机发地址时,置第9位数据(RB8)为1,表示主机发送的是地址帧;当主机呼叫某从机联络正确后,主机发送命令或数据帧时,将第9位数据(RB8)清0。各从机由于SM2置1,将响应主机发来的第9位数据(RB8)为1的地址信息。从机响应中断后,若从机的地址与主机点名的地址不相同,则该从机将继续维持SM2为l,从而拒绝接收主机后面发来的命令或数据信息,不会产生中断,而等待主机的下一次点名。若从机的地址与主机点名的地址相同,该从机将本机的SM2清0,继续接收主机发来的命令或数据,响应中断。这样,保证实现主机与从机间一对一的通信。

6.4 串行接口编程和应用

例1:利用串行口工作方式0扩展出8位并行I/O口,其中74LS164是串入并出,驱动共阳LED数码管显示0~9。

解:LED数码管应用较为广泛,其内部为8个发光二极管,排列为8字形,同时加一位表示,通过这8个发光二极管的合理组合,可以构成不同的数字字形和简单的字母字形,同时数码管还有一个位选信号。即8个数码管的公共端,数码管分为共阳和共阴两种,也就是说高电平选中或低电平选中。基本原理如图6-14所示。

共阳LED数码管,公共端接高电平,数据位置为低电平,要显示“0”,a、b、c、d、e、f为“0”电平,g、h为“1”电平就可以了,因此只需要扫描0C0H字符即可。同理,可以作出1~9等其他几个数据的编码。

显示0~9数字的子程序如下所示:

例2:发送程序。将片内RAM 50H起始单元的16个数由串行口发送。要求发送波特率为系统时钟的32分频,并进行奇偶校验。

解:根据题目要求,程序清单如下:

例3:接收程序。将接收的16个字节数据送入片内RAM40H~4FH单元中。设串行口以方式3工作,波特率为2400。定时器/计数器1用作波特率发生器,工作于方式2,SMOD=0,计数常数为F4H。

解:根据要求设置相关的参数,程序清单如下:

例4:双机通信。如图6-15所示,将两块CS-III单片机实验板相连接,设置波特率为9600,连接发送机和接收机的TXD和RXD口,使发送机的TXD口与接收机的RXD口相连,接收机的RXD口与发送机的TXD口相连,并且连接两机的接地端。

图6-15 双机通信系统

解:串口通信应用一般需要正确设置串口的工作方式,计算波特率,完成波特率设置的初始化和串行口初始化,以及相关的寄存器设置。串行通信的如图6-16(a)所示。

(1)发送程序。设置串口工作方式3,T/C2波特率为9600。发送程序的流程如图6-16 (b)所示。

图6-16 程序设计流程图

单片机的串口主要用于单片机和外围接口的数据传送和通信,在计算机控制系统中具有广泛的应用空间。在学习和掌握单片机的串行接口和工作方式后,能够应用单片机串口相关知识进行数据传送和数据通信,从而深刻理解单片机串口的相关概念和知识。

1. 试述串行通信与并行通信的优缺点和用途分别是什么?什么是异步通信?它有几种帧格式?

2. 简述串行口接收和发送数据的过程。

3. 串行口有几种工作方式?有几种帧格式?各种工作方式的波特率如何确定?

4. 某8031串行口,传送数据的帧格式为1个起始位(0),7个数据位,1个偶校验位和1个停止位(1)。当该串行口每分钟传送1800个字符时,试计算出波特率。

5. 若晶体振荡器为11.0592MHz,串行口工作于方式1,波特率为4800bps,写出用T1作为波特率发生器的方式控制字和计数初值。

6. 为什么定时器/计数器T1用作串行口波特率发生器时,采用方式2?若已知时钟频率、通信波特率,如何计算其初值?

7. 简述利用串行口进行多机通信的原理。

我要回帖

更多关于 设置串行口工作在方式1 的文章

 

随机推荐