zoukankan      html  css  js  c++  java
  • 串口通讯(上)——基础概念

     

    通讯协议

    通讯协议分为物理层和协议层。

    • 物理层:规定通讯系统中具有机械、电子功能部分的特性,确保原始数据在物理媒体的传输;
    • 协议层:规定通讯逻辑,统一收发双方的数据打包、解包标准。

    串口通讯物理层之RS-232

    RS-232标准主要规定了信号用途、通讯接口和信号电平标准。如图9-1为常见的设备间串口通讯结构图。

    图9-1

    如上图所示,每个设备都有一个DB9接口,通过DB9接口连接RS-232标准的串口线进行数据传输。由于通过RS-232标准传输的电平信号到达设备后,不能直接被识别,所以会通过电平转换芯片(例如MAX3232、SP3232芯片等)转换成能识别的TTL电平信号,实现通讯。

    相互通讯的两个设备间,一个设备发送数据,一个设备接收数据。一般情况下,发送数据的设备称为DTE,如计算机;接收数据的设备称为DCE,如调制解调器。

    这里需要介绍下DB9接口。如图9-2为DB9标准的公头、母头接法(接线口以针式引出信号线为公头,以孔式引出信号线为母头)。

    图9-2

    如上图,以公头为例,有9条信号线,其中,

    • RXD:用于接收DCE发来的数据信号,即输入;
    • TXD:用于发送DTE的信号,即输出。公头和母头的RXD和TXD应交叉连接;
    • GND:用于平衡设备双方的地电位,即共地。

    其他信号线如DCD、DTR、DSR、RTS、CTS等,使用逻辑1表示有效信号,逻辑0表示无效信号。如DTE端的RTS信号线置1时,是为了告知DCE设备本机已准备好接收数据,而置0则表示未准备就绪。

    串口通讯协议层

    协议层规定了数据包的内容,内容包含了起始位、主体数据、校验位及停止位,双方需要约定一致的数据包格式才能正常收发数据。如图9-3为数据包的基本组成。

    图9-3

    波特率

    串口异步通讯中由于没有时钟信号,所以通讯双方需要约定好波特率,即每个码元的长度,以便对信号进行解码。常见的波特率有4800、9600、115200等。


    起始位、停止位

    数据包从起始位开始,到停止位结束。起始信号用逻辑0的数据位表示,停止信号由0.5、1、1.5或2个逻辑1的数据位表示,只要双方约定一致即可。

    有效数据

    起始位之后便是传输的主体数据内容了,也称为有效数据,其长度一般被约定为5、6、7或8位长。

    数据校验

    由于在通讯过程中易受到外部干扰导致传输数据出现偏差,所以在有效数据之后加上校验位解决。校验方法有奇校验(odd)、偶校验(even)、0校验(space)、1校验(mark)及无校验(noparity)。

    奇校验要求有效数据和校验位中“1”的个数为奇数,比如一个8位长的有效数据为:01101001,此时共有4个“1”,为达到奇校验效果,校验位为“1”,最后传输的是8位有效数据加1位校验位,共9位。

    而偶校验刚好相反,要求有效数据和校验位的“1”数量为偶数,则此时为达到偶校验效果,校验位为“0”。

    而0校验则无论有效数据中是什么数据内容,校验位总是为“0”,1校验校验位总是为“1”。

  • 相关阅读:
    Sqlserver 实际开发中表变量的用法
    Python Day 20 面向对象 (面向对象的组合用法,面向对象的三大特性
    Python Day 19 面向对象(初识面向对象)
    Python Day 18 常用模块(模块和包)
    Python Day 17 常用模块(常用模块一 时间模块,random模块,os模块,sys模块,序列化模块)
    Python Day 15 函数(递归函数、二分查找算法)
    Python Day 14 函数(内置函数,匿名函数(lambda表达式))
    Python Day 13 函数(迭代器,生成器,列表推导式,生成器表达式)
    Python Day 11 + Python Day 12 函数(函数名的应用,闭包,装饰器)
    Python Day 10 函数(名称空间,作用域,作用域链,加载顺序等; 函数的嵌套 global,nonlocal)
  • 原文地址:https://www.cnblogs.com/fire909090/p/8875922.html
Copyright © 2011-2022 走看看