24小(xiǎo)时联系電(diàn)话:18217114652、13661815404

中文(wén)

您当前的位置:
首页>
電(diàn)子资讯>
行业资讯>
了解UART串口通信

行业资讯

了解UART串口通信


UART,即通用(yòng)异步接收器-发送器,是最常用(yòng)的设备到设备通信协议之一。本文(wén)介绍如何通过遵循标准过程将UART用(yòng)作硬件通信协议。

正确配置后,UART可(kě)以使用(yòng)许多(duō)不同类型的串行协议,这些协议涉及发送和接收串行数据。在串行通信中,使用(yòng)一条線(xiàn)或一条線(xiàn)一点一点地传输数据。在双向通信中,我们使用(yòng)两根線(xiàn)来成功进行串行数据传输。根据应用(yòng)和系统要求,串行通信需要较少的電(diàn)路和電(diàn)線(xiàn),从而降低了实施成本。

在本文(wén)中,我们将讨论使用(yòng)UART时的基本原理(lǐ),重点是数据包传输,标准帧协议和自定义帧协议,这些协议是实现时(特别是在代码开发期间)安全合规性的增值功能(néng)。在产品开发过程中,本文(wén)档还旨在在检查数据表中的实际用(yòng)法时共享一些基本步骤。

在本文(wén)的最后,目标是更好地理(lǐ)解和遵守UART标准,以最大程度地发挥其功能(néng)和应用(yòng)程序,特别是在开发新(xīn)产品时。

通信协议在组织设备之间的通信中扮演着重要角色。它根据系统要求以不同的方式进行设计,并且这些协议具有(yǒu)在设备之间达成一致以实现成功通信的特定规则。

嵌入式系统,微控制器和计算机大多(duō)使用(yòng)UART作為(wèi)设备到设备硬件通信协议的一种形式。在可(kě)用(yòng)的通信协议中,UART仅使用(yòng)两条線(xiàn)作為(wèi)其发送和接收端。

尽管它是硬件通信协议的一种广泛使用(yòng)的方法,但并非一直都在对其进行完全优化。在微控制器内部使用(yòng)UART模块时,通常会忽略帧协议的正确实现。

根据定义,UART是一种硬件通信协议,它以可(kě)配置的速度使用(yòng)异步串行通信。异步意味着没有(yǒu)时钟信号来同步从发送设备到接收端的输出位。

接口

每个UART设备的两个信号分(fēn)别命名為(wèi):

