“ UART”代表通用异步收发器。它是微控制器内部的硬件外围设备。UART的功能是将传入和传出的数据转换为串行二进制流。使用串行到并行转换将从外围设备接收的8位串行数据转换为并行形式,并且使用串行到并行转换将从CPU接收的并行数据转换为并行形式。该数据以调制形式存在,并以定义的波特率传输。
诸如SPI(串行外围接口)和USB(通用串行总线)之类的协议用于快速通信。当不需要高速数据传输时,使用UART。它是带有单个发送器/接收器的廉价通信设备。它需要一根导线来传输数据,而需要另一根导线来接收数据。
可以使用RS232-TTL转换器或USB-TTL转换器将其与PC(个人计算机)接口。RS232和UART之间的共同点是它们都不需要时钟来发送和接收数据。Uart帧由1个起始位,1个或2个停止位以及一个用于串行数据传输的奇偶校验位组成。
UART由以下核心组件组成。它们是发送器和接收器。发送器由发送保持寄存器,发送移位寄存器和控制逻辑组成。同样,接收器由接收保持寄存器,接收器移位寄存器和控制逻辑组成。通常,发送器和接收器都配有波特率发生器。
波特率发生器生成发送器和接收器必须发送/接收数据的速度。发送保持寄存器包含要发送的数据字节。发送移位寄存器和接收移位寄存器将这些位向左或向右移位,直到发送/接收一个字节的数据为止。
除了这些之外,还提供了读取或写入控制逻辑来告知何时进行读取/写入。波特率发生器产生的速度范围从110 bps(每秒比特)到230400。大多数情况下,微控制器提供更高的波特率,例如115200和57600,以实现更快的数据传输。GPS和GSM等设备在4800和9600中使用较低的波特率。
要了解UART的工作原理,您需要了解串行通信的基本功能。简而言之,发送器和接收器使用开始位,停止位和定时参数相互同步。原始数据为并行形式。例如,我们有4位数据,要把它转换成串行形式,我们需要一个并行到串行转换器。通常,D触发器或锁存器用于设计转换器。
D触发器也称为数据触发器,当且仅当时钟将时钟从高态转换为低电平或从低态转换为高态时,D触发器才将其从输入侧移至输出侧。同样,如果要传输四位数据,则需要4个触发器。
注意:在这里,
“ D ”代表输入数据。
“ CLK ”表示时钟脉冲。
“ Q ”表示输出数据。现在,让我们设计一个并行到串行和串行到并行转换器。
步骤1:
取4个触发器。触发器的数量等于要发送的位数。同样,将多路复用器放在每个触发器的前面,但不包括第一个触发器。放置一个多路复用器以合并数据并将其转换为串行位。它有两个输入,一个并行位数据,另一个来自前一个触发器。
第2步:
现在,一次在D个触发器中加载数据。它将提取并行数据,并移动最后一个触发器的最后一位(四个),然后是第三位,第二位,最后是第一位。现在,为了将并行数据转换为串行形式,使用了串行到并行转换器。
步骤1:
取4个触发器。触发器的数量与要发送的位数相同。
第2步:
最初,禁用并行总线。直到所有位都加载后才启用。将数据存储在第一个触发器的输入处。现在将时钟设为高电平,这会将最低有效位移至第二个触发器的输入和第一个触发器的输出。同样,通过使时钟脉冲为高电平,将所有位一一移位。转换器处于保持状态,直到所有位都传输到输出为止。
步骤#3:
现在,每个触发器都包含一位串行数据。同时,所有位都传送到触发器输出,使能总线。这将使转换器一次发送所有位。
UART从起始位“ 0”开始通信。起始位启动串行数据的传输,终止位结束数据事务。
它还具有奇偶校验位(偶数或奇数)。偶数奇偶校验位由“ 0”(1的偶数)表示,奇数奇偶校验位由“ 1”(1的奇数个)表示。
数据的传输使用单条传输线(TxD)完成。在这里,“ 0”被认为是空格,而“ 1”被认为是标记状态。
发送器一次发送一位。发送一位后,发送下一位。这样,所有数据位都以预定义的波特率发送到接收器。传输每个位会有一定的延迟。例如,要以9600波特率发送一个字节的数据,则每个比特以108微秒的延迟发送。数据添加有奇偶校验位。因此,需要10位数据才能发送7位数据。
注意:在传输中,始终首先发送LSB(最低有效位)。
在接收期间,RxD线(接收器)用于接收数据。
本示例演示了ESP8266 UART与MAX232的接口。但是,在我进入接口的细节之前,让我分享一下Max232驱动器的引脚细节。
MAX232 IC由5V电源供电,该电源包括一个电容电压发生器,用于驱动232电平电压。它带有双发送器,也称为驱动器(TIN,TOUT)和接收器(RIN和ROUT)。
在这里,我使用了具有内置UART的ESP8266(32位微控制器)。ESP8266可以使用AT指令通过RS232到TTL电平转换器(MAX232)进行通信。下图显示了ESP8266与PC(个人计算机)的连接。
通过通过PC请求有效的AT命令,Wi-Fi芯片将以确认响应。我不想深入了解ESP8266,在以后的教程中将对此进行解释。
以下是与PC进行串行通信的步骤。
AT命令(从PC发送) | ESP8266响应(PC接收) |
---|---|
AT <CR> <LF> | OK <CR> <LF> |
AT + CIPMUX = 1 | OK <CR> <LF> |
AT + CIPSERVER = 1,23 <CR> <LF> | OK <CR> <LF> |
以下屏幕截图显示了ESP8266模块给出的响应。
USART是UART的基本形式。从技术上讲,它们是不同的。但是,两者的定义相同。这些是微控制器外设,可将并行数据转换为串行位,反之亦然。
UART和USART之间的主要区别在于,UART仅支持异步通信,而USART支持同步和异步通信。为了便于理解,以下是USART与UART之间的比较。
串口 | 美国ART |
---|---|
时钟由微控制器内部产生。 | 发送设备将生成时钟。 |
数据速率慢。 | 由于外部时钟,数据速率更高。 |
独立协议 | 支持多种协议,如LIN,RS-485,IrDA,智能卡等。 |
传输之前应该知道波特率。 | 无需更早了解波特率。 |
适用于低速通讯 | 适用于高速通讯。 |
减少能源足迹。 | 在高能耗时处理串行通讯 |
RS232和UART
逻辑电平表示设备在安全区中可以承受的工作电压电平。这是RS232和TTL的电压电平。
RS232逻辑:
逻辑水平 | 电压范围 |
---|---|
逻辑高或关输出 | -5V至-15V |
逻辑低或开输出 | + 5V至+ 15V |
逻辑高或关输入 | -3V至-15V |
逻辑低或开输入 | + 3V至+ 15V |
在大多数情况下,RS232的电压范围为-12V至+ 12V。例如,RS232中字符“ A ”的ASCII值在十六进制中为65和41。因此,在一个8位的二进制格式,它是0100 0001。在这里示出了用于ASCII“的RS232逻辑电平表示甲”。
TTL / CMOS逻辑:
UART使用TTL逻辑。
好处
UART的优点是,它支持使用两根线的全双工通信。而且,它不需要外部时钟就可以进行数据通信。它支持使用奇偶校验位进行错误检查,并且可以轻松更改数据长度。
缺点
UART的主要缺点是,它不支持多从机或多主机配置。并且,数据分组的大小被限制为9位。UART不适合在高能耗下进行繁重的串行通信。