第6章 串行通信接口

发布时间:2024-08-09  

一、串行数据通信基本原理

计算机的数据传送有并行和串行两种方式。并行传送的特点是:各数据位同时传送,传送速度快、效率高。但需要的数据线多,因此传送成本高。并行数据传送的距离通常小于30米。串行传送的特点是:数据传送按位顺序进行,最少只需一根传输线即可完成,成本低,但速度慢。串行数据传送的距离可以从几米到几千公里。


1. 异步串行通信的字符格式

异步串行数据通信以字符为单位,即一次传送一个字符。异步通信的数据格式为:


一帧信息 = 1位起始位(为低电平)+ 5-8位数据位(紧跟着起始位),表示要传送的有效数据(低位在前)+ 1位奇偶校验位(可有可无)+ 1、1.5或2位停止位(为高电平)。


从起始位开始到停止位结束的时间间隔称为一帧。就是一个字符的完整通信格式。因此也把串行通信的字符格式称为帧格式。


2. 串行通信的数据通路形式

串行数据通信有以下几种数据通路形式:


单工形式: A发,B接。

半双工形式: A发或接, B接或发。

全双工形式: A发、接,B接、发。

3. 串行通信的传送速率

传送速率用于说明数据传送的快慢。在串行通讯中,数据是按位进行传送的。因此,传送速度用每秒传送数据位数目来表示,称之为波特率(Baud),每秒传送一个数据位就是一波特。即:


1波特 = 1bps(位/秒)


常用的波特率有:75,110,300,600,1200,2400,4800,9600,19200。


4. 串行通信接口电路

串行数据通信中主要有两个技术问题:


数据传送:数据传送主要解决传送中的标准、格式及工作方式等问题

数据转换:数据转换是指数据的串并转换

串行接口电路基本组成逻辑框图如下:


串行输入 -> 并行输出

并行输入 -> 串行输出 

时钟、复位、控制信号 <-> 状态、控制信息

通用异步接收发送器(UART)是实现异步串行通信的常用接口,其他常见的异步串行通信接口还有:


TTL电平直接连接

RS-232C

RS-422、RS-485

20mA电流环

二、MCS-51单片机串行口

MCS-51单片机片内有一个全双工串行口,既可以实现异步串行通信,还可以作为同步移位寄存器来使用。定时器T1可作为串行通信波特率发生器。


1. 串行口寄存器结构

MCS-51单片机串行口的基本结构如下:


TXD串行输出 <- 移位 <- SBUF发送寄存器

RXD串行输入 -> 移位 -> SBUF接收寄存器 -> RI接收中断  

时钟 -> 移位

SBUF是串行口的缓冲寄存器。它是一个可字节寻址的专用寄存器,其中包括发送寄存器(只能写)和接收寄存器(只能读),以便能够以全双工方式进行通信,这两个寄存器共用一个地址(99H)。


例如:

启动发送:MOV SBUF,A ;SBUF←(A)

启动接收:MOV A,SBUF ;A←(SBUF)


2. 与串行通信有关的寄存器

与串行通信控制有关的专用寄存器有:


SCON:串行控制,用来设定串行口的工作方式

PCON:电源控制,可控制波特率。

IE: 设置串行中断允许。

串行控制寄存器SCON(98H)格式如下:


SM0 SM1 SM2 REN TB8 RB8 TI RI

各位功能说明:


SM0、SM1:串口工作方式选择位

00 方式0: 同步移位寄存器,波特率固定。

01 方式1:8位异步,波特率可变。

10 方式2:9位异步,波特率固定。

11 方式3:9位异步,波特率可变。

SM2:多机通信控制位,主要用于方式2、3中。

REN:允许串行接收,用软件置位或清除。

TB8/RB8:

在工作方式2、3中,TB8是发送的第九位数据,由软件置位(SETB TB8)或复位(CLR TB8)。在双机通信中,该位作为奇偶校验位;在多机通信中用来表示D7~D0是地址帧或数据帧。即:D8=0:表示数据帧;D8=1:表示地址帧。

RB8:在工作方式2和3中,该位是接收到的第9位数据。

TI:发送中断标志。在发送停止位之前,该位由硬件置位,申请中断,CPU响应中断后,可以发送下一帧数据。该位必须由软件清零。

RI:接收中断标志。在接收到停止位的一半时,该位由硬件置位(还需考虑SM2的设定),申请中断,CPU响应中断后,可以接收下一帧数据。该位也必须由软件清零。

电源控制寄存器PCON(87H)格式如下:


SMOD - - - GF1 GF0 PD IDL

它主要是为CHMOS型单片机的电源控制而设置的。对HMOS型单片机,除了最高位(SMOD)之外,其它位都虚设的,SMOD是串行口波特率的倍增位。


当:SMOD=1时,串行口波特率加倍。系统复位时,SMOD=0。可由下列指令设置:


MOV PCON,#80H ;SMOD←1

MOV PCON,#00H ;SMOD←0  

3. 串行口的工作方式

(1) 方式0

方式0为同步移位寄存器方式。RXD端作为数据移位的入口或出口,TXD端提供移位时钟脉冲,移位数据的发送和接收以8位为一帧,不设起始位和停止位,低位在前高位在后,波特率是固定的,为fOSC/12。即一个机器周期移位一次。


