接口/总线/驱动
通用异步收发传输器通常称作UART,UART是一种通用串行数据总线,用于异步通信。该总线双向通信,可以实现全双工传输和接收。在嵌入式设计中,UART用于主机与辅助设备通信,如汽车音响与外接AP之间的通信,与PC机通信包括与监控调试器和其它器件,如EEPROM通信。
⑵ 输出移位寄存器,它接收从输出缓冲器送来的并行数据,以发送时钟的速率把数据逐位移出,即将并行数据转换为串行数据输出。
⑶ 输入移位寄存器,它以接收时钟的速率把出现在串行数据输入线上的数据逐位移入,当数据装满后,并行送往输入缓冲寄存器,即将串行数据转换成并行数据。
⑷ 输入缓冲寄存器,它从输入移位寄存器中接收并行数据,然后由CPU取走。
⑸控制寄存器,它接收CPU送来的控制字,由控制字的内容,决定通信时的传输方式以及数据格式等。例如采用异步方式还是同步方式,数据字符的位数,有无奇偶校验,是奇校验还是偶校验,停止位的位数等参数。
⑹状态寄存器。状态寄存器中存放着接口的各种状态信息,例如输出缓冲区是否空,输入字符是否准备好等。在通信过程中,当符合某种状态时,接口中的状态检测逻辑将状态寄存器的相应位置“1”,以便让CPU查询。
(1)UART的TXD通常情况处于高电平的状态
(2)UART准备传输数据的时候,TXD从高电平转变为低电平(即从1变0)并维持一位的传输时间。这样接收方在检测到TXD传输的电平有高电平变为低电平的时候准备开始接收数据。
(3)UART一帧有5,6,7,8位的数据,TXD由高电平转变为低电平并保持一位的时候开始传输数据。传输数据是一位一位的进行高低电平传输。首先发送的是低位。
(4)UART如果使用校验位时,在发送数据结束时候会紧跟着一位校验位。有两种校验方法:奇校验和偶校验
(5)最后发送停止位,TXD数据线恢复到正常状态,停止位的长度有三种。1位,1.5位,2位
个人计算机上的通讯接口之一,由电子工业协会(Electronic Industries Association,EIA) 所制定的异步传输标准接口。通常 RS-232 接口以9个引脚 (DB-9) 或是25个引脚 (DB-25) 的型态出现,一般个人计算机上会有两组 RS-232 接口,分别称为 COM1 和 COM2。
在串行通讯时,要求通讯双方都采用一个标准接口,使不同的设备可以方便地连接起来进行通讯。RS-232-C接口(又称EIARS-232-C)是目前最常用的一种串行通讯接口。(“RS-232-C”中的“-C”只不过表示RS-232的版本,所以与“RS-232”简称是一样的)
最右边的是串口接口 统称为RS232接口(封装DB9)
通信过程中只有两个脚参与通信
2脚:电脑的输入RXD
3脚:电脑的输出TXD 通过2 ,3 脚就可以实现全双工(可同时收发)的串行异步 通信
5脚:接地
RS232的引脚电路连接完成(就三个脚)
对于单片机
单片机的P3口是有两个复用接口RXD 和TXD 这是单片机进行串行通信的收发口 连接应该错位的对应到电脑的TDX RDX上
注意:单片机和rs232的电平标准是不一样的(各种电平标准见另一word)
单片机的电平标准 TTL电平 :+5V表示1 0V表示0
Rs232的电平标准 +15/+13 V表示1 -15/-13 表示0
所以 单片机与电脑串口通信就应该遵循下面的连接方式:
在单片机与上位机给出的rs232口之间 通过电平转换电路(最上面图中的Max232芯片) 实现TTL电平与RS232电平之间的转换
为扩展应用范围,美国电子工业协会(EIA)又于1983年在RS-422基础上制定了RS-485标准,增加了多点、双向通信能力,即允许多个发送器连接到同 一条总线上,同时增加了发送器的驱动能力和冲突保护特性,扩展了总线共模范围,后命名为TIA/EIA-485-A标准。
RS485接口组成的半双工网络,一般是两线制(以前有四线制接法,只能实现点对点的通信方式,现很少采用),多采用屏蔽双绞线传输。这种接线方式为总线式拓扑结构在同一总线上最多可以挂接32个结点。在RS485通信网络中一般采用的是主从通信方式,即一个主机带多个从机。很多情况下,连接RS-485通信链路时只是简单地用一对双绞线将各个接口的“A”、“B”端连接起来。RS485接口连接器采用DB-9的9芯插头座,与智能终端RS485接口采用DB-9(孔),与键盘连接的键盘接口RS485采用DB-9(针)。
1. RS-485的电气特性:采用差分信号正逻辑,逻辑“1”以两线间的电压差为+(2~6)V表示;逻辑”0“以两线间的电压差为-(2~6)V表示。接口信号电平比RS-232-C降低了,就不易损坏接口电路的芯片, 且该电平与TTL电平兼容,可方便与TTL电路连接。
2. RS-485的数据最高传输速率为10Mbps。
3. RS-485接口是采用平衡驱动器和差分接收器的组合,抗共模干扰能力增强,即抗噪声干扰性好。、
4. RS-485最大的通信距离约为1219m,最大传输速率为10Mbps,传输速率与传输距离成反比,传输速率越低,传输距离越长,如果需传输比RS-485最大通信距离更长的距离,需要加485中继器。RS-485总线一般最大支持32个节点,如果使用特制的485芯片,可以达到128个或者256个节点,最大的可以支持到400个节点。
RS485是一种在工业上作为数据交换的手段而广泛使用的串行通信方式,数据信号采用差分传输方式,也称作平衡传输,因此具有较强的抗干扰能力。它采用一对双绞线,将其中一线定义为A,另一线定义为B。
通常情况下,RS485的信号在传送出去之前会先分解成正负对称的两条线路(即我们常说的A、B信号线),当到达接收端后,再将信号相减还原成原来的信号。发送驱动器A、B之间的正电平在+2~6V,是一个正1逻辑状态;负电平在-2~6V,是一个负0逻辑状态;另有一个信号地C。在RS485中还有一“使能”端。“使能”端是用于控制发送驱动器与传输线的切断与连接。当“使能”端起作用时,发送驱动器处于高阻状态,称作“第三态”,即它是有别于逻辑“1”与“0”的第三态。
接收端与发送端的电平逻辑规定,收、发端通过平衡双绞线将AA与BB对应相连,当在接收端AB之间(DT)=(D+)-(D-)有大于+200mV的电平时,输出正逻辑电平,小于-200mV时,输出负逻辑电平。接收器接收平衡线上的电平范围通常在200mV~6V之间。
例如:发送“1”时,驱动器收到控制器发送来的高电平,之后A端输出高电平,B端输出低电平;接收器A端收到高电平,B端收到低电平,两个信号相减得到“1”。同理,发送“0”时,驱动器收到控制发送来的低电平,之后A、B两端分别输出低、高电平,接收端A、B则接收到低、高电平,两个信号相减后得到“0”。
如果受到干扰,则接收端AB之间(DT)=[(D+)+Noise]-[(D-)+Noise]= (D+)-(D-),由此可以看出干扰信号被消除。
串口通讯是电子工程师和嵌入式开发工程师面对的最基本问题,RS232则是其中最简单最常用的通讯方式。但是初学者往往搞不清有关的名词如UART和RS232或RS485之间是什么关系,因为它们经常被放到语句中同等的位置使用。在百度搜索二者的区别,可以看到排在最前面的答案充斥着混淆的概念。就此,谈谈我对这几个概念的理解,希望能帮初学者厘清它们之间的关系。
通讯问题,和交通是一样的。串口通信,我们这里可以用公交来类比。
公交运行可以简单分成两个部分:
1、车站
2、公路
其中车站决定了车上装什么(人),怎么发送(班次)等。
当汽车跑在路上,就要遵守公路交通的规则,过桥有过桥的规则,高速有高速的规则,和车站没有关系了。
回到串口通讯,其实,UART就相当于车站,而RS232/RS485则对应于公路的规则。
UART,是通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),既然是“器”,显然,它就是个设备而已,要完成一个特定的功能的硬件,它本身并不是协议。那么它要完成什么功能呢?它的最基本功能,是串行数据和并行数据之间的转换。我们知道,计算机中的数据以Byte为基本单位,对一个Byte的存取是并行的,即,同时取得/写入8个bit。而串行通信,需要把这个Byte“打碎”,按照时间顺序来收发以实现串行。例如:
内存中的数据是: 1 1 1 0 0 1 0 1
串行发送的实际效果是(按时间排序【注1】):
1
0
1
0
0
1
1
1
接收则是上述过程的逆过程。
这就是UART做的最基本工作,进一步的,它还要控制“发车的班次”,比如确认一个Byte的这8个bit是什么时候开始的,又是什么时候结束的,两个班次之间至少要隔多长时间的缓冲,等等。这一部分,也具有协议的特征,但是相对于道路上的协议,更具有一般性,或曰,是与车在什么道路上开,相对独立的。
那么道路上的规定是什么样的呢?
RS232/RS485,是两种不同的电气协议,也就是说,是对电气特性以及物理特性的规定,作用于数据的传输通路上,它并不内含对数据的处理方式。比如,最显著的特征是:RS232使用3-15v有效电平,而UART,因为对电气特性并没有规定,所以直接使用CPU使用的电平,就是所谓的TTL电平(可能在0~3.3V之间)。更具体的,电气的特性也决定了线路的连接方式,比如RS232,规定用电平表示数据,因此线路就是单线路的,用两根线才能达到全双工的目的;而RS485, 使用差分电平表示数据,因此,必须用两根线才能达到传输数据的基本要求,要实现全双工,必需用4根线。但是,无论使用RS232还是RS485,它们与UART是相对独立的,但是由于电气特性的差别,必须要有专用的器件和UART接驳,才能完成数据在线路和UART之间的正常流动。
RS232甚至规定了接口的具体样式,图为DB9接口
总结:
从某种意义上,可以说,线路上存在的仅仅是电流,RS232/RS485规定了这些电流在什么样的线路上流动和流动的样式;在UART那里,电流才被解释和组装成数据,并变成CPU可直接读写的形式。
全部0条评论
快来发表一下你的评论吧 !