zoukankan      html  css  js  c++  java
  • 细说串口

    一、硬件

    二、通信帧

    串口数据包的基本组成

    由空闲位、起始位、数据位、校验位、停止位组成      传输的数据是低位在前高位在后

    空闲:

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

    起始位:

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

    数据位:

    可以选择的值有5,6,7,8这四个值,可以传输多个值为0或者1的bit位。

    这个参数建议为8,因为如果此值为其他的值时当你传输的是ASCII值时一般解析肯定会出问题。理由很简单,一个ASCII字符值为8位,如果一帧的数据位为7,那么还有一位就是不确定的值,这样就会出错。

    校验位:

    保证数据传输的可靠性

    数据位加上这一位后,使得“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

    停止位:

    它是一帧数据的结束标志。可以是1bit、1.5bit、2bit个逻辑1的的数据位表示,它用来帮助接受信号方硬件重同步。

    波特率

    串口异步通讯,异步通讯中由于没有时钟信号(DB9接口中是没有时钟信号的),所以两个通讯设备之间需要约定好波特率,即每个码元的长度,以便对信号进行解码。常见的波特率为4800、9600、115200 等。

     

    实际传输速度
    波特率115200 = 115200 (位/秒)
    如果没有校验位,就应该除以 10,得到的是每秒字节数:
    波特率115200 = 115200 (位/秒) = 11520 (字节/秒)
    再除以 1024,就是每秒 KB 数:
    波特率115200 = 115200 (位/秒) = 11.25 (KB/秒)
     
    如果有一位奇偶校验位,就应该除以 11,得到的是每秒字节数。
    最后:波特率115200 = 115200 (位/秒) = 10.22 (KB/秒)

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

  • 相关阅读:
    java8 快速实现List转map 、分组、过滤等操作
    Centos7系统备份与恢复
    BDI3000仿真器命令
    MIPS32地址映射和TLB
    三层交换机之报文转发流程
    三层交换机之搜索引擎
    三层交换机之端口丢包问题分析
    嵌入式Linux之虚拟内存管理
    Windows网络命令大全
    三层交换机之端口镜像(Mirror)
  • 原文地址:https://www.cnblogs.com/zjvskn/p/15324104.html
Copyright © 2011-2022 走看看