功能:用作I/O口扩展。


(2) 方式1

方式1的帧格式为:1位起始位 + 8位数据位 + 1位停止位。


数据发送是由一条写发送寄存器(MOV SBUF,A)指令开始的。此后在串行口由硬件自动加入起始位和停止位,构成一个完整的帧格式。然后在移位脉冲的作用下,由TXD端串行输出。一个字符帧发送完后,使TXD端输出线维持高电平,并将TI置位,通知CPU可以发送下一个字符。


接收数据时,应使REN=1。在此前提下,串行口采样RXD端,当采样到从1到0的跳变时,就认定是接收到了起始位。随后在移位脉冲的控制下,把接收到的数据位移入接收寄存器中。直到停止位到来之后把它送入到RB8中,并置位RI,通知CPU从SBUF取走接收到的一个字符。


方式1的波特率可变,由下式决定:


波特率 = (2^SMOD)/32 * (T1溢出率)

       = (2^SMOD)/32 * fOSC/(12*[256-X])  

其中:smod为PCON寄存器最高位的值,fOSC为晶振频率,X为当T1工作于方式2(8位自动加载)时的计数初值。实际使用时,总是先确定波特率,再计算T1的计数初值。即:


X = 256 - (2^SMOD) * fOSC/(384*波特率)

(3) 方式2和方式3

串行口工作在方式2、3时,为9位异步通信口,发送和接收1帧信息由11位组成,即:


1位起始位(0) + 8位数据位(D0~D7) + 1位可编程位(D8) + 1位停止位(1)

D8位既可作为奇偶校验位,也可作为控制位使用,其功能由用户来确定。发送时,可编程位D8(TB8)可设置为0(CLR TB8)或1(SETB TB8)。接收时,TB8送入SCON寄存器中RB8位。


方式2、3的区别是波特率设置不同:


方式2的波特率是固定的。即:波特率 = fosc/32或fosc/64

方式3的波特率是可变的。计算公式同方式1。

下表列出了一些常用的波特率与对应的时间常数设置:

波特率 fosc smod 定时器1方式 时间常数
1200 1.0592 0 2 E8H
2400 1.0592 0 2 F4H
4800 1.0592 0 2 FAH
9600 1.0592 0 2 FDH
19200 1.0592 1 2 FDH


利用串行口工作方式0可以方便地扩展I/O口。


三、串行口应用举例

例6-1 双机通信

设:甲机发送乙机接收,串行口工作在方式1,波特率为1200,fosc=11.0592MHz。


硬件连接如图:


甲 TXD ---> RXD 乙

   RXD <--- TXD

计算时间常数:T1作为波特率发生器,工作于方式2。由表1查得时间常数为E8H。


甲机发送程序:

甲机将内部RAM单元20H~3FH的32个字节的ASCII码数据,在最高位上加奇校验位后,由串行口TXD发送给乙机。即可采用8位异步通信。


START:  MOV TMOD,#20H       ;T1为方式2

        MOV TL1,#0E8H       ;时间常数低8位

        MOV TH1,#0E8H       ; 

        SETB TR1            ;启动T1工作

        MOV SCON,#01000000B ;串行口方式1   

        MOV R0,#20H         ;数据首地址   

        MOV R7,#32          ;32字节数据   

LOOP:   MOV A, @R0          ;取数据

        MOV C, P            ;置奇校验位

        CPL C   

        MOV ACC.7, C    

        MOV SBUF,A          ;启动发送

DONE:   JNB TI, DONE        ;等待发完一帧

        CLR TI              ;清TI,允许再发送

        INC R0              ;指向下一数据

        DJNZ R7, LOOP       ;未送完,送下一个数

        AJMP START          ;循环发送

乙机接收程序:

与甲机发送相呼应,接收器把接收到的32个字节数据存放在内部RAM的20H~3FH中,波特率与晶振频率同上。若奇校验出错,则置进位位1。

程序如下:


START:  MOV TMOD,#20H       ;T1方式2

        MOV TL1,#0E8H

        MOV TH1,#0E8H

        SETB TR1

        MOV R0,#20H

        MOV R7,#32

LOOP:   MOV SCON,#01010000B ;串行口方式1,能接收

DONE:   JNB RI,DONE         ;等待接收一帧

        CLR RI              ;清RI,再接收

        MOV A,SBUF          ;取数据

        JNB P, ERROR        ;校验错,转出错处理

        ANL A,#7FH          ;去掉奇校验位

        MOV @R0,A           ;奇校验正确,存数据

        INC R0              ;指向下一数据

        DJNZ R7,LOOP        ;数据块未接收完,循环

        AJMP START          ;循环接收

ERROR:  ...                 ;出错处理

多机通信

多机通信是指一个主机与多个从机之间进行通信。通常采用半双工方式,由主机轮流询问从机。主机发送的数据帧以11位传送,其中第9位为1表示是地址帧,为0表示是数据帧。


从机接收到主机发来的地址帧后,将自己的地址与之比较,若相同则做出响应,准备接收数据帧。否则不响应。


多机通信可以大大节省通信线路,适用于分布式数据采集等场合。


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>