发射器(Tx

接收器(Rx

每个设备的发送器和接收器線(xiàn)的主要目的是发送和接收用(yòng)于串行通信的串行数据。


2.带有(yǒu)数据总線(xiàn)的UART

发送UART连接到以并行形式发送数据的控制数据总線(xiàn)。由此,数据现在将在传输線(xiàn)(导線(xiàn))上一点一点地串行传输到接收UART。反过来,这会将串行数据转换為(wèi)接收设备的并行数据。

UART線(xiàn)用(yòng)作通信介质,以将一个数据发送到另一个。请注意,UART器件具有(yǒu)专用(yòng)于发送或接收的发送和接收引脚。

对于UART和大多(duō)数串行通信,需要在发送和接收设备上将波特率设置為(wèi)相同。波特率是信息传输到通信信道的速率。在串行端口环境中,设置的波特率将用(yòng)作每秒(miǎo)传输的最大位数。

1总结了我们必须了解的UART

1. UART摘要

電(diàn)線(xiàn)

2

速度

960019200384005760011520023040046080092160010000001500000

传播方式

异步

硕士总数

1

最大从站数

1

UART接口不使用(yòng)时钟信号来同步发送器和接收器设备。它异步传输数据。当接收器使用(yòng)其内部时钟信号采样输入数据时,发送器将根据其时钟信号生成比特流,而不是时钟信号。通过在两个设备上具有(yǒu)相同的波特率来管理(lǐ)同步点。否则可(kě)能(néng)会影响发送和接收数据的时间,从而导致数据处理(lǐ)过程中的差异。在位的时序变得太遠(yuǎn)之前,波特率的允许差异最大為(wèi)10%。

资料传输

UART中,传输模式為(wèi)数据包形式。连接发送器和接收器的部分(fēn)包括创建串行数据包并控制这些物(wù)理(lǐ)硬件線(xiàn)路。数据包由起始位,数据帧,奇偶校验位和停止位组成。


3. UART数据包。

起始位

UART数据传输線(xiàn)通常在不传输数据时保持在高電(diàn)压電(diàn)平。為(wèi)了开始数据传输,发送UART在一(1)个时钟周期内将传输線(xiàn)从高電(diàn)平拉低到低電(diàn)平。当接收UART检测到高電(diàn)压到低電(diàn)压转换时,它开始以波特率的频率读取数据帧中的位。


4.起始位。

数据框

数据帧包含正在传输的实际数据。如果使用(yòng)奇偶校验位,则可(kě)以是五(5)位,最多(duō)八(8)位。如果不使用(yòng)奇偶校验位,则数据帧的長(cháng)度可(kě)以為(wèi)九(9)位。在大多(duō)数情况下,数据首先以最低有(yǒu)效位发送。


5.数据框。

平价

奇偶性描述数字的偶数或奇数。奇偶校验位是接收UART判断传输期间是否有(yǒu)任何数据更改的方式。可(kě)以通过電(diàn)磁辐射,不匹配的波特率或長(cháng)距离数据传输来更改位。

接收UART读取数据帧后,它将对值為(wèi)1的位数进行计数,并检查总数是偶数还是奇数。如果奇偶校验位為(wèi)0(偶数奇偶校验),则数据帧中的1或逻辑高位应总计為(wèi)偶数。如果奇偶校验位為(wèi)1(奇校验),则数据帧中的1位或逻辑高電(diàn)平应总计為(wèi)奇数。

当奇偶校验位与数据匹配时,UART知道传输没有(yǒu)错误。但是,如果奇偶校验位為(wèi)0,总和為(wèi)奇数,或者奇偶校验位為(wèi)1,总和為(wèi)偶数,则UART知道数据帧中的位已更改。


6.奇偶校验位。

停止位

為(wèi)了向数据包的结尾发出信号,发送UART将数据传输線(xiàn)从低電(diàn)压驱动到高電(diàn)压持续一(1)到两(2)位。


7.停止位。

UART传输步骤

首先:发送UART从数据总線(xiàn)并行接收数据。


8.到发送UART的数据总線(xiàn)。

第二:发送UART将起始位,奇偶校验位和停止位添加到数据帧。


9. Tx端的UART数据帧。

第三:从发送UART的起始位到停止位,整个数据包从发送UART到接收UART依次发送。接收UART以预配置的波特率对数据線(xiàn)进行采样。


10. UART传输。

第四:接收UART丢弃数据帧中的起始位,奇偶校验位和停止位。


11. Rx侧的UART数据帧。

第五:接收UART将串行数据转换回并行数据,并将其传输到接收端的数据总線(xiàn)。


12.接收UART到数据总線(xiàn)。

框架协议

UART中可(kě)用(yòng)但尚未完全使用(yòng)的一项关键功能(néng)是帧协议的实现。其主要用(yòng)途和重要性是每台设备的安全性和保护性的附加值。

例如,当两个设备使用(yòng)相同的UART帧协议时,有(yǒu)一种趋势是,在不检查配置的情况下连接到同一UART时,该设备将连接到不同的引脚,这可(kě)能(néng)会导致系统故障。

另一方面,由于需要根据设计框架协议解析接收到的信息,因此实现此操作可(kě)确保安全性。每个帧协议都经过专门设计,以确保唯一性和安全性。

在设计帧协议时,设计人员可(kě)以将所需的标头和标头(包括CRC)设置到不同的设备。在图13中,将两(2)个字节设置為(wèi)标头的一部分(fēn)。

第二:在内存映射下,检查UART地址。


13.示例UART帧协议。

根据示例,您可(kě)以设置设备独有(yǒu)的标头,尾部和CRC

标头1H1為(wèi)0xAB)和标头2H2為(wèi)0xCD

标头是确定您是否与之通信的唯一标识符

正确的设备。

命令(CMD)选择

命令将取决于旨在创建两个设备之间的通信的命令列表。

每个命令的数据長(cháng)度(DL

数据長(cháng)度将基于所选命令。您可(kě)以根据所选择的命令来最大化数据長(cháng)度,因此它可(kě)以根据选择而变化。在这种情况下,可(kě)以调整数据長(cháng)度。

数据n(变化数据)

数据是要从设备传输的有(yǒu)效负载。

尾部1T1為(wèi)0xE1)和尾部2T2為(wèi)0xE2

尾部是在传输结束后添加的数据。就像标题一样,它们可(kě)以唯一地标识。

循环冗余校验(CRC公式)

循环冗余校验公式是一种附加的错误检测模式,用(yòng)于检测原始数据的意外更改。发送设备的CRC值必须始终等于接收器端的CRC计算值。

建议通过為(wèi)每个UART设备实现帧协议来增加安全性。帧协议在发送和接收设备上都需要相同的配置。

UART操作

使用(yòng)任何硬件通信协议时,必须先阅读数据表和硬件参考手册。

以下是要遵循的步骤:

首先:检查设备的数据表接口。


15.微处理(lǐ)器内存映射。

第三:检查UART端口的详细信息,例如操作模式,数据位長(cháng)度,奇偶校验位和停止位。数据手册中的示例UART端口详细信息:

UART端口
示例MCU提供了一个全双工UART端口,该端口与PC标准UART完全兼容。UART端口為(wèi)其他(tā)外围设备或主机提供了简化的UART接口,支持全双工,DMA和串行数据的异步传输。UART端口支持五到八个数据位,无奇偶校验。帧以一个半或两个停止位终止。

第四:检查UART操作细节,包括波特率计算。波特率使用(yòng)以下示例公式配置。该公式因微控制器而异。

UART操作的示例详细信息:

58个数据位

121½个停止位

无,甚至奇偶校验

可(kě)编程过采样率分(fēn)别為(wèi)481632

波特率= PCLK /(((M + N / 2048×2 OSR + 2 ×DIV

哪里,

OSR(过采样率)
UART_LCR2.OSR = 0
3
DIV
(波特率分(fēn)频器)
UART_DIV = 1
65535
M
DIVM分(fēn)数波特率M
UART_FBR.DIVM = 1
3
N
DIVM分(fēn)数波特率M
UART_FBR.DIVN = 0
2047

第五:关于波特率,请确保检查要使用(yòng)的外设时钟(PCLK)。在此示例中,有(yǒu)26 MHz PCLK16 MHz PCLK可(kě)用(yòng)。请注意,OSRDIVDIVMDIVN随设备而异。

2.基于26 MHz PCLK的波特率示例

波特率

OSR

DIV

虚拟机

迪文(wén)

9600

3

24

3

1078

115200

3

4

1

1563

3.基于16 MHz PCLK的波特率示例

波特率

OSR

DIV

虚拟机

迪文(wén)

9600

3

17

3

1078

115200

3

2

2

348

第六:下一部分(fēn)是检查UART配置的详细寄存器。看一下计算波特率时的参数,例如UART_LCR2UART_DIVUART_FBR。表4将列出一个特定的寄存器。

4. UART寄存器说明

名称

描述

UART_DIV

波特率分(fēn)频器

UART_FIBR

小(xiǎo)数波特率

UART_LCR2

二線(xiàn)控制

第七:在每个寄存器下,检查详细信息并用(yòng)值替代波特率,然后开始实现UART

它為(wèi)什么如此重要?

在开发强大的,质量驱动的产品时,熟悉UART通信协议非常有(yǒu)帮助。知道如何仅使用(yòng)两条線(xiàn)发送数据,以及如何传输整包数据或有(yǒu)效载荷,将有(yǒu)助于确保正确无误地传输和接收数据。由于UART是最常用(yòng)的硬件通信协议,因此该知识可(kě)以在将来的设计中实现设计灵活性。

用(yòng)例

您可(kě)以将UART用(yòng)于许多(duō)应用(yòng)程序,例如:

调试:在开发过程中及早发现系统错误很(hěn)重要。在这种情况下,添加UART可(kě)以通过捕获系统消息来提供帮助。

制造功能(néng)级别跟踪:日志(zhì)在制造中非常重要。他(tā)们通过提醒操作员生产線(xiàn)上正在发生的事情来确定功能(néng)。

客户或客户更新(xīn):软件更新(xīn)非常重要。具有(yǒu)完整的,具有(yǒu)可(kě)更新(xīn)功能(néng)的软件的动态硬件对于拥有(yǒu)完整的系统至关重要。

测试/验证:在产品离开制造过程之前对其进行验证有(yǒu)助于為(wèi)客户提供最优质的产品。

请输入搜索关键字

确定