单片机的串行通讯就是排成一队走,并行就是排成一列走

单片机的串行通讯就是排成一队走,并行就是排成一列走

主要内容:串行口的结构、串行口4种工作方式、多机通信、波特率的制定方法、串行口的应用。

MCS-51单片机内部有一个全双工的异步串行口。

全双工:双机通信之间可以同时实现发送数据和接收数据。

异步:收发双方没有应用同一时钟来控制数据传送。传送的数据是以一帧一帧格式进行的。

串行通信(英语Serial communication)是指在计算机总线或其他数据通道上,每次传输一个位元数据,并连续进行以上单次过程的通信方式。与之对应的是并行通信,它在串行端口上通过一次同时传输若干位元数据的方式进行通信。

简言之:串行通讯就是排成一队走,并行就是排成一列走。

同步串行通信Synchronous serial communication)和异步串行通信Asynchronous serial communication

1)发送端在发送串行数据的同时,提供一个时钟信 ,并按照一定的约定(例如在时钟信 的上升沿的时候,将数据发送出去)发送数据,接收端根据发送端提供的时钟信 ,以及大家的约定,接收数据。这就是常说的同步串行通信Synchronous serial communicationI2CSPI等有时钟信 的协议,都属于这种通信方式。

2)发送端在数据发送之前和之后,通过特定形式的信 (例STARTSTOP信 ),告诉接收端,可以开始(或者停止)接收数据了。与此同时,收发两方会约定一个数据发送的速度(就是大名鼎鼎的波特率),发送端在发START信 之后,就按照固定的节奏发送串行数据,与此同时,接收端在收START信 之后,也按照固定的节奏接收串行数据。这就是常说的异步串行通信Asynchronous serial communication)。

串行异步通信是单片机中常用的方式:

?数据按帧传输,一包数据按帧传输,一包起始、数据校验和停止。依起始、停止保持通信同步。因每帧传输都要建立一次同,即需要额外两个附加位适用于工作速度较低的场合。

串行口的接口及基本原理:

该单片机串行接口是一个可编程的全双工串行通信接口。它可用作异步通信方式UART),与串行传送信息的外部设备相连接,或用于通过标准异步通信协议进行全双工8051多机系统也能通过同步方式,使TTLCMOS移位寄存器来扩I/O口。通过管RXDP3.0,串行数据接收端)和管TXDP3.1,串行数据发送端)与外界通信。

两个物理上独立地接收和发送缓冲器,可同时收、发数据(全双工)。两个缓冲区公用一个特殊功能寄存器字节地址SBUF99H),它们有相同名字和地址空间,但不会出现冲突,因为它们两个一个只能CPU读出数据,一个只能CPU写入数据。

控制寄存器共两个:特殊功能寄存SCON(控制寄存器)PCON(状态寄存器)。

串行口控制寄存SCON :字节地98H,可位寻址,格式如图所示

1SM0SM1串行4种工作方式的选择位

SM0 SM1

0 0 0同步移位寄存器方式(用于扩I/O口)

0 1 1 8位异步收发,波特率可变(由定时器控制)

1 0 2 9位异步收发,波特率fosc/64fosc/32

1 1 3 9位异步收发,波特率可变(由定时器控制)

1串行口4种工作方式

fosc为晶体震荡器频率

SM2:多机通信控制位。在方0SM2一定要等0。在方1中,当SM2=1则只有接收到有效停止位时RI1。在方2或方3SM2=1且接收到的第九位数RB8=0RI1

REN接收允许控制位。由软件置位以允许接收,又由软件0来禁止接收。

TB8: 是要发送数据的9位。在方2或方3中,要发送的9位数据,根据需要由软件10。例如,可约定作为奇偶校验位,或在多机通信中作为区别地址帧或数据帧的标志位。

RB8:接收到的数据的9位。在方0中不使RB8。在方1中,若SM2=0RB8为接收到的停止位。在方2或方3RB8为接收到的9位数据。

TI:发送中断标志。在方0中,8位发送结束时,由硬件置位。在其它方式的发送停止位前,由硬件置位TI置位既表示一帧信息发送结束,同时也是申请中断,可根据需要,用软件查询的办法获得数据已发送完毕的信息,或用中断的方式来发送下一个数据TI必须用软件0

RI:接收中断标志位。在方0,当接收完8位数据后,由硬件置位。在其它方式中,在接收到停止位的中间时刻由硬件置位(例外情况见SM2的说明)RI置位表示一帧数据接收完毕,可用查询的办法获知或者用中断的办法获知RI也必须用软件0

波特率即数据传送的速率,其定义是每秒钟传送的二进制数的位数。例如,数据传送的速率120/s,而每个字符如上述规定包10数位,则传送波特率1200波特。

波特:每秒钟传送码元数目,单位波特 Baud位/秒 bps

假设波特率为 1200bs

每一位代码的传送时 Td(码元宽)为波特率的倒数。

Td1b 1200bs 0.833ms

而每个字符格式包 10个代码位1个起始位1个终止位8个数据位),传送一字节需 8.33ms

传送距离随波特率增加而减少

波特率制定方法:

·收、发双方的波特率必须一致。

·串口方0和方2的波特率是固定的;

·串口方1和方3的波特率是可变的,T1溢出率确定。

串口各种工作方式下波特率的计算

.0时,波特率固定为时钟频率fosc1/12

.2时,波特率仅SMOD位的值有关。

2定时T1产生波特率的计算

1)方0波特=时钟频fosc×1/12,不SMOD位的值的影响。fosc=12MHz,波特率fosc/121Mb/s

2)方2波特=2^SMOD/64×fosc

fosc=12MHz: SMOD=0波特=187.5kb/sSMOD=1波特=375kb/s

