当前位置:首页 > > 小麦大叔
[导读]这篇基础的UART,献给刚好需要的您!


前面的话

自从国庆长假被密密麻麻的红色炸弹击中之后,酒也没少喝,最终喝到断片进了医院,身体恢复后终于更新了一篇基础的UART,献给刚好需要的您;



目录

  • 1 UART发展历史

    • 1.1 早期的串行通讯设备

    • 1.2 早期的芯片级UART

    • 1.3 现代UART的发展

  • 2 预备知识

  • 3 协议层

    • 起始位

    • 数据

    • 校验位

    • 停止位

    • 波特率

  • 4 传输过程

  • 5 物理层

  • 6 优缺点


1 UART发展历史

1.1 早期的串行通讯设备

早期的电报机器使用长度可变的脉冲信号进行数据传输,比如摩斯电码;

摩斯电码

后来电传打印机(teleprinters )普遍使用5、6、7或8个数据位来表示各种字符编码,最终成为计算机外围设备。电传打字机( teletypewriter 简称 tty)成为小型计算机十分出色的通用I/O设备。

Teletypewritter

由于历史的发展原因,早期在Unix终端是一个名字为ASR33的电传打字机,而电传打字机的英文单词为Teletype(或Teletypewritter),缩写为tty。因此,终端设备也被称为tty设备。这就是TTY这个名称的来源。

1.2 早期的芯片级UART

DEC(Digital Equipment Corporation)公司的Gordon Bell 为该公司的PDP系列计算机设计了第一个UART,不过体积庞大,UART的线路占据了整个电路板;

后来DEC将串行线路单元的设计浓缩为早期的UART单芯片,以方便自己使用。

DEC公司Logo

DEC是美国一家计算机公司;

西部数据(Western Digital)公司在1971年左右将其开发为第一个广泛可用的UART单芯片 WD1402A。这是中型集成电路的早期产品。

Western Digital是美国计算机硬盘驱动器制造商和数据存储公司。

1.3 现代UART的发展

2000年代开始,大多数IBM或者相关的计算机都删除了其外部RS232的COM端口,将其替换为带宽性能更加出色的USB端口;

早期带RS232的PC

对于仍然需要RS-232串行COM端口的用户,现在通常使用外部USB转UART转换器,常见的有CH340,Silicon Labs 210x的驱动程序,现在很多处理器和芯片都内置了UART。

2 预备知识

通用异步收发传输器Universal Asynchronous Receiver/Transmitter,通常称为UART),在UART通信中,两个UART直接通信。

发送端的UART将来自控制设备(如CPU)的并行数据转换为串行数据,以串行方式将其发送到接收端的UART,然后由接收端的UART将串行数据转换为并行数据以用于接收设备的正常处理。

这里只需要两条线RX/TX即可在两个UART之间传输数据。具体如下图所示;

3 协议层

UART传输的数据被封装成数据包。每个数据包包含1个起始位,5~9个数据位(取决于UART的具体设置),一个可选的奇偶校验位以及1个或2个停止位,具体如下图所示;

协议格式

起始位

UART数据传输线通常在不传输数据时保持在高电平

为了开始数据传输,发送端UART在一个时钟周期内将传输线从高电平拉低到低电平

当接收端UART检测到高电压到低电压转换时,它开始以波特率的频率读取数据位中的每一位数据。

数据

数据位包含正在传输的实际数据。如果使用奇偶校验位,则可以是5位,最多8位。如果不使用奇偶校验位,则数据帧的长度可以为9位。

在大多数情况下,数据首先以低有效位发送。

校验位

在串口通信中一种简单的检错方式。

有四种检错方式:偶校验奇校验高校验低校验。当然没有校验位也是可以的。

对于偶和奇校验的情况,串口会设置校验位(数据位后面的一位),用一个值确保传输的数据有偶个或者奇个逻辑高位。

举个例子,如果数据是011,则满足;

偶校验,校验位为0,保证逻辑高的位数是偶数个。

校验,校验位为1,这样就有3个逻辑高位。

具体如下图所示;

奇校验和偶校验

高位和低位不是真正的检查数据,而是强行将校验位设置为逻辑高或者逻辑低。这样使得接收设备能够知道一个位的状态,有机会判断是否有噪声干扰了通信或者是否传输和接收数据是否不同步。

停止位

发送端UART将数据传输线从低电压驱动到高电压至少持续两位数据的时间宽度来表示整个数据包的传输已经结束。

由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容错性越好,但是数据传输率同时也越慢

波特率

波特率是串口数据的传输速度,即Bit/s,常见的波特率有:9600,19200,38400,57600,115200,当然还有很多波特率,不再一一给出;

假设目前UART的配置为,1个起始位,8个数据位,0个校验位,1个停止位,那么9600的波特率,可以计算出每一位数据的时间宽度为:

那么传输一个字节(也就是10 bit 数据)需要的时间为 1.04 毫秒。

下面用串口抓取了UART的TX上的信号,其中一位数据的时间宽度为26微秒,具体如下图所示;

则可以简单计算得到;

因此波特率大概为 38400;

下表是各个波特率下数据位时间宽度;

Time Baud Rate
3333µs (3.3ms) 300
833µs 1200
416µs 2400
208µs 4800
104µs 9600
69µs 14400
52µs 19200
34µs 28800
26µs 38400
17.3µs 57600
8µs 115200
4.34µs 230400




4 传输过程

发送端UART从数据总线转换并行数据:

发送端UART将起始位奇偶校验位停止位添加到数据包中:

整个数据包从发送端UART串行发送到接收端UART;接收端UART按照预先配置好的波特率对数据线进行采样:

接收端UART解析接收的数据,丢弃数据包中的起始位,奇偶校验位和停止位:

接收UART将串行数据转换回并行数据,并将其传输到接收端的数据总线:

5 物理层

UART、RS232、RS485在串口通信中,主要区别是电平的不同,其中UART通常使用TTL电平,下面介绍这几个存在的差异;

TTL

TTL全名是晶体管-晶体管逻辑集成电路(Transistor-Transistor Logic)

  • 输入高电平最小2V,输出高电平最小2.4V,典型值3.4V;

  • 输入低电平最大0.8V,输出低电平最大0.4V,典型值0.2V。

RS232

RS232 逻辑1电平(MARK)=-3V~-15V,逻辑0电平(SPACE)=+3~+15V;

同样的,对于传输数据0x55,即二进制的01010101,RS232和TTL的区别如下;

RS485

RS485是差分信号进行串行传输;

  • 逻辑1以两线间的电压差为 +(2~6)V表示;
  • 逻辑"0"以两线间的电压差为 -(2~6)V表示;

在工业通信中,使用RS485比较多,因为RS485是差分信号,可以抑制共模干扰,因此在恶劣的环境中拥有很好的抗干扰性,比较稳定;

6 优缺点

没有任何通信协议是完美的,以下是UART的一些利弊,可帮助您确定它们是否适合您的项目需求:

优点

  • 通信只需要两条数据线;
  • 无需时钟信号;
  • 有奇偶校验位,方便通信的差错检查;
  • 只需要接收端和发送端设置好数据包结构,即可稳定通信;

缺点

  • 数据帧最大支持9位数据;
  • 不支持多主机或多从机的主从系统;

 简易PID算法的快速扫盲 

 一文教你搞懂C语言的Q格式

  现成轮子OSAL操作系统抽象层的移植

 一招教你单片机固件快速瘦身

基础知识 | hex文件格式详解


—— The End —


长按识别二维码关注获取更多内容




免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