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 |
速度 |
9600、19200、38400、57600、115200、230400、460800、921600、1000000、1500000 |
传播方式 |
异步 |
硕士总数 |
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。
标头1(H1為(wèi)0xAB)和标头2(H2為(wèi)0xCD)
标头是确定您是否与之通信的唯一标识符
正确的设备。
命令(CMD)选择
命令将取决于旨在创建两个设备之间的通信的命令列表。
每个命令的数据長(cháng)度(DL)
数据長(cháng)度将基于所选命令。您可(kě)以根据所选择的命令来最大化数据長(cháng)度,因此它可(kě)以根据选择而变化。在这种情况下,可(kě)以调整数据長(cháng)度。
数据n(变化数据)
数据是要从设备传输的有(yǒu)效负载。
尾部1(T1為(wèi)0xE1)和尾部2(T2為(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操作的示例详细信息:
5至8个数据位
1、2或1和½个停止位
无,甚至奇偶校验
可(kě)编程过采样率分(fēn)别為(wèi)4,8,16,32
波特率= 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 PCLK和16 MHz PCLK可(kě)用(yòng)。请注意,OSR,DIV,DIVM和DIVN随设备而异。
表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_LCR2,UART_DIV和UART_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)客户提供最优质的产品。