3)方1或方3时,波特率为:

波特=2^SMOD/64×T1的溢出率

实际设定波特率时T1常设置为方2定时(自动装初值)这种方式不仅操作方便,也可避免因软件重装初值而带来的定时误差。

由上式可见,波特率随foscSMOD和初值X而变化。

帧格式:

起始位(1位低电平;

数据位(8位);

奇偶校验位(1位,可无校验位);

停止位(1位高电平。

空闲位

串行口的四种工作方式:

1、工作方0

工作方0SCON寄存SM0SM1都为低电平决定,用于移位寄存器I/O口扩展应用。一帧信息包8位数据位、低位在前,高位在后。波特率固定fosc/12

发送TI=0时,执MOV SBUF,A将数据写入发送缓冲寄存器,并启动发送TXD端输出移位脉冲,串行口SBUF中数据依次从低到高RXD读出。一帧数据发送完毕,硬件自动RI发送中断标志位1,若再次发送需要用指CLR TI清零。

MOV SBUF,A;启动发送

JNB TI,$;TI=0则该指令原地踏步等待发送完毕

CLR TI0,清发送中断标志位

接收:RI=0,REN=1时,开始串行接收数据TXD输出移位脉冲。将数据以固定波特率接收SBUF中去,一帧数据接收完毕后,硬件自动RI1,若再接收数据需要MOV A,SBUF读出数据,然后用指令RI清零。

JNB RI,$;RI=0则软件原地踏步,等待接收

CLR RI;清接收中断标志位

MOV A,SBUF;将接收数据送入累加A

2、工作方1

一帧信息包括起始位8位数据位、停止位10位,低位在前,高位在后。波特率可变,由定时/计数T1的输出率SMODPCON.7)决定。

基本的接收发送指令与方0同,但是:

1SM2=0时,将接收的数据送SBUF中,停止位送RB8中,并置中断标志RI=1.

2SM2=1时,接收停止=1,将接收的数据送SBUF并且停止位送RB8,并RI=1,否则丢弃接收到的数据。再次接收前需要RI0

波特率计算方法:波特=2^SMOD/32*定时T1的溢出率

溢出率:定时器1S内产生溢出的次数。

定时器的溢出率与定时器的工作模式有关,可以改TMOD寄存T1方式字段中M1M0两位T1定时器工作在方2时,作8位定时器自动重载功能。

3、方2

9位异步通信接口。每帧数据均111位起始08位数据位(先低位)1位可程控的9位数据1位停止位。

2波特=2^SMOD/64×fosc

发送前,先根据通讯协议由软件设TB8(例如,双机通讯时的奇偶校验位或多机通讯时的地/数据的标志位)。

SM0SM1=10REN=1。数据RXD端输入,接11位信息。当位检测RXD10的负跳变,并判断起始位有效后,开始收一帧信息。在接收器完9位数据后,需满足两个条件,才能将接收到的数据送SBUF

1RI=0,意味着接收缓冲器为空。

2SM2=0或接收到的9位数据RB8=1时。

当上述两个条件满足时,接收到的数据送SBUF(接收缓冲器),9位数据送RB8,并1RI。若不满足两个条件,接收的信息将被丢弃。

4、方3

SM0SM1=11,串口为方3。波特率可变9位异步通讯方式,除波特率外,方3和方2相同。

多机通信(主动式结构)

要保证主机与所选择的从机实现可靠地通信,必须保证串口具有识别功能。

SCONSM2位就是满足这一条件而设置的多机通信控制位。

原理:在串行口以方2(或方3)接收时,SM2=1,表示置多机通信功能位,这时有两种可能:

1)接收到的9位数据1时,数据才装SBUF,并置中断标RI=1CPU发出中断请求;

2)接收到的9位数据0时,则不产生中断标志,信息将抛弃。

主机发送信息两类:一类是地址,用来需要和主机通信的从机,特征是串行发送的9位数TB81;另一种是数据,串行传送的9位数TB8=0.

主从机通信的过程如下:

1)使所有的从机工作方23SM2=1REN=1,以便主机发送地址信息,从机接收地址帧信息。

2)主机发送要寻址的从机的地址信息,其中包8位需要与之通信的从机地址,9TB8=1.

3)所有从机接收到地址信息,RI=1.

4)各从机进行地址比较,对于接收到的地址和自己的地址相同的从机,使SM2=0,准备接收主机随后发来的数据,对于地址不符合的从机,仍保SM2=1的状态,对主机随后的数据不予理睬,直至发现新的地址帧。

备注:补充RS485差分传输特性,所谓差分传输,就是发送端在两条信 线上传输幅值相等相位相反的电信 ,接收端对接受的两条线信 作减法运算,这样获得幅值翻倍的信 。

特点:从严格意义上来讲,所有电压信 都是差分的,因为一个电压只能是相对于另一个电压而言的。在某些系统里系统被用作电压基准点。当作电压测量基准时,这种信 规划被称之为单端的。我们使用该术语是因为信 是用单个导体上的电压来表示的另一方面,一个差分信 作用在两个导体上。信 值是两个导体间的电压差。尽管不是非常必要,这两个电压的平均值还是会经常保持一致。

可以想象,这两个导体上被同时加入的一个相等的电压,也就是所谓共模信 ,对一个差分放大系统来说是没有作用的,也就是说,尽管一个差分放大器的输入有效信 幅度只需要几毫伏,但它却可以对一个高达几伏特的共模信 无动于衷。这个指标叫做差分放大器的共模抑制比CMRR),一般的运算放大器可以达90db以上,高精度运放甚至达120db

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年4月14日
下一篇 2022年4月14日

相关推荐