Chinaunix首页 | 论坛 | 博客
  • 博客访问: 157734
  • 博文数量: 31
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 360
  • 用 户 组: 普通用户
  • 注册时间: 2017-02-28 08:37
个人简介

没有绝活,怎能风骚.....

文章分类

全部博文(31)

文章存档

2017年(31)

我的朋友

分类: 嵌入式

2017-04-19 17:46:21

    在开始讲UART之前,先给部分不了解数据传输的同学普及一些常用概念:
    单工:单工数据传输只支持数据在一个方向上传输;
    半双工:半双工数据传输允许数据在两个方向上传输,但是在某一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信;
    全双工:全双工数据通信允许数据同时在两个方向上传输,因此全双工通信时两个单工通信方式的结合,它要求发送设备和接收设备都有独立的接收和发送能力。
    同步通信:要求通信双方以相同的时钟频率进行,而且准确协调,通过共享一个时钟或定时脉冲源保证发送方和接收方的准确同步,效率较高;
    异步通信:不要求通信双方同步,收发方可采用各自的时钟源,双方遵循异步的通信协议,以字符为数据传输单位,发送方传送字符的时间间隔不确定,发送效率比同步传送效率低。

UART
    如果大家对单片机比较熟悉,对UART这个词肯定是不陌生的。那么UART是什么呢?
    UART是通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称为UART,是一种异步收发传输器,是设备间进行异步通信的关键模块。UART负责处理数据总线和串行口之间的串/并、并/串转换,并规定了帧格式;通信双方只要采用相同的帧格式和波特率,就能在未共享时钟信号的情况下,仅用两根信号线(Rx和Tx)就可以完成通信过程,因此也称为异步串行通信
    若加入一个合适的电平转换器,如SP3232E、SP3485、UART还能用于RS-232、RS-485通信,或与计算机端口连接。UART应用非常广泛,手机、工业控制、PC等应用中都要用到UART。

UART原理
    发送数据时,CPU将并行数据写入UART,UART按照一定的格式在一根电线上串行发出;接收数据时,UART检测另一根电线上的信号,串行收集然后放在缓冲区中,CPU即可读取UART获得这些数据。UART之间以全双工方式传输数据,最精确的连线方法只有3根电线:TXD用于发送数据,RXD用于接收数据,GND用于给双方提供参考电平,连线如下:

    UART使用标准的TTL/COMS逻辑电平(0~5V、0~3.3V、0~2.5V或0~1.8V)来表示数据,高电平表示1,低电平表示0。为了增强数据的抗干扰能力、提高传输长度,通常将TTL/COMS逻辑电平转换为RS-232逻辑电平,3~12V表示0,-3~-12V表示1。
    TXD、RXD数据线以位为最小单位传输数据,而帧由具有完整意义的、不可分割的若干位组成,它包含开始位、数据位、校验位(需要的话)和停止位。发送数据之前,UART之间要约定好数据的传输速率(即每位占据的时间,其倒数称为波特率)、数据的传输格式(即有多少个数据位、是否使用校验位、是否奇校验还是偶校验、有多少个停止位)。
    数据传输流程如下:
    ①平时数据线处于空闲状态(1状态)
    ②当要发送数据时,UART改变TXD数据线的状态(变为0状态)并维持1位的时间,这样接收方检测到开始位后,在等待1.5位的时间就开始一位一位地检测数据线的状态得到所传输的数据。
    ③UART一帧中可以有5、6、7或8位的数据,发送方一位一位地改变数据线的状态将它们发送出去,首先发送最低位
    ④如果使用校验功能,UART在发送完数据后,还要发送1位校验位。有两种校验方法:奇校验、偶校验--数据位连同校验位中,状态1的数量等于奇数或者偶数。
    ⑤最后,发送停止位,数据线恢复到空闲状态(1状态)。停止位的长度有三种:1位、1.5位或2位。
    下图演示了UART使用7个数据位、偶校验、2个停止位的格式传输字符'A'(二进制位0100 0001)时,TTL/COMS逻辑电平和RS-232逻辑电平对应的波形。
    TTL/COMS逻辑电平:0 1000001 0 11
    
    RS-232逻辑电平:1000001 0 11
    

RS-232标准:
    RS-232是美国电子工业协会EIA(Electronic Industry Association)制定的一种串行物理接口标准。RS是英文“推荐标准”的缩写,232为标识号。RS-232是对电气特性以及物理特征的规定,只作用于数据的传输通路上,它并不内含对数据的处理方式。需要说明一下,很多人经常把RS-232、RS-422、RS-485误称为通讯协议,这是很不应该的,其实它们仅是关于UART通讯的一个机械和电气接口标准(顶多是网络协议中的物理层面)。该标准规定采用一个25个脚的DB-25连接器,对连接器的每个引脚的信号内容加以规定,还对各种信号的电平加以锁定。后来IBM的PC机将RS-232简化成了DB-9连接器,从而成为今天的事实标准。而工业控制的RS-232口一般只使用RXD(2)、TXD(3)、GND(5)三条线。


RS-485/RS-422标准:
    RS-232接口可以实现点对点的通信方式,但是这种方式不能实现联网的功能。于是,为了解决这个问题,一个新的标准RS-485产生了。RS-485的数据信号采用差分传输方式,也称为平衡传输,它使用一对双绞线,将其中一线定义为A,另一线定义为B。
    通常情况下,发送驱动器A、B之间的正电平在+2~+6V,是一个逻辑状态,负电平在-2~-6V,是另一个逻辑状态。另有一个信号地G,在RS-485中还有一“使能”端,而在RS-422中这是可用可不用的。
    RS-422的电气性能与RS-485完全一样。主要的区别在于:RS-422有4根信号线:两根发送、两根接收。由于RS-422的收与发是分开的,所以可以同时收和发(全双工),也正因为全双工要求收发要有单独的信道,所以RS-422适用于两个站之间的通信,星型网、环网,不可用于总线网;RS-485只有两根信号线,所以只能工作在半双工模式,常用于总线网。


RS-232 VS RS-485:
    ①抗干扰性:RS485接口是采用平衡驱动器和差分驱动器的组合,抗噪声干扰性好。RS-232接口使用一根信号线和一根信号返回线而构成共地的传输形式,这种共地传输容易产生共模干扰。
    ②传输距离:RS-485接口的最大传输距离标准值是1200米(9600bps时),实际上可达3000米。RS-232传输距离有限,最大传输距离标准值为50米,实际上也只能用在15米左右。
    ③通信能力:RS-485接口在总线上是允许连接多达128个收发器,用户可以利用单一的RS-485接口方便地建立起设备网络。RS-232只允许一对一通信。
    ④传输速率:RS-232传输速率较低,在异步传输时,波特率为20Kbps。RS-485的数据最高传输速率为10Mbps。
    ⑤信号线:RS-485接口组成的半双工网络,一般只需两根信号线;RS-232接口一般只使用RXD、TXD、GND三条线。
    ⑥电气电平值:RS-485的逻辑“1”以两线间的电压差为+(2-6)V表示;逻辑“0”以两线间的电压差为-(2-6)V表示。在RS-232中任何一条信号线的电压均为负逻辑关系。即:逻辑“1”-5~-15V;逻辑“0”+5~+15V。
    串口是一种非常通用的设备接口,是仪器仪表设备常用的通信接口,常用于远程采集设备数据或者实现远程控制。串口的开发也比较简单,是很多工程师最喜欢的接口之一。

阅读(2372) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~