找回密码
 立即注册
收起左侧

串口通讯—异步通信方式

10
回复
18578
查看
[复制链接]
累计签到:181 天
连续签到:1 天
来源: Qt教程 2013-4-23 23:06:38 显示全部楼层 |阅读模式

马上注册,查看详细内容!注册请先查看:注册须知

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
串行通信可以分为两种类型:同步通信、异步通信。
  
  1.异步通信的特点及信息帧格式:
  
  
以起止式异步协议为例,下图显示的是起止式一帧数据的格式:
  
  
  
  
图1
  
  
起止式异步通信的特点是:一个字符一个字符地传输,每个字符一位一位地传输,并且传输一个字符时,总是以“起始位”开始,以“停止位”结束,字符之间没有固定的时间间隔要求。每一个字符的前面都有一位起始位(低电平,逻辑值),字符本身由5-7位数据位组成,接着字符后面是一位校验位(也可以没有校验位),最后是一位或一位半或二位停止位,停止位后面是不定长的空闲位。停止位和空闲位都规定为高电平(逻辑值1),这样就保证起始位开始处一定有一个下跳沿。  
  
  
从图中可看出,这种格式是靠起始位和停止位来实现字符的界定或同步的,故称为起止式协议。
  
  
异步通信可以采用正逻辑或负逻辑,正负逻辑的表示如下表所示:
  
   
  
  
  
   
   
   
逻辑0
   
   
逻辑1
   
   
正逻辑
   
   
低电平
   
   
高电平
   
   
负逻辑
   
   
高电平
   
   
低电平
   
  
  
异步通信的信息格式如下边的表所示
  
  
  
   
起始位
   
   
逻辑0
   
   
1
   
   
数据位
   
   
逻辑0或1
   
   
5位、6位、7位、8
   
   
校验位
   
   
逻辑0或1
   
   
1位或无
   
   
停止位
   
   
逻辑1
   
   
1位,1.5位或2
   
   
空闲位
   
   
逻辑1
   
   
任意数量
   
  
  
注:表中位数的本质含义是信号出现的时间,故可有分数位,如1.5。
  
  
     例:传送8位数据45H(0100,0101B),奇校验,1个停止位,则信号线上的波形象图2所示那样:异步通信的速率:若9600bps,每字符8位,1起始,1停止,无奇偶,则实际每字符传送10位,则960字符/秒。
  
  
  
  
图2
  
  
2.异步通信的接收过程
  
  
     接收端以“接收时钟”和“波特率因子”决定一位的时间长度。下面以波特率因子等于16(接收时钟每16个时钟周期,使接收移位寄存器移位一次)、正逻辑为例说明,如图3所示。
  
  
  
  
