UART协议
简介
UART通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UART,异步收发传输器是设备间异步通信的关键模块。UART负责处理数据总线与串行口之间的串行/并行/串转换,并规定帧格式;只要通信双方使用相同的帧格式和波特率,他们就可以在不共享时钟信号的情况下只使用两条信号线(Rx 和Tx)通信过程可以完成,所以也叫。
串行通信
串行通信是指使用传输线将数据一位一位地传输。其特点是通信线路简单,通信可以通过简单的电缆实现,降低成本,适用于远程通信,但传输速度慢。
发送端的UART
未来自控设备(如)的转换为,以将其发送到接收端UART
,接收端UART将串行数据转换为用于接收设备的正常处理。
异步通信
异步通信以一个字符为传输单元的,然而在。
数据传输速率
波特率表示数据的传输速率,即每秒传输的二进制位数。每秒传输的字符数乘以位数,即波特率。。
波特率和比特率的区别
-
波特率是每秒传输多少符号
-
比特率是每秒传输多少比特。
二进制符号所含信息量为1比特,因此二进制下波特率=比特率。 计算机处理二进制数,波特率和比特率在这种环境下是一样的。
数据传输格式
-
首先发出逻辑0信号,表示字符传输的开始。UART数据传输线通常在
-
数据位:可以是5~八位逻辑0或1。ASCII码(7位),扩展BCD码(8位)大多数情况下采用
-
校准位:数据位加上此位后,1位数应为偶数(偶校验)或奇数(奇校验)
-
停止位:它是一个字符数据的结束标志。可以是1位、1.5位和2位的高电平。由于数据定期在传输线上,每个设备都有自己的时钟,两个设备之间很可能会出现小的不同步。。适用于,不同时钟同步,但是
-
空闲位置:处于逻辑1状态,表示当前线路无数据传输。
-
异步通信是根据字符传输的。只要接收设备在接收到起始信号后能够与发送设备同步,接收设备就能正确接收。下一个字符起始位置的到来重新校准了同步。
小端传输:符合人的思维 低位存储在低位置 如0x0100 0001(A) 小端传输后看到的波形是 1000 0010
大端传输:符合直观视觉 地位数据存储在高位地址 如0x0100 0001(A) 大端传输后看到的波形仍然是 0100 0001
RS-232(全双工,电平信号)
简介
RS-232是串行物理接口标准。RS-232是对电气特性和物理特性的规定,仅作用于数据传输通道,不包括数据处理。(最多是网络协议中的物理层面)。
,也就是所谓的单端通信。由于发送电平与接收电平的差仅为2V至3V因此其共模抑制能力差,再加上双绞线上的分布式电容,其最大传输距离约为15米,最高速率为20米kb/s。
IBM的PC 机将RS-232 简化成了DB-9 连接器已成为当今的事实标准。工业控制RS-232 一般只用嘴RXD(2)、TXD(3)、GND(5) 三条线。
现在选择开发板TTL的UART,或者直接UART转USB在开发板上做。
嵌入式串口一般指UART口, 但我们常常不知道它和它和它和它COM口的区别, 以及RS232, TTL等关系, , 而TTL、RS-232是指电平标准(电信号),其中UART通常使用TTL电平。
TTL(晶体管-晶体管逻辑集成电路 全双工):
市场上有很多市场上有很多USB转TTL实际上,模块是USB转TTL电平串口模块。该信号0对应0V,1对应3.3V或者5V。与单片机、SOC的IO电平兼容。但事实并非如此TTL电平,因为现在大部分数字逻辑都是CMOS工艺做的,只是用了TTL的说法。当我们进行串口通信时,我们基本上是直接从单片机出来的 TTL 电平。
- 输出高电平>2.4V,输出低电平<0.4V。在室温下,一般输出高电平为3.5V,输出低电平为0.2V。
- 最小输入高电平和低电平:输入高电平>=2.0V,输入低电平<=0.8V,噪声容限是0.4V。
UART有4个pin(VCC, GND, RX, TX), 用的TTL电平, 低电平为0(0V),高电平为1(3.3V或以上)。
优点和不足
- 通信只需要两条数据线
- 没有时钟信号
- 奇偶校准位置方便通信错误检查
- 数据包结构只需在接收端和发送端设置即可稳定通信
-
接口信号电平值高,由于232电平和TTL电平不兼容故需使用电平转换电路方能与TTL例如,对于相同的信号0x0101 0101来分别看RS232和TTL波形电平,显然RS232电平较高。
-
由于传输速率低,现在采用了新的UART波特率达到115.2Kbps
-
界面采用信号线和信号返回线,形成共同的传输形式,容易产生共模干扰,抗噪声干扰弱
-
传输距离有限,数据帧最大支持9位数据
-
RS-232 不考虑串行总线的通信
RS-485/ RS-422标准
RS422(全双工)
RS-422 电气性能及RS-485完全一样。主要区别在于:RS-422 有4 根信号线:两个发送,两个接收。RS-422 收与发是分开的,所以,也正是因为全双工要求收发有单独的信道,所以RS-422适用于两站之间的通信、星网和环网,不适用于总线网。由于接收器采用高输入阻抗和传动比RS232具有较强的驱动能力,因此允许在同一传输线上连接多个接收节点,最多可连接10个节点。主设备(Master),其余为设备(Slave),设备之间不能通信,所以RS-支持点对多的双向通信。
RS485(半双工,差分信号)
RS-点对点通信可以实现,但联网功能无法实现。为了解决这个问题,新的标准RS-485产生了。
RS-485数据信号采用它使用一对双绞线将其中一条线定义为平衡传输A,另一行定义为B。RS-485 只有2 根据信号线,只能在半双工模式下工作,常用于总线网。
RS-485可采用二线和四线方式,二线系统可实现真正的多点双向通信,采用四线连接RS-422只能实现点对多通信,即只能有一个主(Master)其余的设备是从设备开始的,但与设备相比RS-422有所改进,无论是四线还是二线连接方式,总线都可以多接收32台设备。
-
:对称信号大小相等,极性相反,差分信号用于传输有用信号。号传输过程中会遇到外部干扰信号,但是,由于两根差分信号线始终在一起,因此干扰信号一般都会同时作用在两根信号线上,形成叠加在两根信号线上大小相等相位也相同的共模信号,因此差分传输的信号对外部干扰具备很强的抗干扰能力。
-
:共模信号是作用于差分信号线上的一对大小相等极性也相同的信号,共模信号往往来自于外部干扰。
- 逻辑“1”以为+(2-6)V表示;逻辑“0”以为-(2-6)V表示。接口信号电平比RS-232-C降低了,就不易损坏接口电路的芯片,且该电平与TTL电平兼容,可方便与TTL电路连接。
- RS-485的数据最高传输速率为10Mbps,但是由于RS-485 常常要与PC 机的RS-232 口通信,所以实际上一般最高115.2Kbps。又由于太高的速率会使RS-485 传输距离减小,所以往往为9600bps 左右或以下
- RS-485接口是采用平衡驱动器和差分接收器的组合,抗共模干扰能力增强,即抗噪声干扰性好
- 在100Kb/S的传输速率下,才可以达到最大的通信距离1219M。
- RS-485总线一般最大支持32个节点,如果使用特制的485芯片,可以达到128个或者256个节点,最大的可以支持到400个节点
- 因为RS-485的远距离、多节点(32个)以及传输线成本低的特性,使得EIA RS-485成为工业应用中数据传输的首选标准
RS485接口为什么要接地
RS-485收发器共模电压范围为-7~+12V,只有满足上述条件,整个网络才能正常工作,当发送驱动器A向接收器B发送数据时,发送驱动器A的输出共模电压为VOS,由于两个系统具有各自独立的接地系统,存在着地电位差VGPD。那么,接收器输入端的共模电压VCM就会达到VCM=VOS+VGPD。虽然RS-485标准规定VOS≤3V,但VGPD可能会有很大幅度(十几伏甚至数十伏),并可能伴有强干扰信号,致使接收器共模输入VCM超出正常范围,并在传输线路上产生干扰电流,因此,必须有一条低阻的信号地。。
影响485总线通信速度和通信可靠性的三个因素
-
通信电缆中的信号反射
有两种信号因素导致信号反射:阻抗不连续和阻抗不匹配。阻抗不连续,信号在传输线末端突然遇到电缆阻抗很小甚至没有,信号在这个地方就会引起反射,如图所示。这种信号反射的原理,与光从一种媒质进入另一种媒质要引起反射是相似的。消除这种反射的方法,就必须在电缆的末端跨接一个与电缆的特性阻抗同样大小的终端电阻,使电缆的阻抗连续。由于信号在电缆上的传输是双向的,因此,在通讯电缆的另一端可跨接一个同样大小的终端电阻
-
在通讯电缆中的信号衰减
一条传输电缆可以把它看出由分布电容、分布电感和电阻联合组成的等效电路。信号的损失主要是由于电缆的分布电容和分布电感组成的LC低通滤波器
-
在通信电缆中的纯阻负载
RS232与RS485对比
-
抗干扰性:RS485 接口是采用平衡驱动器和差分接收器的组合,抗噪声干扰性好。RS232 接口使用一根信号线和一根信号返回线而构成共地的传输形式,这种共地传输容易产生共模干扰
-
传输距离:RS485 接口的最大传输距离标准值为 1200 米(9600bps 时),实际上可达 3000 米。RS232 传输距离有限,最大传输距离标准值为 50 米,实际上也只能用在 15 米左右
-
通信能力:RS-485 接口在总线上是允许连接多达128个收发器,用户可以利用单一的 RS-485 接口方便地建立起设备网络。RS-232只允许一对一通信
-
传输速率:RS-232传输速率较低,在异步传输时,波特率为 20Kbps。RS-485 的数据最高传输速率为 10Mbps
-
信号线:RS485 接口组成的半双工网络,一般只需二根信号线。RS-232 口一般只使用 RXD、TXD、GND 三条线
电平信号:电平信号的传输线中有一个参考电平线(一般是GND),然后信号线上的信号值是由信号线电平和参考电平线的电压差决定。
差分信号:传输线中没有参考电平线,所有都是信号线,然后1和0的表达靠信号线之间的电压差。
电平信号的2根通信线之间的电平差异容易受到干扰,传输容易失败;差分信号不容易受到干扰,因此传输质量比较稳定。现代通信一般都使用差分信号,在相同根数的通信线下,差分信号比电平信号要快,因为差分信号抗干扰能力强,因此1个发送周期更短。
在电平信号下,”1根参考电平线+1根信号线“可以传递1位二进制;”1根参考电平线+2根信号线“可以同时发送2位二进制;如果想同时发送8位二进制就需要9根线,在差分信号下,2根线(彼此差分)可以同时发送1位二进制;如果需要同时发送8位二进制就需要16根线。
RS422与RS485对比
RS-485的电气性能与RS-422完全一样。主要的区别在于:
- RS-422 有4 根信号线:两根发送(Y、Z)、两根接收(A、B)。由于RS-422 的收与发是分开的所以可以同时收和发(全双工)
- RS-485 只有两根数据线:发送和接收都是A 和B。由于RS-485 的收与发是共用两根线,所以不能同时收和发(半双工)
串口的工作原理
串行的数据,如何转并行
移位寄存器原理
大致的意思是:
初始状态: 设A3A2A1A0= 1011
然后Q3的输出,是在每个时钟节拍,按照这个先后顺序,把A3A2A1A0串行的输出出去。(小端)
其实利用的就是D触发器的特性。
如果我们使用8位的移位寄存器,就可以利用8个clk的时间,发一组8bit的数据通过一根导线传输出去.