zoukankan      html  css  js  c++  java
  • 串口通信概念

    串口、UART口、COM口、USB口是指物理接口形式(硬件)。而 TTL、RS-232、RS-485是指的电平标准(电信号)。

    串口:串口是一个泛称,UART、TTL、RS232、RS485都遵循类似的通信时序协议,因此都被通称为串口。

    UART接口:通用异步收发器(Universal Asynchronous Receiver/Transmitter),UART是串口收发的逻辑电路,这部分可以独立成芯片,也可以作为模块嵌入到其他芯片里,单片机、SOC、PC里都会有UART模块。

    COM口:特指台式计算机或一些电子设备上的D-SUB外形(一种连接器结构,VGA接口的连接器也是D-SUB)的串行通信口,应用了串口通信时序和RS232的逻辑电平。

    USB口:通用串行总线,和串口完全是两个概念。虽然也是串行方式通信,但由于USB的通信时序和信号电平都和串口完全不同,因此和串口没有任何关系。USB是高速的通信接口,用于PC连接各种外设,U盘、键鼠、移动硬盘、当然也包括"USB转串口"的模块。(USB转串口模块,就是USB接口的UART模块)

    TTL、RS232、RS485都是一种逻辑电平的表示方式

    TTL:TTL指双极型三极管逻辑电路,市面上很多"USB转TTL"模块,实际上是"USB转TTL电平的串口"模块。这种信号0对应0V,1对应3.3V或5V。与单片机、SOC的IO电平兼容。不过实际也不一定是TTL电平,因为现在大部分数字逻辑都是CMOS工艺做的,只是沿用了TTL的说法。我们进行串口通信的时候 从单片机直接出来的基本是都是 TTL 电平。  

    TTL电平:全双工(逻辑1:2.4V ~ 5V,逻辑0:0V ~ 0.5V)

    1、硬件框架图如下,TTL用于两个MCU之间通信

    2、0和1表示

     

    RS232:是电子工业协会制定的异步传输标准接口,同时对应着电平标准和通信协议(时序),其电平标准:+3V ~ +15V对应0,-3V ~ -15V对应1。RS232的逻辑电平和TTL不一样但是协议一样。

    RS-232电平:全双工(逻辑1:-15V ~ -3V,逻辑0:+3V ~ +15V)

    1、硬件框图如下

    2、0和1表示

    RS485:RS485是一种串口接口标准,为了长距离传输采用差分方式传输,传输的是差分信号,抗干扰能力比RS232强很多。两线压差为-(2~6)V表示0,两线压差为+(2~6)V表示1。

    RS-485:半双工、(逻辑1:+2V ~ +6V,逻辑0:-6V ~ -2V)这里的电平指AB两线间的电压差

    1、硬件框图如下:

    2、0和1表示

    COM口即串行通讯端口,简称串口。这里区别于USB的"通用串行总线"和硬盘的"SATA"。

    一般我们见到的是两种物理标准。D型9针插头,和4针杜邦头两种。这是常见的4针串口,在电路板上常见,经常上边还带有杜邦插针,有时候还会有第五根针,3.3V电源端。由于是预留在电路板上的,协议可以有很多种,要看具体设备。

    在嵌入式里面说的串口,一般是指UART口,但是我们经常搞不清楚它和COM口的区别,以及RS232、TTL等关系,实际上UART、COM指的是物理接口形式(硬件),而TTL、RS-232是指的电平标准(电信号)。

    UART有4个pin(VCC、GND、RX、TX),用的是TTL电平,低电平为0(0V),高电平为1(3.3V或以上)。

    D型9针串口,这种接口的协议只有两种:RS-232和RS-485。不会是TTL电平的。一般只接出RXD、TXD,外加GND。

    接设备的时候,一般只接GND、RXD、TXD。不会接Vcc或者+3.3V的电源线,避免与目标设备上的供电冲突。GND给收发双方提供参考电平。TXD和RXD数据线以bit为最小单位传输数据,一帧包含:起始位、数据位、校验位、停止位。

    PL2303、CP2102芯片是USB转TTL串口的芯片,用USB来扩展串口(TTL电平)。USB转TTL串口如下图:

    MAX232芯片是TTL电平与RS232电平的专用双向转换芯片,可以TTL转RS-232,也可以RS-232转TTL。如下图:

    UART是通用异步收发传输器,它是完成一个特定的功能的硬件,它本身不是协议。它的最基本功能,是串行数据和并行数据之间的转换。计算机中的数据以Byte为基本单位,对一个Byte的存取是并行的,即同时取得/写入8个bit。而串行通信,则需要将这个Byte"打碎",按照时间顺序来收发以实现串行。它是设备间进行异步通信的关键模块,UART负责处理数据总线和串行口之间的串/并、并/串转换,并规定了帧格式;通信双方只要采用相同的帧格式和波特率,就能在未共享时钟信号的情况下,仅用两根信号线(Rx 和Tx)就可以完成通信过程,因此也称为异步串行通信。

    例如:内存中的数据是:11100101

    串行发送的实际效果是:1->0->1->0->0->1->1->1

    接收则是:1->1->1->0->0->1->0->1

    RS232/RS485是两种不同的电气协议,也就是说是对电气特性以及物理特性的规定,作用于数据的传输通路上,它并不内含对数据的处理方式。

    比如RS232使用3v ~ 15v有效电平,而UART,因为对电气特性并没有规定,所以直接使用CPU使用的电平,就是所谓的TTL电平(0~3.3V之间)。更具体的,电气的特性也决定了线路的连接方式,比如RS232,规定用电平表示数据,因此线路就是单线路的,用两根线才能达到全双工的目的。而RS485, 使用差分电平表示数据,因此必须用两根线才能达到传输数据的基本要求,要实现全双工必需用4根线。但是,无论使用RS232还是RS485,它们与UART都是相对独立的,但是由于电气特性的差别,必须要有专用的器件和UART接驳,才能完成数据在线路和UART之间的正常流动。

    总结:从某种意义上,可以说线路上存在的仅仅是电流,而RS232/RS485规定了这些电流在什么样的线路上流动和流动的样式;在UART那里,电流才被解释和组装成数据,并变成CPU可直接读写的形式。

    RS-232与RS-485的区别

    • 传输方式不同。RS-232采取不平衡传输方式,即所谓单端通讯。而RS485则采用平衡传输,即差分传输方式。
    • 传输距离不同。RS-232适合本地设备之间的通信,传输距离一般不超过20m。而RS-485的传输距离为几十米到上千米。
    • 能否支持多点通讯。RS-232只允许一对一通信,而RS-485接口在总线上是允许连接多达128个收发器。
    • 接口的物理结构方面:
      • RS-232接口连接器使用型号为DB-25的25芯插头座。一些设备与PC机连接的RS-232接口,因为不使用对方的传送控制信号,只需三条接口线,即RXD、TXD、GND,所以采用DB-9的9芯插头座,传输线采用屏蔽双绞线。
      • RS-485无具体的物理形状,根据工程的实际情况而采用的接口。
    • 接口电气方面
      • RS-232传输电平信号接口的信号电平值较高,易损坏接口电路的芯片,又因为与TTL 电平不兼容故需使用电平转换电路方能与TTL电路连接。抗干扰能力差。
      • RS-485传输差分信号逻辑1以两线间的电压差为+(2-6)V表示;逻辑0以两线间的电压差为-(2-6)V表示。接口信号电平比RS-232降低了,不易损坏接口电路的芯片,且该电平与TTL电平兼容,可方便与TTL 电路连接。抗干扰能力。
    • 通讯线的区别
      • RS-232可以采用三芯双绞线、三芯屏蔽线等。
      • RS-485可以采用两芯双绞线、两芯屏蔽线等。
    • 传输数据的最大波特率
      • RS-232传输效率较低,最高波特率为19200bps。虽然传输速度很慢,但在很多场合还是很实用的。可以连接各种设备,例如监控、其它的设备升级或调试等都可能需要用到它。功能与USB比较接近,随着USB端口的越来越普遍,将会出现更多的把USB转换成RS-232或其它接口的转换装置。通过USB接口可连接更多的RS-232设备,不仅可获得更高的传输速度,实现真正的即插即用,同时解决了USB接口不能远距离传输的缺点。
      • RS-485的数据最高传输速率为10Mbps。

    单工、半双工和全双工的区别

    • 单工:数据只能在一个方向上传输,不能实现双方通信。如电视、广播
    • 半双工:允许数据在两个方向上传输,但是同一时间数据只能在一个方向上传输,其实际上是切换的单工。如对讲机
    • 全双工:允许数据在两个方向上同时传输。如手机通话

  • 相关阅读:
    vs里替换的正则表达式引用
    javascript学习
    filter用法(使静态页面和js通过iis的asp.net过滤器)
    表格的交替选择行【jquery中siblings的用法】
    表格的cell固定宽度,当内容达到宽度时换行
    collection模块(具名元组、队列、有序字典、默认值字典)、time 模块、随机模块:random、os模块、sys模块、序列化模块
    继承的用法、属性的查找顺序、组合、新式类与经典类、菱形继承等
    多态、以及常用的关于类的方法(isinstance、issubclass、slots等)运算符重载的实现、上下文管理等
    封装、prorerty装饰器、python实现封装的原理等
    面向对象、类和对象、__dict__方法、__init__方法、对象绑定方法、类绑定方法、对象交互
  • 原文地址:https://www.cnblogs.com/xi-jie/p/12336747.html
Copyright © 2011-2022 走看看