图3
  
  
(1)开始通信时,信号线为空闲(逻辑1),当检测到由1到0的跳变时,开始对“接收时钟”计数。 
  
  
(2)当计到8个时钟时,对输入信号进行检测,若仍为低电平,则确认这是“起始位”B,而不是干扰信号。
  
  
(3)接收端检测到起始位后,隔16个接收时钟,对输入信号检测一次,把对应的值作为D0位数据。若为逻辑1,  作为数据位1;若为逻辑0,作为数据位0。
  
  
(4)再隔16个接收时钟,对输入信号检测一次,把对应的值作为D1位数据。….,直到全部数据位都输入。
  
  
(5)检测校验位P(如果有的话)。
  
  
(6)接收到规定的数据位个数和校验位后,通信接口电路希望收到停止位S(逻辑1),若此时未收到逻辑1,说明出现了错误,在状态寄存器中置“帧错误”标志。若没有错误,对全部数据位进行奇偶校验,无校验错时,把数据位从移位寄存器中送数据输入寄存器。若校验错,在状态寄存器中置奇偶错标志。
  
  
(7)本幀信息全部接收完,把线路上出现的高电平作为空闲位。
  
  
(8)当信号再次变为低时,开始进入下一幀的检测。
  
  
3、异步通信的发送过程
  
  
发送端以“发送时钟”和“波特率因子”决定一位的时间长度。
  
  
(1)当初始化后,或者没有信息需要发送时,发送端输出逻辑1,即空闲位,空闲位可以有任意数量。
  
  
(2)当需要发送时,发送端首先输出逻辑0,作为起始位。
  
  
(3)接着,发送端首先发送D0位,直到各数据位发送完。
  
  
(4)如果需要的话,发送端输出校验位。
  
  
(5)最后,发送端输出停止位(逻辑1)。
  
  
(6)如果没有信息需要发送时,发送端输出逻辑1,即空闲位,空闲位可以有任意数量。如果还有信息需要发送,转入第(2)步。
  
  
对于以上发送、接收过程应注意以下几点:
  
  
(1)接收端总是在每个字符的头部(即起始位)进行一次重新定位,因此发送端可以在字符之间插入不等长的空闲位,不影响接收端的接收。
  
  
(2)发送端的发送时钟和接收端的接收时钟,其频率允许有一定差异,当频率差异在一定范围内,不会引起接收端检测错位,能够正确接收。并且这种频率差异不会因多个字符的连续接收而造成误差累计(因为每个字符的开始(起始位处)接收方均重新定位)。只有当发送时钟和接收时钟频率差异太大,引起接收端采样错位,才造成接收错误。
  
  
(3)起始位、校验位、停止位、空闲位的信号,由“发送移位寄存器”自动插入。在接收方,“接收移位寄存器”接收到一帧完整信息(起始、数据、校验、停止)后,仅把数据的各位送至“数据输入寄存器”,即CPU从“数据输入寄存器”中读得的信息,只是有效数字,不包含起始位、校验位、停止位信息。

参与人数 2人气 +4 收起 理由
florian + 2 关于发送和接收的移位寄存器可以再加一幅图.
noway + 2 比百度搜出来的强百倍

查看全部评分总评分 : 人气 +4

回复

使用道具 举报

累计签到:2 天
连续签到:1 天
2013-10-29 18:29:38 显示全部楼层
不错,多谢分享,学习了!
回复 支持 反对

使用道具 举报

累计签到:609 天
连续签到:1 天
2013-11-12 14:35:54 显示全部楼层
异步接收图示画的很形象,赞一个
回复 支持 反对

使用道具 举报

累计签到:3 天
连续签到:1 天
2014-3-6 11:12:55 显示全部楼层
给力 谢谢 非常好 学习了
回复 支持 反对

使用道具 举报

累计签到:7 天
连续签到:1 天
2015-5-18 11:45:28 显示全部楼层
看了图示,完全懂了!
回复 支持 反对

使用道具 举报

尚未签到

2016-3-15 10:44:50 显示全部楼层
好,应该顶,今后继续努力
回复 支持 反对

使用道具 举报

累计签到:7 天
连续签到:1 天
2016-3-28 17:04:43 显示全部楼层
florian 发表于 2015-5-18 11:45
看了图示,完全懂了!

我这边看不见图,不知道什么原因,换了多台电脑都不行,你那还有图么?
回复 支持 反对

使用道具 举报

累计签到:7 天
连续签到:1 天
2016-3-28 17:06:53 显示全部楼层
图片无法显示,换了多台电脑都不行。
回复 支持 反对

使用道具 举报

累计签到:7 天
连续签到:1 天
2017-3-22 15:23:17 显示全部楼层
图片确实无法显示,什么原因呢
回复 支持 反对

使用道具 举报

累计签到:15 天
连续签到:1 天
2018-3-10 10:49:30 显示全部楼层
图没了,求大佬更新下
回复 支持 反对

使用道具 举报

累计签到:818 天
连续签到:1 天
2018-4-8 08:15:25 显示全部楼层
使用firefox也是看不到图片!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了