我对UART控制器有疑问。
UART控制器是否为通用名称?
我的意思是如果我们使用RS-232协议,我们应该命名这个UART控制器,RS-232控制器,如果我们使用RS-485作为协议,我们应该称之为UART控制器,RS-485控制器等等?
我注意到我们通常说网络控制器(协议:以太网,令牌环,ATM,...),如果实现的协议是以太网,我们说以太网控制器。 UART控制器和网络控制器之间的正确比较是否都是通用名称?
非常感谢您的澄清
答案 0 :(得分:8)
参考书目:
串行是所有"时分多路复用"的一个保护词,使用昂贵的术语。这意味着数据随时间传播,最常见的是一个接一个地传输。您命名的所有协议都是串行协议。
对于通用异步接收器发送器,UART 是最常用的串行协议之一。它几乎和我一样古老,非常简单。大多数控制器都有一个硬件UART。它使用单个数据线进行传输,使用一个数据线进行数据传输。大多数情况下,8位数据传输如下:1个起始位,低电平,8个数据位,1个停止位,高电平。低电平起始位和高电平停止位意味着始终从高到低的转换开始通信。这就是描述UART的原因。没有电压等级,因此您可以使用3.3 V或5 V,无论您的微控制器使用哪个。注意,想要通过UART通信的微控制器必须就传输速度和比特率达成一致,因为它们只有起始位的下降沿才能同步。这称为异步通信。
对于长距离通信(不必数百米),5 V UART不是非常可靠,这就是它转换为更高电压的原因,通常为+ 12 V用于" 0" - " 1" -12 V。数据格式保持不变。然后你有 RS-232 (你实际上应该称之为EIA-232,但是没有人这样做。)
重要:RS-232与TTL串行通信 - SparkFun Electronics http://goo.gl/0IFYTl
对于通用同步/异步接收器发送器,时序依赖性是UART的一大缺点,解决方案是 USART 。这可以做UART,也可以做同步协议。在同步中,不仅有数据,还有传输的时钟。每个位一个时钟脉冲告诉接收器它应该锁存该位。同步协议要么需要更高的带宽,例如曼彻斯特编码,要么需要额外的时钟线,如SPI和I2C。
串行编程/典型RS232硬件配置 - Wikibooks,开放世界的书籍http://goo.gl/uTknU6
RS232 +-----------+ +-----------+ +-----------+ +-----------+
Interface | Line | | | | Interface | | |
-----------+ Driver / +---+ UART +---+ Logic +---+ CPU |
| Receiver | | | | | | |
+-----------+ +-----+-----+ +-----+-----+ +-----------+
| |
| |
+-----+-----+ |
| Baud Rate | |
| Generator +---------+
| |
+-----------+
UART(通用异步接收器发送器)是串行硬件的核心。它是芯片或芯片的一部分,用于在并行数据和串行数据之间进行转换。 RS-232 UART通常在发送时添加必要的启动/停止和奇偶校验位,并在接收时解码此信息。
UART通常完全依靠计算机逻辑电压运行。其串行数据输入/输出电压是计算机逻辑电压,而不是串行线电压。它们将实际的线路接口留给特定的线路驱动器/接收器。该线路驱动器/接收器不一定需要是RS-232线路驱动器/接收器,但是例如可以是也是RS-422差分驱动器/接收器。这一点以及波特率,奇偶校验,停止位数,数据位数可编程这一事实是UART被称为通用的原因。如果它们都放在同一芯片中,UART和线路驱动器/接收器之间的区别就会模糊。此类芯片通常也以“UART'”标签出售。
UART被称为异步,因为它们不使用特殊时钟信号与远程端同步。相反,它们使用开始/停止位来识别串行流中的数据位。
由于UART,其余硬件以及软件应用程序可以处理正常字节来保存通信数据。 UART的工作是在发送时将一个字节切换为一系列串行位,并在接收时将一系列位组合成一个字节。 UART通常包含8位宽的接收器和传输缓冲器。其中并非所有比特都可以使用,例如,使用7位传输。接收的串行数据在接收器缓冲器中并行提供,待发送的数据与发送缓冲器并行写入。根据UART,缓冲区可能只有一个字节的深度,或几个字节(在15或16字节的范围内)。缓冲区越深,与CPU的通信就越精确。例如。如果接收缓冲区只有一个字节的深度,并且数据没有足够快地获取,则下一个接收的数据可能会覆盖缓冲区中先前接收的数据,并且之前接收的数据将丢失。
由于串行接口上的时序非常重要,因此UART通常连接到波特率发生器,可以是UART芯片中的内部发生器,也可以是外部发生器。
SPI (串行外设接口)是另一种非常简单的串行协议。主机发送一个时钟信号,并在每个时钟脉冲时将一位移出到从机,一位输入来自从机。因此,信号名称为时钟SCK,主机输出从机输入的MOSI和主机输入从机输出的MISO。通过使用SS(从机选择)信号,主机可以控制总线上的多个从机。有两种方法可以将多个从设备连接到一个主设备,一个在上面提到,即使用从设备选择,另一个是菊花链连接,它使用较少的硬件引脚(选择线),但软件变得复杂。
I2C (内部集成电路,发音为"我平方C")也是一种同步协议,它是我们看到的第一个#&# 34;情报"在里面;其他人笨拙地转移进出,就是这样。 I2C仅使用2条线,一条用于时钟(SCL),另一条用于数据(SDA)。这意味着主机和从机通过同一线路发送数据,再次由创建时钟信号的主机控制。 I2C不使用单独的Slave Selects选择特定器件,但具有寻址功能。主机发送的第一个字节保存一个7位地址(这样你就可以在总线上使用127个器件)和一个读/写位,指示下一个字节是否也来自主机应该来自奴隶。在每个字节接收器必须发送" 0"确认字节的接收,主机以第9个时钟脉冲锁存。如果主机想要写一个字节,则重复相同的过程:主机在总线上逐位放置,每次都给出一个时钟脉冲,表示数据已准备好被读取。如果主设备想要接收数据,它只产生时钟脉冲。在给出时钟脉冲时,从器件必须注意下一位就绪。该协议由恩智浦(前Phillips)申请专利,以节省许可成本,Atmel使用与I2C完全相同的TWI(2线接口)字,因此任何AVR设备都不会有I2C,但它会有TWI。
同一线路上的两个或多个信号可能会导致冲突,如果一个设备发送一个" 1"而另一个发送" 0"。因此,总线是线路连接:两个电阻将总线拉至高电平,器件仅发送低电平。如果他们想要发送高级别,他们只需释放总线。
TTL (晶体管晶体管逻辑)不是协议。它是一种较老的数字逻辑技术,但这个名称通常用于指代5 V电源电压,通常不正确地指代应该称为UART的电压。
关于这些中的每一个,你都可以写一本书,看起来我很顺利。这只是一个非常简短的概述,如果有些事情需要澄清,请告诉我们。
答案 1 :(得分:1)
UART(通用异步接收器发送器)是在并行总线信号和串行信号之间移动的芯片。首先,我经常使用AFAIR是8250.这些天RS232使用较少,并且经常通过USB,蓝牙和其他连接进行仿真,因此物理UART可能不再存在。正确地,您应该指定协议,电压电平和连接器。
答案 2 :(得分:1)
UART:通用异步接收器/发送器,其姐妹器件为USART(同步/异步)。这些设备在早期PC中是常见的,并且用于多种用途。它们主要用于RS-232通信,但它们足够灵活,可用于RS-485和其他系统,具体取决于它们的编程方式。几十年来我没见过它,因为它们已被USB设备取代,或者它们的功能现在用软件实现。
关于你的问题:按名称引用它最符合其功能。