zoukankan      html  css  js  c++  java
  • 你真的了解串口吗(示波器串口波形分析)

    串口是最常用的外设了,串口基本都是单片机的标配。串口通信只需要3条线组成,分别为RX、TX、GND。下面将重点分析串口数据帧组成。

    一、    串口通信帧

     串口通信帧数据如此,每帧由空闲位、起始位、数据位、校验位、停止位组成

    传输的数据是低位在前高位在后

    l  空闲:

    串口TX或RX数据线上没有传输任何数据时,则该线处于为空闲状态。空闲是TX和RX都是处于高电平。

    l  起始位:

    标识数据起始,由一个逻辑0(低电平)的数据位表示。

    l  数据位:

    可以选择的值有5,6,7,8这四个值,可以传输多个值为0或者1的bit位。这个参数最好为8,因为如果此值为其他的值时当你传输的是ASCII值时一般解析肯定会出问题。理由很简单,一个ASCII字符值为8位,如果一帧的数据位为7,那么还有一位就是不确定的值,这样就会出错。

    l  校验位:

    保证数据传输的可靠性

    数据位加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇校验),以此来校验数据传送的正确性。就比如传输“A”(01000001)为例。

    1、当为奇数校验:”A”字符的8个bit位中有两个1,那么奇偶校验位为1才能满足1的个数为奇数(奇校验)。

    2、当为偶数校验:”A”字符的8个bit位中有两个1,那么奇偶校验位为0才能满足1的个数为偶数(偶校验)。

    此位还可以去除,即不需要奇偶校验位。

    校验位一般都是硬件处理的,如STM32。但是51的校验位是需要字节集手动处理,设置为9位数据位即可收到校验值。

    校验可选设置:

    无校验 (no parity):数据包不包含校验位

    奇校验 (odd parity):如果字符数据位中"1"的数目是偶数,校验位为"1",如果"1"的数目是奇数,校验位应为"0"。保证数据位+校验位的“1”为奇数

    偶校验 (even parity):如果字符数据位中"1"的数目是偶数,则校验位应为"0",如果是奇数则为"1"。保证数据位+校验位的“1”为偶数

    mark parity:校验位始终为1

    space parity:校验位始终为0

    l  停止位:

    它是一帧数据的结束标志。可以是1bit、1.5bit、2bit个逻辑1的的数据位表示

    二、    串口波特率(比特率)

    uart中的波特率就可以认为是比特率,即每秒传输的位数(bit)。

    一般选波特率都会有9600,19200,115200等选项。

    波特率其实意思就是每秒传输这么多个比特位数(bit)。

    波特率是串口传输速率的关键作用参数,9600bps就是每秒传输9600bit(位)的意思,也就相当于:1/9600=1.041666666666667e-4秒为每个bit的传输时间

    三、    抓波形(8-1-NONE)

    串口发送数据

    发送的配置:8位数据位、1位停止位、无校验位

    发送的数据:0x55 = 0101 0101

    波形查看

     0和11为空闲电平(高电平)

    1为起始位(一个数据大小的低电平)

     2、3、4、5、6、7、8、9组成8位数据,为10101010,但是数据是低位在前,所以真是的数据位01010101

    10为停止位,高电平,可以选择一个1、1.5、2个数据大小的时间

    四、    抓波形(8-1-EVEN)

    串口发送数据

    发送的配置:8位数据位、1位停止位、偶校验(数据+校验的1为偶数)

    发送的数据:0x55 = 0101 0101

    波形查看

    0和12为空闲电平(高电平)

    1为起始位(一个数据大小的低电平)

    2、3、4、5、6、7、8、9组成8位数据,为10101010,但是数据是低位在前,所以真是的数据位01010101

    10为校验位,因为是偶校验计算方式是数据位+校验位的1为偶数即可

    11为停止位,高电平,可以选择一个1、1.5、2个数据大小的时间

    五、    抓波形(x-1-NONE)

    串口发送数据

    发送的配置:(8,7,6,5)位数据位、1位停止位、无检验

    发送的数据:0x13 = 0001 0011

    8位数据位

    7位数据位

     

    6位数据位

    5位数据位

    5位数据位,使用奇校验(ODD)

    分析:

    *  数据的长度会根据奇偶校验位选择及数据位选择动态变化。

    *  数据位设置长度小于值本身的长度,将会出现截取现象,将自动截取低位,然后发送

    * 校验位只校验真实发送的数据


  • 相关阅读:
    类加载器的双亲委派机制
    类加载器
    Linux的cut命令
    Nacos服务发现简单应用
    Nacos当注册中心
    通过pscp命令从Windows向Linux传输大文件
    docker-compose安装nacos集群
    转一篇用分布式解决ERP问题
    转一篇云计算/大数据的通俗文章
    csdn上讲一个实时计算架构比较清晰的一篇文章
  • 原文地址:https://www.cnblogs.com/dongxiaodong/p/14163409.html
Copyright © 2011-2022 走看看