嵌入式经典总线协议 UART
UART(通用异步收发器),这是用于全双工串行通信的最常见协议。它是设计用于执行异步通信的单个LSI(大规模集成)芯片。该设备将数据从一个系统发送到另一系统。在本文中,英锐恩单片机开发工程师将介绍UART通信的基础知识以及UART的工作原理。什么是UART?
“ UART”代表通用异步收发器。它是微控制器内部的硬件**设备。UART的功能是将传入和传出的数据转换为串行二进制流。使用串行到并行转换将从**设备接收的8位串行数据转换为并行形式,使用串行到并行转换将从CPU接收的并行数据转换为并行形式。该数据以调制形式存在,并以定义的波特率传输。
为什么要使用UART?
诸如SPI(串行**接口)和USB(通用串行总线)之类的协议用于快速通信。当不需要高速数据传输时,使用UART。它是带有单个发送器/接收器的廉价通信设备。它需要一根导线来传输数据,而需要另一根导线来接收数据。http://www.enroo.com/imagePath/4048b7f0ace141f4aad3ef03fada0e2d.jpg可以使用RS232-TTL转换器或USB-TTL转换器将其与PC(个人计算机)接口。RS232和UART之间的共同点是它们都不需要时钟来发送和接收数据。Uart帧由1个起始位,1个或2个停止位以及一个用于串行数据传输的奇偶校验位组成。
UART框图
UART由以下核心组件组成。它们是发送器和接收器。发送器由发送保持寄存器,发送移位寄存器和控制逻辑组成。类似地,接收器由接收保持寄存器,接收器移位寄存器和控制逻辑组成。通常,发送器和接收器都配有波特率发生器。http://www.enroo.com/imagePath/492d2e02196148beb08cb3bae792c140.jpg波特率发生器生成发送器和接收器必须发送/接收数据的速度。发送保持寄存器包含要发送的数据字节。发送移位寄存器和接收移位寄存器将这些位向左或向右移位,直到发送/接收一个字节的数据为止。
除了这些,还提供了读或写控制逻辑以告知何时进行读/写。波特率发生器产生的速度范围从110 bps(每秒比特)到230400。大多数情况下,微控制器提供更高的波特率,例如115200和57600,以实现更快的数据传输。GPS和GSM等设备在4800和9600中使用较低的波特率。
一、UART如何工作?
要了解UART的工作原理,您需要了解串行通信的基本功能。简而言之,发送器和接收器使用开始位,停止位和定时参数相互同步。原始数据为并行形式。例如,我们有4位数据,要将其转换为串行形式,我们需要并行到串行转换器。通常,D触发器或锁存器用于设计转换器。
(1)D–触发器的工作http://www.enroo.com/imagePath/c8401e869f514a76ac831dfda6c2eed3.jpgD触发器也称为数据触发器,当且仅当时钟将时钟从高态转换为低电平或从低态转换为高态时,才从输入侧向输出侧移位一位。同样,如果要传输四位数据,则??需要4个触发器。
注意,在这里:
“D”代表输入数据。
“CLK”表示时钟脉冲。
“Q”表示输出数据。现在,让我们设计一个并行到串行和串行到并行转换器。
(2)并行到串行转换http://www.enroo.com/imagePath/49d033e4f7974ae4a46a5b00726feb42.jpghttp://www.enroo.com/imagePath/62cb9f0e0b744c23a14881eee15f99e2.jpg步骤1:
取4个触发器。触发器的数量等于要发送的位数。同样,将多路复用器放在每个触发器的前面,但不包括第一个。放置一个多路复用器以合并数据并将其转换为串行位。它有两个输入,一个并行位数据,另一个来自前一个触发器。
第2步:
现在,一次在D个触发器中加载数据。它将拉出并行数据,并移动最后一个触发器的最后一位(四个),然后是第三位,第二位,最后是第一位。现在,为了将并行数据转换为串行形式,使用了串行到并行转换器。
(3)串行到并行转换http://www.enroo.com/imagePath/e1dfca17a2a44f85af6b54f89a40f95f.jpg
http://www.enroo.com/imagePath/f8304d22ed444e3ab1912695c0d190a5.jpg步骤1:
取4个触发器。触发器的数量与要发送的位数相同。
步骤2:
最初,禁用并行总线。直到所有位都加载后才启用。将数据存储在第一个触发器的输入处。现在将时钟设为高电平,这会将最低有效位移至第二个触发器的输入和第一个触发器的输出。同样,通过使时钟脉冲为高,将所有位一一移位。转换器处于保持状态,直到所有位都传输到输出为止。
步骤3:
现在,每个触发器都包含一位串行数据。同时,所有位都传送到触发器输出,使能总线。这将使转换器一次发送所有位。
(4)协议格式
UART从起始位“0”开始通信。起始位启动串行数据的传输,终止位结束数据事务。http://www.enroo.com/imagePath/03bb3df5be004a179ccee4f524818280.jpg它还具有奇偶校验位(偶数或奇数)。偶校验位由“0”(偶数1)表示,奇校验位由“1”(偶数1)表示。
(5)传输
使用单条传输线(TxD)完成数据传输。在这里,“0”被认为是空格,而“1”被认为是标记状态。http://www.enroo.com/imagePath/4fcaab757e5c468ca42bd98ecc07ab07.jpg发送器一次发送一位。发送一位后,发送下一位。这样,所有数据位都以预定义的波特率发送到接收器。传输每个位会有一定的延迟。例如,要以9600波特率发送一个字节的数据,则每个比特以108微秒的延迟发送。数据添加有奇偶校验位。因此,需要10位数据才能发送7位数据。注意:在发送时,始终首先发送LSB(最低有效位)。
(6)接收帧
在接收过程中,RxD线(接收器)用于接收数据。http://www.enroo.com/imagePath/55bf6d07cae74a87a89ae0c8cd8c466f.jpg(7)UART接口示例
本示例演示了ESP8266 UART与MAX232的接口。但是,在介绍接口细节之前,让我分享一下Max232驱动程序的引脚细节。http://www.enroo.com/imagePath/5e1e5467d3a043ed96ce20144162a36d.jpgMAX232 IC由5V电源供电,该电源包括一个电容电压发生器,用于驱动232电平电压。它带有双发送器,也称为驱动器(TIN,TOUT)和接收器(RIN和ROUT)。
在这里,我使用了内置UART的ESP8266(32位微控制器)。ESP8266可以使用AT指令通过RS232到TTL电平转换器(MAX232)进行通信。下图显示了ESP8266与PC(个人计算机)的连接。http://www.enroo.com/imagePath/1b4f4617bd7f4efe802bac48b6ff4b17.jpg通过通过PC请求有效的AT命令,WiFi芯片将以确认响应。我不想深入了解ESP8266,在以后的教程中将对此进行解释。
以下是与PC进行串行通信的步骤。
1.将ESP8266的发射器(TX)连接到RS232的接收器(TX)到TTL电平转换器(MAX232)和PC的RX。
2.将ESP8266的接收器(RX)连接到PC的TX和TTL转换器的RX。http://www.enroo.com/imagePath/9acaa37e5e604385acb9af979efee515.jpg(8)UART与USART
USART是UART的基本形式。从技术上讲,它们是不同的。但是,两者的定义相同。这些是微控制器外设,可将并行数据转换为串行位,反之亦然。
(9)UART的优点与缺点
1.优点
UART的优点是,它支持使用两条线的全双工通信。而且,它不需要外部时钟就可以进行数据通信。它支持使用奇偶校验位进行错误检查,并且可以轻松更改数据长度。
2.缺点
UART的主要缺点是,它不支持多从机或多主机配置。并且,数据分组的大小被限制为9位。UART不适合在高能耗下进行繁重的串行通信。
(10)应用领域
1.串行调试端口使用UART驱动程序来打印来自外部世界的数据。
2.我们可以使用它来向嵌入式设备发送命令和从嵌入式设备接收命令。
3.在通讯GPS,GSM / GPRS调制解调器,Wi-Fi芯片等与UART操作。
4.在大型机访问中用于连接不同的计算机。
页:
[1]