1 / 86

第 9 章 串行通信

第 9 章 串行通信. 数据通讯 传输方式 同步通讯和异步通讯 波特率 : 表示每秒钟传送二进制代码的位数 , 单位 b/s. 9.1 串行通讯基本知识. 并行通讯. 串行通讯. 单向 ( 单工 ) 配置. 半双向 ( 半双工 ) 配置. 全双向 ( 全双工 ) 配置. 1 、并行通信和串行通信 通信的基本方式: 并行通信: 数据的各位同时送出。传送距离:小于 30 米。 串行通信: 数据的各位逐位送出,只需一对传送线即可完成传送。传送距离:几米 ~ 几千公里。. 2 、串行通信 ( 1 )串行通信的数据传送方向。

marion
Download Presentation

第 9 章 串行通信

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第9章 串行通信

  2. 数据通讯 传输方式 同步通讯和异步通讯 波特率:表示每秒钟传送二进制代码的位数,单位b/s 9.1 串行通讯基本知识 并行通讯 串行通讯 单向(单工)配置 半双向(半双工)配置 全双向(全双工)配置

  3. 1、并行通信和串行通信 通信的基本方式: 并行通信:数据的各位同时送出。传送距离:小于30米。 串行通信:数据的各位逐位送出,只需一对传送线即可完成传送。传送距离:几米~几千公里。

  4. 2、串行通信 (1)串行通信的数据传送方向。 单工、半双工、全双工三种方式 (2)串行通信的工作方式 同步方式:数据按块传送,包括同步字符、数据块。 异步方式:数据按字符传送,每一个字符均按固定的 字符格式传送,又被称为帧,如图。包含字符的起始位、数据位、校验位、停止位四个部分。

  5. 异步通讯的一帧数据格式

  6. 同步传送的数据格式

  7. 9.2 MCS-51串行口及应用 从机 从机 主机 从机 从机 单片机系统中的串行接口及特点 • 串行通讯可以实现单片机与单片机、单片机与微机之间的数据交换。 • 串行通讯电路简单,实现远距离低成本的数据传输。缺点是传输速度慢。 • 在一些系统中, 采用串行通讯的形式将多微处理器连接起来,构成一个完整的多CPU控制系统。

  8. 串行(异步)通信应用示意图 MCS-51 TXD (甲) RXD RXD MCS-51 TXD (乙) 单片机甲、乙之间近距离的直接通讯 TXD RXD RS-232 或485 RS-232 或485 RXD TXD 单片机甲乙两地之间远距离通讯 PC机 COM1,COM2 TXD RXD RS-232 单片机与PC机之间的数据通讯

  9. 8051串行口结构

  10. 9.2.1 与串口有关的寄存器数据缓冲寄存器 SBUF 地址:99H • SBUF是用来存放发送和接收数据的寄存器, 对应两个独立的缓冲器。 • CPU写SBUF就是开始发送数据(MOV SBUF,A); CPU读SBUF就是读取接收到的数据到A (MOV A,SBUF)。 • 该结构在硬件设计上保证了51单片机串行口是一个可同时发送与接收的”全双工”串口。

  11. SBUF硬件电路: 发送:执行指令MOV SBUF,A 接收:当检测到起始位电路自动启动接收。 MCS-51 RXD P3.0 CPU 接收SBUF 移位寄存器 内部总线 TXD P3.1 发送SBUF 移位寄存器

  12. 串行口控制寄存器SCON 地址:98H • SM0 SM1: 串行口工作模式选择位。

  13. RI:完成一帧数据接收标志,应软件清零,接收完成RI=1并申请中断(如果中断开放,则引发中断);RI:完成一帧数据接收标志,应软件清零,接收完成RI=1并申请中断(如果中断开放,则引发中断); • TI:完成一帧数据发送标志,应软件清零,发送完成TI=1同时申请中断(如果中断开放,则引发中断); • RB8:在9位数据传送的模式2、3中,接收到的第9位数据; • TB8:在9位数据传送的模式2、3中,将要发送的第9位数据; • REN:允许接收位,REN=1时允许接收.由软件置位或清零。

  14. SM2 :多机通信使能位. 1,模式0、1时: SM2不用,应设为0。 2,模式2、3时: SM2=0,无论RB8如何,RI都能被激活(RI=1)。 若SM2=1,收到的第9位(RB8)=0时,则RI不会被激活; 若SM2=1且RB8=1时,RI才能被激活=1并引发中断。 在接收方式时:当SM2=1时,能否接收到数据取决于对方发送的第9位数据RB8,可由发送方来控制接收方的数据接收。 此种方式(SM2=1)用于多机通信。

  15. 通信双方不是同步工作的,数据交换由各自SBUF进行。CPU不参与通信过程,只能通过标志了解SBUF的发送、接收的状态,以便决定后续操作。通信双方不是同步工作的,数据交换由各自SBUF进行。CPU不参与通信过程,只能通过标志了解SBUF的发送、接收的状态,以便决定后续操作。 RI(SCON.0):接收完成标志。 ①当SUBF从RXD接收完一个完整的数据帧时,RI=1。如果串口中断是开放的,则RI=1时会自动引发中断。用户可以通过中断服务程序将SBUF中的数据取出送累加器A。 MOV A,SBUF——中断方式接收数据; ②也可以使用查询的方式对RI进行检测,如果RI=1则执行: MOV A,SBUF否则等待 ——查询方式接收数据。 如何使用RI,TI标志完成接收、发送?

  16. TI (SCON.1):发送完成标志。 当CPU执行:MOV SBUF,A后,SBUF开始通过TXD向外发送数据。当完成一帧数据的发送后,TI=1。 ①如果系统中断是开放的,则TI=1会自动引发中断。用户可以通过中断服务程序向SBUF输送下一个数据: MOV SBUF, A ———中断方式发送数据; ②也可以使用查询的方式对TI进行检测,如果TI=1则执行: MOV SBUF , A。否则等待 ——查询方式发送。

  17. 使用查询RI、TI标志方式进行发送与接收N个数据使用查询RI、TI标志方式进行发送与接收N个数据 SETB SCON .REN CLR SCON .TI CLR SCON .RI 数据送累加器A 修改数据区指针 接收数据程序框图 NO RI=1? mov sbuf,a YES mov a,sbuf TI=1? NO A送数据区 修改数据指针 YES N个数据发送完? NO YES N个数据接收完? NO YES 发送数据的程序框图

  18. PCON 地址:87H SMOD 波特率选择位 SMOD=1时,方式1,方式2,方式3的波特率加倍

  19. 模式0以8位数据为一帧,不设起始位和停止位,先发送或接收最低位,其帧格式如下模式0以8位数据为一帧,不设起始位和停止位,先发送或接收最低位,其帧格式如下 模式1以10位为一帧传输,设由1个起始位,8个数据位,1个停止位 模式2和模式3以11位为1帧传输,设有1个起始位,8个数据位,1个附加第9位和1个停止位 9.2.2 串行通信工作模式

  20. 串行口的模式0 • 特点:同步移位寄存器方式。波特率:固定为 fosc/12. RXD(P3.0):数据口线(发送和接收);先移数据的低位。 TXD(P3.1):移位脉冲输出端。 (注意:移位脉冲的频率就是模式0的波特率) • 主要功能:使用串行口扩展并行口, 理论上可以扩展n*8 位的并行口。 并行的数据(8位) MCS-51 RXD TXD 串行数据 Data 外部移位寄存器 cp 移位脉冲

  21. 51内部总线 模式0 电路框图 写SBUF P3.0 RXD D S Q CP SBUF 1 零检测器 S6P2 MOV SBUF,A START SHIFT 发送控制器 TXCLOCK TI SEND S6 串行口中断 P3.1 TXD 移位 时钟 START RI RECEIVE RX 接收控制器 SHIFT CLOCK 1 1 1 1 1 1 1 0 REN /RI P3.0 RXD 输入移位寄存器 装载SBUF SBUF 读SBUF 51内部总线

  22. 模式0的发送与接收 • 单片机执行mov sbuf,a指令启动“发送控制器”开始发送。完毕,TI被置位。 • 在满足REN=1且RI=0的条件下(实际上是一条写SCON指令),就会引发一次接收过程。完毕,RI置位,向CPU发中断申请。

  23. 模式0的时序信号(发送) 写SBUF SEND SHIFT RXD端数据 D0 D1 D2 D3 D4 D5 D6 D7 TXD端同步脉冲 TI中断标志 mov sbuf,a 指令从发送到结束的10个机器周期

  24. 模式0的时序信号(接收) 写SCON(RI=0) RI RECEIVE SHIFT 对RXD采样 TXD同步脉冲 RI中断标志

  25. 串行口模式1 • 特点:10位传输格式 (1个起始位+8个数据位+1个停止位); 用于通讯的异步方式; 可变波特率(定时器T1的溢出率来确定,所以在此种模式下,首先要对T1进行初始化以确定串行口的波特率)。 • 发送操作:在TI=0,执行mov sbuf ,a 指令后从TXD端开始发送数据。当发送完8位数据后自动的添加一个高电平的停止位,并将TI置位。

  26. 接收操作:在REN=1且RI=0的条件下进行。 串行口的接收控制器对RXD线进行采样,其采样频率是接收时钟的16倍。当连续8次采集到RXD线上为低电平时,检测电路便认定RXD线上有了“起始位”,在此后,便开始在每次第7 、 8 、9三个脉冲时进行RXD采样,采取“三中取二”的原则来确定接收的数据(如图所示)。 数据装载条件: 当接收到停止位时,必须满足:RI=0且SM2=0,才能把接收的数据送到SBUF中(停止位送SCON的RB8中,并使RI=1),否则数据丢失。 要想得到接收的数据,在接收前必须事先清零RI。

  27. 串行口模式1时数据帧格式及接收采样示意图 起始位 8位数据 停止位 7.8.9 当连续8次采集到低电 平时,便确认起始位到来 在每个第7,8,9个脉冲对RXD采样 并采用“以三取二”来确定采集的数据 对RXD线的数据以16倍速度采样

  28. 串行口模式1时序图

  29. 特点:模式2、3都是11位传输格式 (1个起始位+9个数据位+1个停止位),它们的不同之处是波特率。 波特率: 模式2:固定为fosc/64或fosc/32。 (具体由PCON中的SMOD位来确定)。 模式3:可变,由定时器T1的溢出波特率来确定。 串行口模式2、3 起始位 停止位 8+1位数据 第9 位

  30. 模式2、3的发送过程类似于模式1,唯一的区别在于数据帧中数据是9位。这样,在发送一帧数据时,CPU除了要把8位数据送SBUF外(mov sbuf,a),还要事先将第9位数据送到SCON.TB8中。 • 如:第9位(TB8 )=1时,SETB SCON.TB8 若第9位(TB8 )=0时:CLR SCON.TB8 例如: SETB SCON.TB8或: CLR SCON.TB8 MOV SBUF,AMOV SBUF,A

  31. 模式2、3的接收过程也类似于模式1,不同的是:模式1时,SCON中的RB8是接收到的停止位(“1”);而模式2、3时,RB8是接收到的第9位。模式2、3的接收过程也类似于模式1,不同的是:模式1时,SCON中的RB8是接收到的停止位(“1”);而模式2、3时,RB8是接收到的第9位。 在模式1,接收操作只有在RI=0,且REN=1时数据可以接收。而模式2、3的接收装载条件是: a)RI=0且SM2=0(与RB8的状态无关); 或: b)RI=0且RB8=1(SM2=1时)。 只有满足a)或满足b)的条件时,接收到的数据才能送到SBUF,并使RI=1激活,否则接收无效且RI不能置位。

  32. RI=0是保证SBUF空(每次取走数据时通过软件复位RI,如果没有取走数据则RI=1),保证接收到的数据不丢失。RI=0是保证SBUF空(每次取走数据时通过软件复位RI,如果没有取走数据则RI=1),保证接收到的数据不丢失。 利用后一个条件SM2和RB8来控制接收,可用于多机通信。 令SM2=1可以利用接收到的RB8控制接收是否有效。 即 RB8=1时接收有效;RB8=0时接收无效。 SM2也称“多机通讯使能位” 。 在没有多机通信的场合,RB8可用于奇偶效验,以防止串行通信出错。

  33. 发送时:将SCON中的TB8作为第9位数据发送; 接收时:将接收来的第9位送到SCON中的RB8中。 串行口模式2、3时数据帧格式 起始位 停止位 9位数据

  34. 串行口模式2和模式3时序图

  35. 奇偶校验:收到的第9位RB8是发送方送来的奇偶校验位。奇偶校验:收到的第9位RB8是发送方送来的奇偶校验位。 在这种情况下必须令SM2=0,否则接收的校验位RB8=0时,将影响数据的接收(因为RB8有时为“1”,而有时为“0”)。 当接收数据后,对 PSW.0(P标志)和 RB8位进行判断。检查结果是否与约定的相符合。 模式2、3的应用之一带奇偶校验位的数据传送

  36. 例如:发送、接收双方约定为奇校验(数据中1的个数为奇):例如:发送、接收双方约定为奇校验(数据中1的个数为奇): 则发送方的第9位要根据前8位数据来确定。 若发送的8位数据是:00011010,则TB8为0。 发送程序如下: : MOV C,P CPL C MOV TB8,C MOV SBUF,A : 接收时将 PSW.0(P标志)位与RB8进行“异或”,结果为1,说明校验结果正确。

  37. 利用模式2,3进行带奇校验的串行通讯程序流程图利用模式2,3进行带奇校验的串行通讯程序流程图 发送端程序(原始TI=0) 接收端程序(原始RI=0) 数据送累加器A N YES RI=1 ? PSW.P=1 ? Y NO MOV A,SBUF SET SCON.TB8 CLR SCON.TB8 NO PSW.P⊕RB8=1? MOV SBUF,A YES CLR SCON.RI 出错处理 TI=1 ? NO 数据送内存 YES CLR SCON.TI 使用“查询法”编制的发送、接收程序

  38. 如果系统采用多CPU结构,并且有一个做主机,其它为从机时,它们之间可以通过多机通信的方式进行数据交换。如:多路数据采集系统。如果系统采用多CPU结构,并且有一个做主机,其它为从机时,它们之间可以通过多机通信的方式进行数据交换。如:多路数据采集系统。 我们选一台单片机作为主机,专门负责接收从机传回的数据,并进行数据的后期处理(保存、打印和显示等); 而从机则完成对传感器的信号检测、A/D转换,最后将数据采用串行通讯的形式上传给主机。 模式2、3的应用之二多机通信

  39. 传统方式的多路数据采集系统 检测现场 传感器 1 机房 或 仪表室 传感器 2 接口 电路 单片机系统 或 微型计算机系统 传感器 3 传感器 4 引线 (模拟信号) 传感器 N

  40. 采用“智能传感器”组成的多路数据采集系统 主机 串行数据线(2条) RXD TXD TXD RXD 从机 1 从机 2 从机 3 从机 4 从机 N 从机做智能传感器

  41. 在模式2、3中, 1,SM2=0时:RB8=1或RB8=0都可以激活RI。 2,SM2=1时:RB8=1才能激活RI。 RB8=0时,RI不能激活。 多机通讯中SM2的设定

  42. 主机是通信的发起者,主机发送的数据可以传送到各个从机,从机发送的数据只能为主机接收,从机之间不能直接通讯。主机是通信的发起者,主机发送的数据可以传送到各个从机,从机发送的数据只能为主机接收,从机之间不能直接通讯。 主机和从机的串口设置为模式2或3,其中主机的SM2=0,从机的SM2=1。 第九位数据用来作为地址数据标识位, RB8=1时为地址帧, RB8=0时为数据帧。从机的SM2=1时,当收到的RB8=1(地址帧)时,RI可以激活;如果RB8=0(数据帧),则RI不能激活。 主从式多机通信原理

  43. 主机首先通过发送地址码来寻找从机(地址码的特征是第9位数据为“1”),所以所有的从机都能接收到主机发出的地址码(因为从机的RI=0,SM2=1,RB8=1),并使RI=1引发中断。从机在中断服务程序中,将接收到地址码与自己的地址进行比较,被选中的从机将自己的SM2=0;而未被选中的从机仍保持SM2=1,并退出中断服务程序。主机首先通过发送地址码来寻找从机(地址码的特征是第9位数据为“1”),所以所有的从机都能接收到主机发出的地址码(因为从机的RI=0,SM2=1,RB8=1),并使RI=1引发中断。从机在中断服务程序中,将接收到地址码与自己的地址进行比较,被选中的从机将自己的SM2=0;而未被选中的从机仍保持SM2=1,并退出中断服务程序。 当主机找到从机后,开始向从机发数据、命令(其特征为第9位=0)。由于被选中的从机SM2=0,所以尽管接收到的RB8=0,同样可以激活从机的RI,使其以查询的方式接收主机发出的数据或命令。当主机与从机的通讯完成后,从机再将其SM2=1,并退出中断服务程序。主机重新发出另一个从机的地址,所有从机可以马上响应并接收地址信息 。 通信过程

  44. 在模式2、3中,可以实现较为特殊的通信方式,如带校验位的9位传送、多机通讯。注意:当SM2=0时,只能采用查询方式???在模式2、3中,可以实现较为特殊的通信方式,如带校验位的9位传送、多机通讯。注意:当SM2=0时,只能采用查询方式??? 模式2、3使用时要注意的问题

  45. 模式0的波特率=fosc/12 模式2的波特率= 模式1和模式3的波特率= 9.2.3波特率的设计

  46. TXD 发送SBUF(99H) ÷12 fosc 输入移位寄存器 RXD 模式0波特率的产生

  47. 波特率及定时器T1的设定 • 在异步通信中,发送方与接收方是两个互相独立的系统,它们的系统时钟可以各不相同,此时确保通信正确的条件是: 1、要有相同的字符帧格式; 2、要有相同的波特率。 • MCS-51单片机的串行口四种模式其波特率各不相同。其中模式1、3的波特率就是由定时器T1的溢出率来决定的(PCON中的SMOD=1波特率加倍)。

  48. 如何设定波特率? • 在编制串行口通讯(模式1、3)程序时,在程序的初始化中,通过T1进行波特率的设定,既对T1进行初始化。 • T1初始化的主要任务是: 1、设置T1的工作方式为定时(C/T=0); 工作模式为模式2 :自动重装。 2、计算定时常数并分别送给TH1、TL1。 • 波特率计算公式: • T1溢出率:=(计数速率)/ [ 256-(TH1)] = (fosc/12) / [ 256-(TH1)]

  49. 设:fosc为系统时钟频率,TH1为定时器T1的初值,B为波特率。设:fosc为系统时钟频率,TH1为定时器T1的初值,B为波特率。 可以推出初值: TH1=256-[ fosc/(384B)]; (SMOD=0时) 或: TH1=256-[ fosc/(192B)]; (SMOD=1时) 【举例】设系统时钟为11.059MHz,要求波特率为1200Hz,求TH1。 【解】设:SMOD=0,用上述公式 TH1=256-[11.059MHz /(384X1200)]=232=0E8H 注意:1、根据波特率计算定时器初值会存在一定的误差。 2、选用11.0592MHz晶振是为了产生精确的波特率。 根据波特率求定时器T1初值计算公式

More Related