精华内容
下载资源
问答
  • 异步同步通信数据帧格式

    千次阅读 2020-07-10 13:52:52
    1. 异步通信的特点及信息帧格式: 以起止式异步协议为例,下图显示的是起止式一帧数据的格式: 图1 起止式异步通信的特点是:一个字符一个字符地传输,每个字符一位一位地传输,并且传输一个字符时,总是以"起始位"开始,以...
    串口扫盲六:异步通信方式
    </div>
    

    串行通信可以分为两种类型:同步通信、异步通信.

    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. 本幀信息全部接收完,把线路上出现的高电平作为空闲位.

    当信号再次变为低时,开始进入下一幀的检测.

    3. 异步通信的发送过程

    发送端以"发送时钟"和"波特率因子"决定一位的时间长度.

     

    1. 当初始化后,或者没有信息需要发送时,发送端输出逻辑1,即空闲位,空闲位可以有任意数量.
    2. 当需要发送时,发送端首先输出逻辑0,作为起始位.
    3. 接着,发送端首先发送D0位,直到各数据位发送完.
    4. 如果需要的话,发送端输出校验位.
    5. 最后,发送端输出停止位(逻辑1).
    6. 如果没有信息需要发送时,发送端输出逻辑1,即空闲位,空闲位可以有任意数量.如果还有信息需要发送,转入第(2)步.

    对于以上发送、接收过程应注意以下几点:

    1. 接收端总是在每个字符的头部(即起始位)进行一次重新定位,因此发送端可以在字符之间插入不等长的空闲位,不影响接收端的接收.
    2. 发送端的发送时钟和接收端的接收时钟,其频率允许有一定差异,当频率差异在一定范围内,不会引起接收端检测错位,能够正确接收.并且这种频率差异不会因多个字符的连续接收而造成误差累计(因为每个字符的开始(起始位处)接收方均重新定位).只有当发送时钟和接收时钟频率差异太大,引起接收端采样错位,才造成接收错误.
    3. 起始位,校验位,停止位,空闲位的信号,由"发送移位寄存器"自动插入.在接收方,"接收移位寄存器"接收到一帧完整信息(起始,数据,校验,停止)后,仅把数据的各位送至"数据输入寄存器",即CPU从"数据输入寄存器"中读得的信息,只是有效数字,不包含起始位,校验位,停止位信息.
    展开全文
  • 3.1.2、同步通信的数据格式 3.1.3、同步通信特点 3.2、异步通信 3.2.1、异步通信的原理 3.2.2、典型异步通信的帧结构 3.2.3、异步通信其他的结构 3.2.4、CRC校验 3.2.5、异步通信特点 第四章、串口异步...

    目录

    第一章、简介

    第二章、并行通信

    第三章、串行通信

    3.1、同步通信

    3.1.1、同步通信的原理

    3.1.2、同步通信的数据格式

     3.1.3、同步通信特点

    3.2、异步通信

    3.2.1、异步通信的原理

    3.2.2、典型异步通信的帧结构

    3.2.3、异步通信其他的帧结构

    3.2.4、CRC校验

    3.2.5、异步通信特点

    第四章、串口异步通信的工程应用



    参考:

    https://blog.csdn.net/spdian/article/details/71215467

    https://www.cnblogs.com/jason-lu/articles/3171959.html

    https://www.cnblogs.com/ruishuang208/archive/2013/06/11/3132274.html

    https://blog.csdn.net/u013050857/article/details/41252789(重点)

    https://blog.csdn.net/seashine_yan/article/details/71192283

    第一章、简介

             C#提供了SerialPort串口类,可以实现异步通信。事实上,我们对非大量数据、防止阻塞、多个事件触发等等通信方式,还是用异步通信用得比较多。

            C#提供了SerialPort串口类,可以实现异步通信。事实上,我们对非大量数据、防止阻塞、多个事件触发等等通信方式,还是用异步通信用得比较多。

            C#提供了SerialPort串口类,可以实现异步通信。事实上,我们对非大量数据、防止阻塞、多个事件触发等等通信方式,还是用异步通信用得比较多。

    • CPU和外部通信有两种通信方式——并行通信和串行通信。
    • 每个通信系统——几乎包含有并行通信和串行通信。
    • 串行通信——又分为同步通信和异步通信。
    • 对于C#SerialPort类通信——串口同步通信指的是在同步执行时,线程会被阻塞,函数直到执行操作完成后才返回,导致程序的执行效率下降。而在异步执行时,即使操作还未完成,调用的函数也会立即返回,费时的I/O操作在后台执行,这样线程就可以做其它的事情,从而提高了执行效率。参考https://bbs.csdn.net/topics/390616426

     千万别混淆了,请看下面介绍串行通信

    第二章、并行通信

         省略

    第三章、串行通信

        串行通信又可分为同步通信和异步通信两种方式。

    3.1、同步通信

    3.1.1、同步通信的原理

            同步通信就是主机在进行通信前要先建立同步,即要使用相同的时钟频率,发送方的发送频率和接受方的接受频率要同步。 除了时间频率的不同外,异步通信和同步通信之间的区别还是发送数据的表示形式,异步通信一般发送单位是字符,同步通信发送单位是比特流(数据帧),但是这不是绝对的,异步通信有时也使用帧来通信。

    3.1.2、同步通信的数据格式

          同步串行通信的数据格式如下图所示,每帧信息,由3个部分组成:

    • 2个同步字符作为一个信息帧的起始标志。
    • n个连续传送的数据。
    • 2个字节循环冗余校验码(CRC)。

     3.1.3、同步通信特点

            所谓同步通信,是指数据传送是以帧为单位,帧与帧之间、帧内部的位与位之间都同步。同步串行通信的特点可以概括为:

    • 以帧为单位传送信息。
    • 在一个帧内,帧与帧之间无间隔。
    • 因为一次传输的数据块中包含的数据较多,所以接收时钟与发送进钟严格同步,通常要有同步时钟。
    • 优点:效率高、数据量大。缺点:对时钟要求高、设备昂贵。
    • 应用——通信网中,有大批量数据需要传输。
    • 因为同步方法调用会导致程序流程中途等待,所以采用同步方法的情况下往往会导致程序执行的延迟。同步调用也可以叫阻塞调用,它将阻塞当前线程,然后执行调用,调用完毕后再继续向下进行。https://blog.csdn.net/u013050857/article/details/41252789

    3.2、异步通信

    参考:

    https://blog.csdn.net/u013095415/article/details/83991859 单片机串口调试丢包验证过程记录_已解决

    https://bbs.csdn.net/topics/50049422

    http://bbs.21ic.com/icview-19681-1-1.html?ordertype=1

           异步通信过程:

              异步通信,往往需要考虑几个问题,以保证链路的信息传递的完整性:

    • 握手、心跳包、定时器——必须确保上位机和硬件模块单片机的硬件联通,两者才能正常通信。联通状态就是握手成功状态。那么如何保证两者一直处于握手成功状态呢?上位机可以在线程开个定时器,一直间隔(比如定时间隔1000ms)地给硬件模块单片机发心跳包,单片收到心跳包之后,在1000ms内给上位机回复应答信号,从而确认两者一直是否处于联通状态。
    • 包大小或者说帧大小——一帧往往设置为32字节或64字节。
    • 粘包问题、拆包问题 —— 设定好包的帧头,帧尾,只有收到帧头、帧尾,就认为接收到了一个完整数据包,而不用管包内容的长度,因为不同的包长度可能不同。一个帧必须包含枕头、帧尾
    • 丢包问题——丢包问题可以分为两种。一种情况是,比如一帧 = 32字节,你收到了20个字节,并且收到了帧头、帧尾,那么认为这个包丢失了,需要重传。还有一种情况是,你本来应该按顺序发送图片的A帧、B帧、C帧..........,但是你发现,你只收到了A帧,C帧......,B帧丢失了,没有,就需要重传B帧,没错,这种情况极少发生,但也有可能。实际的工程应用中,一般用第一种情况,就够用了,除非特别应用。
    • 误包(或误码)问题——比如某个包既收到帧头,也收到帧尾,但是包里面的内容发送了错误,采用奇偶校验、异或校验、CRC校验等方式检测出这个包有错误,那么可以重传这个包,也可以用纠错。CRC既可以找错,也可以纠错;奇偶校验等方式只能找错,不能纠错。
    • 异步通信的典型帧结构是起始位、数据位、校验位、停止位。典型的帧长度是10位或11位。若你一帧是10位,发了M = 100个帧,那么一共发送了10*M = 1000位。此时你发送了8*100个数据,有效信息占了20% = 800/1000,冗余信息占了20%。
    • 异步通信,帧结构远远不止3.2.2小结阐述的那样,还有如3.2.3小结所示。
    • 3.2.3小结的帧结构大小,与工作环境有关系、与设备有关系等等。假如一帧太长,比如1024bit,那么一旦发生误码、丢包,我们还需要重传这个包。若是频繁的重传,那么整个信道传输有效的信息(注意是有效的信息,而不是信息)就会降低。参考http://bbs.21ic.com/icview-19681-1-1.html?ordertype=1

    3.2.1、异步通信的原理

            异步通信就是发送方在任意时刻都可以发送数据,前提是接收端已经做好了接受数据的准备(如果没有做好接受准备,数据肯定发送失败),也正是因为发送方的不确定性,所以接收方要时时刻刻的准备好接受数据,同时由于每次发送数据时间间隔的不确定性,所以,在每次发送数据时都要使用明确的界定符来标示数据(字符)的开始和结束位置,可以想象这种通信方式效率很低。虽然异步通信效率低,但是对设备的要求不高,通信设备简单。

    3.2.2、典型异步通信的帧结构

            异步串行通信的数据格式如图所示,每帧信息,由4个部分组成:

    • 1位起始位,规定为低电0。——当发送设备要发送一个字符数据时,首先发出一个逻辑“0”信号,这个逻辑低电平就是起始位。起始位通过通信线传向接收设备,当接收设备检测到这个逻辑低电平后,就开始准备接收数据位信号。因此,起始位所起的作用就是表示字符传送开始。起始位往往是硬件给一个低电平,不用自己设置。https://bbs.csdn.net/topics/350103040
    • 5~8位数据位,即要传送的有效信息。——当接收设备收到起始位后,紧接着就会收到数据位。数据位的个数可以是5,6,7或8位的数据。在字符数据传送过程中,数据位从最低位开始传输。
    • 1位奇偶校验位。——常用的检验方位包括奇偶检验、CRC校验。                                                                                             奇偶校验位用于有限差错检测,通信双方在通信时需约定一致的奇偶校验方式。就数据传送而言,奇偶校验位是冗余位,但它表示数据的一种性质,这种性质用于检错,虽有限但很容易实现。
    • 1~2位停止位,规定为高电平1。——在奇偶位或数据位之后发送的是停止位,可以是1位、1.5位或2位。停止位是一个字符数据的结束标志。

    (一)、10位异步通信方式

    C#提供的串口类 SerialPort一般的异步通信方式:

    该截图中,起始位==0,数据位==8,检验==none,停止位==1,握手方式==none,就是典型的10位异步通信方式

    (二)、11位异步通信方式

    加上检验位,就是11位了。关于检验的方法

    数据量小:
    1、check sum方式 :将所有的数据按字节加起来,得到一个校验和
    2、异或方式              :将所以数据按字节异或,得到一个校验和。
    3、反码相加              :将所有数据按字节求反码再相加,这也是tcp/ip协议里用的一种办法。
    4、CRC                     :采用CRC8可以计算256字节内的数据校验,CRC既可以找错,也可以纠错

    5、偶检验:如果一组给定数据位中 1 的个数是奇数,那么偶校验位就置为 1,从而使得总的 1 的个数是偶数。

    6、奇检验:如果给定一组数据位中 1 的个数是偶数,那么奇校验位就置为 1,使得总的 1 的个数是奇数。
    数据量大:
    用CRC算法,可以是CRC16,CRC32。CRC既可以找错,也可以纠错。

    3.2.3、异步通信其他的帧结构

        参考https://zhidao.baidu.com/question/288947771.html?sort=11&rn=5&pn=0#wgt-answers

            串行通信中,帧信息一般是根据需要自己约定而确定的。其内容一般是由多个8位单字节数据组成。这是最简单的,但大多数应用中规范的做法一帧信息都会包含:帧头 + 帧长度 + 标志信息 + 内容信息  + 校验信息+帧尾。对于不同的中断,还需要考虑中断地址:
    帧头 + 帧长度 + 中断地址信息 + 标志信息 + 内容信息 + 校验信息 + 帧尾

            我在Socket/TCP通信中,串视频监控每帧的长度915000个字节,帧结构为帧头 + 帧长度 + 信息内容,这样的帧结构与本小节的帧结构类似。

    3.2.4、CRC校验

    参考https://baijiahao.baidu.com/s?id=1608965002019598869&wfr=spider&for=pc 

    (一)、什么是CRC校验?

            CRC即循环冗余校验码:是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。

    (二)、CRC校验原理

             其根本思想就是先在要发送的帧后面附加一个数(这个就是用来校验的校验码,但要注意,这里的数也是二进制序列的,下同),生成一个新帧发送给接收端。当然,这个附加的数不是随意的,它要使所生成的新帧能与发送端和接收端共同选定的某个特定数整除(注意,这里不是直接采用二进制除法,而是采用一种称之为“模2除法”)。到达接收端后,再把接收到的新帧除以(同样采用“模2除法”)这个选定的除数。因为在发送端发送数据帧之前就已通过附加一个数,做了“去余”处理(也就已经能整除了),所以结果应该是没有余数。如果有余数,则表明该帧在传输过程中出现了差错。

    模2除法:模2除法与算术除法类似,但每一位除的结果不影响其它位,即不向上一位借位,所以实际上就是异或。在循环冗余校验码(CRC)的计算中有应用到模2除法。

    (三)、CRC校验步骤

    CRC校验中有两个关键点,一是

    预先确定一个发送送端和接收端都用来作为除数的二进制比特串(或多项式)可以随机选择,也可以使用国际标准,但是最高位和最低位必须为1;二是把原始帧与上面计算出的除数进行模2除法运算,余数作为CRC校验码。

    CRC校验码计算示例:现假设选择的CRC生成多项式为G(X) = X4 + X3 + 1,要求出二进制序列10110011的CRC校验码

    下面是具体的计算过程:

    ①将多项式转化为二进制序列,由G(X) = X4 + X3 + 1可知二进制一种有五位,第4位、第三位和第零位分别为1,则序列为11001

    ②多项式的位数位5,则在数据帧的后面加上5-1位0,数据帧变为101100110000,然后使用模2除法除以除数11001,得到余数。

    ③将计算出来的CRC校验码添加在原始帧的后面,真正的数据帧为101100110100,再把这个数据帧发送到接收端。

    ④接收端收到数据帧后,用上面选定的除数,用模2除法除去,验证余数是否为0,如果为0,则说明数据帧没有出错

    (四)、CRC的应用

            参考https://wenku.baidu.com/view/1836422e66ec102de2bd960590c69ec3d5bbdbd7.html

            在CRC校验中,接收端检查到有一位错误数据后,纠正的方法包括三种:

    • 请求重新发送——当错误发生时请求重传这是一种非常普遍的纠错方式,它适用于任何一种编码传输。
    • 删除数据——删除数据”有些让人不好理解,其实我们可以这样来看,一般的数据传输不是一个两个字节,而是一段连续的数据,如果有一个接收数据出错了,我们把它删除,系统会认为这个数据包在传输过程中已经丢失,这样系统会自动发出重传请求,从而达到纠错的目的。
    • 通过余数的值由接收端自行纠正——因为CRC码是一种纠错码,把接收到的CRC码与生成多项式相除,可以确定错误位置,这时候接收端就可以。

    3.2.5、异步通信特点

            所谓异步通信,是指数据传送以帧为单位,帧与帧间的传送是完全异步的,位与位之间的传送基本上是同步的。异步串行通信的特点可以概括为:

    • 以帧为单位传送信息。
    • 相邻两帧间的间隔是任意长。
    • 因为一个帧中的比特位长度有限,所以需要的接收时钟和发送时钟只要相近就可以。
    • 异步方式特点简单的说就是:帧间异步,帧内部各位同步。
    • 优点:对时钟要求不高、成本低、便宜且容易实现。缺点:数据量小、速率低。
    • 应用——应用于在工业、实际应用中。适用于短距离、速率不高的情况下。
    • 异步调用不阻塞线程,而是把调用塞到线程池中,程序主线程或UI线程可以继续执行。https://blog.csdn.net/u013050857/article/details/41252789

    第四章、串口异步通信的工程应用

          参考:https://zhidao.baidu.com/question/1514688239830907180.html 

           这一章节,我把串口异步通信的工程应用单独拿出来讲解。第三章,虽然讲述的组帧需要考虑的问题,但是,还远远到不到工程的应用。

            串口的工程应用中,我把串口传输的信息分为两种类型,一种是数据信息类型,一种是控制信息类型。

    • 数据信息,数据量往往比较多,甚至是海量,容错率比较高,数据信息帧与帧之间关联性不大,可允许一定的丢帧,不需要丢帧重传——比如实时温度、湿度采集等等,假如有一些帧丢掉了,那对整体影响也不大。
    • 控制信息,数据量往往比较少,容错率比较低,数据信息帧与帧之间关联性大,丢帧需要重传——比如串口操作机器的指令、订单信息等等,一旦这些信息发生了丢包、误包,必须重传。

             那么,如何满足工程中的波特率、误报率、实时性大小的需求?根据波特率B,测试误比特率P1后,根据P1计算你想要的误包率P2,然后计算包大小S。最后,就确定了整体的B/P1/P2/S等等,如图4-1所示。

                                                                                                     图4-1 

    展开全文
  • 异步通信的特点及信息帧格式:以起止式异步协议为例,下图显示的是起止式一帧数据的格式:图1起止式异步通信的特点是:一个字符一个字符地传输,每个字符一位一位地传输,并且传输一个字符时,总是以"起始位"开始,以"停止...

    串行通信可以分为两种类型:同步通信、异步通信.

    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到0的跳变时,开始对"接收时钟"计数.

    当计到8个时钟时,对输入信号进行检测,若仍为低电平,则确认这是"起始位"B,而不是干扰信号.

    接收端检测到起始位后,隔16个接收时钟,对输入信号检测一次,把对应的值作为D0位数据.若为逻辑1, 作为数据位1;若为逻辑0,作为数据位0.

    再隔16个接收时钟,对输入信号检测一次,把对应的值作为D1位数据.….,直到全部数据位都输入.

    检测校验位P(如果有的话).

    接收到规定的数据位个数和校验位后,通信接口电路希望收到停止位S(逻辑1),若此时未收到逻辑1,说明出现了错误,在状态寄存器中置"帧错误"标志.若没有错误,对全部数据位进行奇偶校验,无校验错时,把数据位从移位寄存器中送数据输入寄存器.若校验错,在状态寄存器中置奇偶错标志.

    本幀信息全部接收完,把线路上出现的高电平作为空闲位.

    当信号再次变为低时,开始进入下一幀的检测.

    3. 异步通信的发送过程

    发送端以"发送时钟"和"波特率因子"决定一位的时间长度.

    当初始化后,或者没有信息需要发送时,发送端输出逻辑1,即空闲位,空闲位可以有任意数量.

    当需要发送时,发送端首先输出逻辑0,作为起始位.

    接着,发送端首先发送D0位,直到各数据位发送完.

    如果需要的话,发送端输出校验位.

    最后,发送端输出停止位(逻辑1).

    如果没有信息需要发送时,发送端输出逻辑1,即空闲位,空闲位可以有任意数量.如果还有信息需要发送,转入第(2)步.

    对于以上发送、接收过程应注意以下几点:

    接收端总是在每个字符的头部(即起始位)进行一次重新定位,因此发送端可以在字符之间插入不等长的空闲位,不影响接收端的接收.

    发送端的发送时钟和接收端的接收时钟,其频率允许有一定差异,当频率差异在一定范围内,不会引起接收端检测错位,能够正确接收.并且这种频率差异不会因多个字符的连续接收而造成误差累计(因为每个字符的开始(起始位处)接收方均重新定位).只有当发送时钟和接收时钟频率差异太大,引起接收端采样错位,才造成接收错误.

    起始位,校验位,停止位,空闲位的信号,由"发送移位寄存器"自动插入.在接收方,"接收移位寄存器"接收到一帧完整信息(起始,数据,校验,停止)后,仅把数据的各位送至"数据输入寄存器",即CPU从"数据输入寄存器"中读得的信息,只是有效数字,不包含起始位,校验位,停止位信息.

    展开全文
  • 异步通信的特点及信息帧格式:      以起止式异步协议为例,下图显示的是起止式一帧数据的格式:         图1     起止式异步通信的特点是:一个字符一个字符地传输...
    串行通信可以分为两种类型:同步通信、异步通信。
      
      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从“数据输入寄存器”中读得的信息,只是有效数字,不包含起始位、校验位、停止位信息。
    展开全文
  • 串口通讯—异步通信方式

    千次阅读 2013-03-14 12:33:26
    1.异步通信的特点及信息帧格式: 以起止式异步协议为例,下图显示的是起止式一帧数据的格式: 图1 起止式异步通信的特点是:一个字符一个字符地传输,每个字符一位一位地传输...
  • 1. 异步通信的特点及信息帧格式: 以起止式异步协议为例,下图显示的是起止式一帧数据的格式: 图1 起止式异步通信的特点是:一个字符一个字符地传输,每个字符一位一位地传输,并且传输一个字符时,总是以"起始位...
  • UART(异步串口通信)裸板编程

    千次阅读 2015-11-26 20:48:17
    比如UART,在使用异步通信传送一个字符信息时,对资料格式有如下规定:有空闲位、起始位、数据位、奇偶校验位、停止位。 2、数据帧:所谓数据帧(Data frame),就是数据链路层协议数据单元,它包括三部分:帧...
  • 串口的接收模块中,由于数据帧的定义格式,我们需要完整8个数据位首先存储一下,因为我们只有一根线rx,这里我们在模块内要串行数据转换为并行数据暂时存储 55(H) = 0101 0101(B),先
  • 什么是异步串口和同步串口  串行通信进行数据传送时是将要...异步通信采用固定的通信格式,数据以相同的帧格式传送。每一帧由起始位、数据位、奇偶校验位和停止位组成。异步串行通信的特点可以概括为: 以字符为...
  • 串口通信知识总结

    2020-06-29 15:07:03
      之前断断续续的学习了解了串口通信的相关知识,但由于没有集中地学习,导致对串口通信的... 串口通信的数据格式3.1 一完整数据3.2 奇校验与偶校验3.3 起始位与停止位3.4 波特率四. 串口通信协议4.1 RS-2324.2 T
  • 本篇文章介绍,串口协议数据帧格式、串行通信的工作方式、电平标准、编码方式及Verilog实现串口发送一个字节数据和接收一个字节数据。对于MCU串口的发送接收,可能就是1行代码就能实现串口的发送和接收:STM32的串口...
  • 串口通信(2)

    2019-07-08 21:09:55
    1.异步通信的特点及信息帧格式: 以起止式异步协议为例,下图显示的是起止式一帧数据的格式: 图1  起止式异步通信的特点是:一个字符一个字符地传输,每个字符一位一位地传输,并且传输一个字符时,总是以...
  • 单片机的串口通信

    2016-01-29 13:08:00
     方式1:10位UART(通用异步接口电路),一帧数据的格式为:1位起始位,8位数据位,1位停止位。其波特率是可变(由公式):  方式2和方式3:这两种方式都是由11位UART组成,一帧数据格式为:1位起始位,9位数据...
  • UART串口通信

    2016-12-27 15:05:06
    什么是串行通信? 将数据字节分成一位一位的形式在一条传输线上逐位地发送。 ...异步通信是指通信的发送与接收设备使用各自的...第一,数据单元——,它是双方约定好的数据格式; 第二,波特率,它决定了‘
  • 通用同步异步收发器,使用工业标准NRZ异步串行数据格式的外部设备之间进行全双工数据交换 rs232 rs485 同步 有时钟信号 IIC SPI 异步 UART(异步串行通信) 有起始位,停止位,校验位 在同步通讯中,数据信号...
  • Stm32串口通信(USART)

    2019-03-30 10:40:00
    Stm32串口通信(UART) 串口通信的分类 ...串口通信三种传递方式 ...在一帧格式中,先是一个起始位0,然后是8个数据位,规定低位在前,高位在后,接下来是奇偶校验位(能省略),最后是停止位1。用这种格式表示...
  • 51单片机串口通信

    2019-07-18 17:03:13
    1.通信方式分类 (1)并行通信 ...异步串行通信:所谓“异步”,指是双方设备使用各自时钟,以字符为单位传输,采用一种特殊的格式称为“”(如下图),且各字符之间间隙不等。 一帧数据...
  • 单片机串口通信小结

    千次阅读 2013-12-19 20:14:32
    网上有很多讲串口通信的知识点,看了很多,今天就总结一下吧,欢迎拍砖! 1.数据传输 单片机的串行通信使用的是异步串行通信,所谓异步就是指发送端和接收端使用的不是同一时钟。异步串行通信通常以字符(或者字节)...
  • 参考链接 单片机串口通信一般是11位,起始位1bit,数据位8bit,校验位1bit, 停止位1bit,串口通信分两种一种是同步通信,一种...最常用数据帧格式是(n,8,1): 1、n意思是无“奇偶校验”,即起始位; ...
  • 串口全称叫做串行接口,通常也叫做 COM 接口,串行接口指数据一个一个顺序传输,通信线路简单。 UART 全称是 Universal Asynchronous Receiver/Trasmitter,全双工异步串行收发器。通过 UART 接口与外界相连...
  • 传输帧格式的设置:默认是8位数据位,一位停止位 发送接受使能与中断:通过设置UCSR0B来根据需要选择接收或发送使能和是否使用中断,对使用中断USART操作,初始化前要关闭中断 USART0控制和状态寄存器有:UCSR0A,...
  • 一、定义UART是一种通用串行数据总线,用于异步通信。该总线实现全双工传输和接收。在嵌入式设计中,UART用于主机与辅助设备通信。二、通信协议UART作为异步串口通信协议一种,工作原理是将传输数据的每个字符一位...

空空如也

空空如也

1 2 3 4 5
收藏数 98
精华内容 39
关键字:

串口异步通信的数据帧格式