收藏官网首页
查看: 5052|回复: 0

[问答] 嵌入式经典总线协议 UART

77

主题

89

帖子

1938

积分

金牌会员

Rank: 6Rank: 6

积分
1938
跳转到指定楼层
楼主
 楼主| 发表于 2022-6-27 20:29:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
免费使用STM32、APP自动代码生成工具

UART(通用异步收发器),这是用于全双工串行通信的最常见协议。它是设计用于执行异步通信的单个LSI(大规模集成)芯片。该设备将数据从一个系统发送到另一系统。在本文中,英锐恩单片机开发工程师将介绍UART通信的基础知识以及UART的工作原理。

什么是UART?

“ UART”代表通用异步收发器。它是微控制器内部的硬件**设备。UART的功能是将传入和传出的数据转换为串行二进制流。使用串行到并行转换将从**设备接收的8位串行数据转换为并行形式,使用串行到并行转换将从CPU接收的并行数据转换为并行形式。该数据以调制形式存在,并以定义的波特率传输。

为什么要使用UART?

诸如SPI(串行**接口)和USB(通用串行总线)之类的协议用于快速通信。当不需要高速数据传输时,使用UART。它是带有单个发送器/接收器的廉价通信设备。它需要一根导线来传输数据,而需要另一根导线来接收数据。

可以使用RS232-TTL转换器或USB-TTL转换器将其与PC(个人计算机)接口。RS232和UART之间的共同点是它们都不需要时钟来发送和接收数据。Uart帧由1个起始位,1个或2个停止位以及一个用于串行数据传输的奇偶校验位组成。

UART框图

UART由以下核心组件组成。它们是发送器和接收器。发送器由发送保持寄存器,发送移位寄存器和控制逻辑组成。类似地,接收器由接收保持寄存器,接收器移位寄存器和控制逻辑组成。通常,发送器和接收器都配有波特率发生器。

波特率发生器生成发送器和接收器必须发送/接收数据的速度。发送保持寄存器包含要发送的数据字节。发送移位寄存器和接收移位寄存器将这些位向左或向右移位,直到发送/接收一个字节的数据为止。

除了这些,还提供了读或写控制逻辑以告知何时进行读/写。波特率发生器产生的速度范围从110 bps(每秒比特)到230400。大多数情况下,微控制器提供更高的波特率,例如115200和57600,以实现更快的数据传输。GPS和GSM等设备在4800和9600中使用较低的波特率。

一、UART如何工作?

要了解UART的工作原理,您需要了解串行通信的基本功能。简而言之,发送器和接收器使用开始位,停止位和定时参数相互同步。原始数据为并行形式。例如,我们有4位数据,要将其转换为串行形式,我们需要并行到串行转换器。通常,D触发器或锁存器用于设计转换器。

(1)D–触发器的工作

D触发器也称为数据触发器,当且仅当时钟将时钟从高态转换为低电平或从低态转换为高态时,才从输入侧向输出侧移位一位。同样,如果要传输四位数据,则??需要4个触发器。

注意,在这里:

“D”代表输入数据。
“CLK”表示时钟脉冲。
“Q”表示输出数据。现在,让我们设计一个并行到串行和串行到并行转换器。

(2)并行到串行转换

步骤1:

取4个触发器。触发器的数量等于要发送的位数。同样,将多路复用器放在每个触发器的前面,但不包括第一个。放置一个多路复用器以合并数据并将其转换为串行位。它有两个输入,一个并行位数据,另一个来自前一个触发器。

第2步:

现在,一次在D个触发器中加载数据。它将拉出并行数据,并移动最后一个触发器的最后一位(四个),然后是第三位,第二位,最后是第一位。现在,为了将并行数据转换为串行形式,使用了串行到并行转换器。

(3)串行到并行转换


步骤1:

取4个触发器。触发器的数量与要发送的位数相同。

步骤2:

最初,禁用并行总线。直到所有位都加载后才启用。将数据存储在第一个触发器的输入处。现在将时钟设为高电平,这会将最低有效位移至第二个触发器的输入和第一个触发器的输出。同样,通过使时钟脉冲为高,将所有位一一移位。转换器处于保持状态,直到所有位都传输到输出为止。

步骤3:

现在,每个触发器都包含一位串行数据。同时,所有位都传送到触发器输出,使能总线。这将使转换器一次发送所有位。

(4)协议格式

UART从起始位“0”开始通信。起始位启动串行数据的传输,终止位结束数据事务。

它还具有奇偶校验位(偶数或奇数)。偶校验位由“0”(偶数1)表示,奇校验位由“1”(偶数1)表示。

(5)传输

使用单条传输线(TxD)完成数据传输。在这里,“0”被认为是空格,而“1”被认为是标记状态。

发送器一次发送一位。发送一位后,发送下一位。这样,所有数据位都以预定义的波特率发送到接收器。传输每个位会有一定的延迟。例如,要以9600波特率发送一个字节的数据,则每个比特以108微秒的延迟发送。数据添加有奇偶校验位。因此,需要10位数据才能发送7位数据。注意:在发送时,始终首先发送LSB(最低有效位)。

(6)接收帧

在接收过程中,RxD线(接收器)用于接收数据。

(7)UART接口示例

本示例演示了esp8266 UART与MAX232的接口。但是,在介绍接口细节之前,让我分享一下Max232驱动程序的引脚细节。

MAX232 IC由5V电源供电,该电源包括一个电容电压发生器,用于驱动232电平电压。它带有双发送器,也称为驱动器(TIN,TOUT)和接收器(RIN和ROUT)。

在这里,我使用了内置UART的ESP8266(32位微控制器)。ESP8266可以使用AT指令通过RS232到TTL电平转换器(MAX232)进行通信。下图显示了ESP8266与PC(个人计算机)的连接。

通过通过PC请求有效的AT命令,WiFi芯片将以确认响应。我不想深入了解ESP8266,在以后的教程中将对此进行解释。

以下是与PC进行串行通信的步骤。

1.将ESP8266的发射器(TX)连接到RS232的接收器(TX)到TTL电平转换器(MAX232)和PC的RX。
2.将ESP8266的接收器(RX)连接到PC的TX和TTL转换器的RX。

(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.在大型机访问中用于连接不同的计算机。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

加入Q群 返回顶部

版权与免责声明 © 2006-2024 Gizwits IoT Technology Co., Ltd. ( 粤ICP备11090211号 )

快速回复 返回顶部 返回列表