详解UART

UART(Universal Asynchronous Receiver and Transmitter)通用异步收发器,从硬件角度看,实物表现为独立的模块化芯片,或作为集成于微处理器中的周边设备,在开发板设计和测试阶段用来控制CPU与其余部分的信息传送,将数据在串行传输与并行传输间进行转换。UART作为软件协议来看,是异步串口通信协议的缩写,包括了RS232、RS499、RS423、RS422和RS485等接口标准规范和总线标准规范,即UART是异步串口通信的总称。通信协议属于通信网络中的数据链路层的概念。

COM口是针对串行通信协议的一种端口,是PC上异步串行通信的简写,大部分为9针孔D型。COM口里分RS232、RS422和RS485,传输功能依次递增,所以RS485也是9针孔D型。由于历史原因,IBM的PC外部接口配置为RS232,成为实际上的PC界默认标准,现在PC的COM口均为RS232。若配有多个异步串行通信接口,则分别称为COM1、COM2……

RS232或者RS485,是指通信协议传输方式的类别之一,采用这类通信方式的,可以有多种协议,包括串行通信,现场总线方式等。为完成某个通信处理,首先会问通信协议是什么,比如回答为串口、现场总线、以太网等;然后会确定该协议下的通信端口类型,比如回答:USB口、RS232、RS422、RS485。

总的来说,对于一项通信任务,通信协议可以使用UART协议,而UART协议可以通过COM端口来实现硬件连线,此协议下的传输方式可以选用RS232或者RS485等。PS:注意使用电脑上的串口与微处理器通信时,首先要经过转压芯片(例如MAX232)来实现电平转化。

TTL 高电平1是>=2.4V,低电平0是<=0.5V(对于5V或3.3V电源电压);
RS232采用的是负逻辑,高电平1是-15V~-3V,低电平0是+3V~+15V;
CMOS电平以电源为参考,高电平1是>=0.7VCC,低电平0是<=0.2VCC。

UART引脚和电平转换
UART、COM指的是物理接口形式(硬件),而TTL、RS-232指的是电平标准(电信号)。UART有4个pin(VCC, GND, RX, TX), 用的TTL电平, 低电平为0(0V),高电平为1(3.3V或以上)。COM口是台式机上常用的口,9个pin,用的RS232电平, 是负逻辑电平,定义+5~+12V为低电平,而-12~-5V为高电平。

VCC:供电pin,一般是3.3v,这个pin一般不接更安全,避免与目标设备上的供电冲突。

GND:接地pin,有的时候rx接受数据有问题,就要接上这个pin,一般也可不接

RX:接收数据pin

TX:发送数据pin,之前碰到串口只能收数据,不能发数据的问题,后来发现原来是设置了流控制,取消就可以了,适用于putty、SecureCRT


一般uart控制器在嵌入式系统里面都做在cpu一起,像飞思卡尔的IMX6芯片就是这样,有多个uart控制器。

常用UART口进行调试,但是UART的数据要传到电脑上分析就要匹配电脑的接口,通常电脑使用接口有COM口和USB口(最终在电脑上是一个虚拟的COM口),但是要想连上这两种接口都要需要进行硬件接口转换和电平转换。MAX232芯片是 TTL电平与RS232电平的专用双向转换芯片,可以TTL转RS-232,也可以RS-232转TTL。PL2303、CP2102芯片是 USB 转 TTL串口的芯片,用USB来扩展串口(TTL电平)。

如果连接电脑COM口, 需要一个类似下图的转换小板, 它实现了TTL电平和RS232电平互转。

如果要连接USB接口, 需要类似下面的小板, 它实现了TTL电平和USB电平的转换,这种使用的较多。

UART通信协议

UART是异步串行通信。

串行通信是指利用一条传输线将资料一位位地顺序传送。特点是通信线路简单,利用简单的线缆就可实现通信,降低成本,适用于远距离通信、但传输速度慢的应用场合。

异步通信是以一个字符为传输单位,通信中两个字符间的时间间隔多少是不固定的,然而在同一个字符中的两个相邻位间的时间间隔是固定的。

数据传输速率用波特率来表示,即每秒钟传送的二进制位数。例如数据传输速率为120字符/秒,而每一个字符为10位(1个起始位,7个数据位,1个校验位,1个结束位),则其传送的波特率为10x120=1200字符/秒=1200波特。

数据通信格式如下图:

其中各位的意义如下:
起始位:先发出一个逻辑0信号,表示传输字符的开始。
数据位:可以是5~8位逻辑0或1,如ASCII码(7位),扩展BCD码(8位),小端传输。
校验位:数据位加上这一位后,使得1的位数应为偶数(偶校验)或奇数(奇校验)。
停止位:它是一个字符数据的结束标志。可以是1位、1.5位、2位的高电平。
空闲位:处于逻辑1状态,表示当前线路上没有资料传送。

注:异步通信是按字符传输的,接收设备在收到起始信号之后只要在一个字符的传输时间内能和发送设备保持同步就能正确接收。下一个字符起始位的到来又使同步重新校准(依靠检测起始位来实现发送与接收方的时钟自同步的)

各种串行通信接口标准
RS232、RS499、RS423、RS422和RS485等,对应各种异步串行通信口的接口标准和总线标准,规定了通信口的电气特性、传输速率、连接特性和接口的机械特性等,是物理层的概念。USB是近几年发展起来的新型接口标准,主要应用于高速数据传输领域。

RS-232-C:也称标准串口,是目前最常用的一种串行通讯接口。它是在1970年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。它的全名是“数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换接口技术标准”。传统的RS-232-C接口标准有22根线,采用标准25芯D型插头座,后来的PC上使用了简化的9芯D型插座。现在应用在25芯插头座已很少采用,现在的电脑一般有两个串行口:COM1和COM2,有很多手机数据线或者物流接收器都采用COM口与计算机相连。

RS-422:为改进RS-232通信距离短、速率低的特点,RS-422定义了一种平衡通信接口,将传输速率提高到10Mb/s,传输距离延长到4000英尺(速率低于100kb/s时),并允许在一条平衡总线上连接最多10个接收器。RS-422是一种单机发送、多机接收的单向、平衡传输规范,并命名为TIA/EIA-422-A标准。

RS-485:为扩展应用范围,EIA又于1983年在RS-422基础上制定了RS-485标准,增加了多点、双向通信能力,即允许多个发送器连接到同一条总线上,同时增加了发送器的驱动能力和冲突保护特性,扩展了总线共模范围,后命名为TIA/EIA-485-A标准。

USB:Universal Serial Bus通用串行总线,是目前电脑上应用较广泛的接口规范,由Intel、Microsoft、Compaq、IBM、NEC、Northern Telcom等几家大厂商发起的新型外设接口标准。USB接口是电脑主板上的一种四针接口,其中中间两根针传输数据,两边两根针给外设供电。USB接口速度快、连接简单、不需要外接电源,传输速度12Mbps,USB2.0可达480Mbps。电缆最大长度5米,USB电缆有4条线,2条信号线,2条电源线,可提供5V电源,USB电缆还分屏蔽和非屏蔽两种,屏蔽电缆传输速度可达12Mbps,价格较贵,非屏蔽电缆速度为1.5Mbps,但价格便宜。USB通过串联方式最多可串联127个设备,支持热插拔。

RJ-45接口是以太网最为常用的接口。RJ45是一个常用名称,指的是由IEC(60)603-7标准化,使用由国际性的接插件标准定义的8个位置(8针)的模块化插孔或者插头。

文章来源:ivy_reny 的博客