嵌入式 - UART介绍

这篇具有很好参考价值的文章主要介绍了嵌入式 - UART介绍。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

概述

嵌入式系统经常需要集成电路之间的通信。举个例子,一个数字温度传感器向主控芯片报告房间的环境温度。通常情况,这种数据会通过一个串行接口来传输。

那么,什么是串行接口? 在最基本的角度来说,串行接口是一个移位寄存器,每次将数据移入/移出一个比特。 下面的插图显示了移位寄存器的数据先通过并行方式加载,比如内存拷贝。在并行加载完成后,数据被逐位移出,从最小有效位开始。

嵌入式 - UART介绍

那么,为什么我们要使用一个串行接口而不是并行接口呢? 如果我们想用并行接口传输一个32位的值,我们需要在微处理器上至少有32个引脚。并行总线的速度非常快,但它们需要大量的外部引脚,只为此单独接口使用的引脚。在设备上添加额外的引脚会增加微处理器的材料成本和物理尺寸。

使用串行接口的动机是,一个串行接口只由几个引脚组成。 使用少量的引脚,我们可以传输任何大小的数据。 如果我们需要的数据是32位而不是8位,我们只需要增加时钟周期。 减少引脚的数量也使印刷电路板(PCB/printed circuit board)的开发变得更加容易,因为需要在设备之间布线的引脚少得多。

我们在这里要研究的串行接口被称为UART。 术语UART是指通用异步接收/发送器(Universal Asynchronous Receiver/Transmitter)。 UART通常用于与没有图形显示功能的设备连接。 UART可以向终端程序提供输入/输出功能,使用户能够监控状态并提供输入功能。

UART基本构造(Infrastructure)

  • 需要的引脚(Pin)

UART接口由两个引脚组成:Rx和Tx引脚。 Rx引脚用于接收数据。 Tx引脚用于传输数据。 当两个设备使用UART连接时,一个设备的Rx引脚与第二个设备的Tx引脚相连。

嵌入式 - UART介绍

  • 通用寄存器(Common Registers)

Rx和Tx引脚通常连接到独立的移位寄存器(一个用于移出数据,一个用于移入数据)。 两个独立的移位寄存器允许UART在同一时间发送和接收数据。

除了移位寄存器外,还有一个或多个状态寄存器。 软件通过检查状态寄存器来确定发送移位寄存器何时为空。 当发送寄存器为空时,下一个字节的数据可以被加载到发送移位寄存器中。 状态寄存器也会有一个状态位,指示何时收到新的数据字节。 另一方面,软件可以读取接收寄存器,并触发删除数据操作,并允许下一字节的数据被移入。

UART可以有额外的寄存器,允许软件对UART的行为进行配置。  通过软件可以设置接收发送数据的速率,还有所传输数据的格式。比如设置传输速度的波特率,每字节数据是否包含校验位。

数据包结构(Packet Structure)

UART的关键特征之一是其名称中的 "A"。 A "代表异步的意思。 UART在本质上是异步的,因为设备之间没有共享的时钟。 相反,两个设备必须就正在发送的数据的结构和数据的发送速度达成一致。 这种协议允许UART接口对数据线进行过度采样(over sample),并将原始数据重新构建为一个数据包。 我们将研究构成UART数据包的三个特性。

  • 数据速率(Data Rate)

为了在两个UART之间正确发送数据,两个UART必须被配置为以相同的数据速率接收和发送数据。 这通常被称为UART的波特率(baud rate)。 通过设置相同的波特率,UART的内部状态机可以设置移位寄存器工作的合适速率。 常见的数据速率包括9600和115200波特,但一些UART支持更高的数据速率,可达几兆比特/秒。比如使用CC2564c的蓝牙芯片,上面的UART,带硬件流控的,设置的波特率可达3Mbit/s。

  • 奇偶校验(Parity)

在某些情况下,数据包可能包含一个奇偶校验位。 奇偶校验位被接收设备用来确定在传输过程中是否发生了任何数据损坏。 如果一个数据包被配置为偶数奇偶校验,包括奇偶校验位在内的1的总数应该是偶数。  如果一个数据包被配置为奇数奇偶校验,那么包括奇偶校验位在内的1的总数应该是一个奇数。

  • 数据帧(Data Framing)

为了使微处理器能够检测到数据开始发送,我们需要定义没有数据被发送时,Rx/Tx线的行为。 在大多数情况下,当没有数据被发送时,Rx/Tx线都将被驱动为高电平。 当一个设备发送数据时,发送过程的开始是一个起始位(start bit)。 UART将拉低Tx线使之处于低电平,持续时间是一个时钟周期,根据数据传输速率而定的时钟周期,表明数据的传输即将开始。

在起始位之后,数据根据定义好的数据传输速率逐位移出(shifted out),直到所有的数据传输完毕。 UARTs首先传输数据的最小有效位。 一旦所有数据传输完毕,就会发送奇偶校验位(此位可选,两边设备的配置一样即可),然后是停止位。 UART通过拉高Tx线,保持高电平达1个周期来产生一个停止位,这个周期根据数据传输速率而定。许多UART可以被配置为产生1或2个停止位。

下图展示了如何使用偶数和奇数奇偶校验来传输数值0x71。

嵌入式 - UART介绍

发送的数据如果没有起始位或停止位,就会出现成帧错误。 UART可能会简单地丢弃这些数据,或者更有可能通过在状态寄存器中设置一个状态位来显示一个错误情况。 在大多数情况下,如果有大量的电磁干扰使传输中的数据失效,就会发生成帧错误。

8N1

UARTs最常见的配置之一被称为8N1。 这代表了8个数据位,没有奇偶校验位,和一个停止位。 8N1每传输10个比特,就会传输8个比特的数据。 增加一个奇偶校验位和额外的停止位会增加每个数据包的开销,并降低实际数据的总体吞吐量。

嵌入式 - UART介绍

参考:

1,UART basics

UART Basics – ECE353: Introduction to Microprocessor Systems – UW–Madison文章来源地址https://www.toymoban.com/news/detail-477880.html

到了这里,关于嵌入式 - UART介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 嵌入式五大通信协议详解 (一) UART

    GUN C编译器拓展语法学习笔记(一)GNU C特殊语法部分详解 GUN C编译器拓展语法学习笔记(二)属性声明 GUN C编译器拓展语法学习笔记(三)内联函数、内建函数与可变参数宏 数组存储与指针学习笔记(一)数据类型与存储、数据对齐、数据移植、typedef   通用异步收发传输器

    2024年02月05日
    浏览(54)
  • 【计算机三级嵌入式】考试自学笔记(三)——嵌入式系统硬件组成、嵌入式处理芯片以及存储器介绍

    常考知识点: 嵌入式最小硬件组成 嵌入式处理芯片 嵌入式系统的存储器 I/O接口及常用I/O设备 ARM内核典型嵌入式处理芯片 嵌入式系统外部通信接口 嵌入式最小硬件系统的组成如下: 嵌入式硬件系统≠嵌入式最小硬件系统 电源电路 :为整个嵌入式系统提供能量 时钟电路 :

    2023年04月12日
    浏览(84)
  • 嵌入式Linux开发实操(八):UART串口开发

    串口可以说是非常好用的一个接口,它同USB、CAN、I2C、SPI等接口一样,为SOC/MCU构建了丰富的接口功能。那么在嵌入式linux中又是如何搭建和使用UART接口的呢? 一、Console接口即ttyS0 ttyS0通常做为u-boot(bootloader的一种,像是Windows的BIOS),它需要一个交互界面,一般使用ttyS0,即可

    2024年02月12日
    浏览(40)
  • 嵌入式Linux裸机开发(七)UART串口、IIC、SPI通信

    大概学完这三种通信后,之后就先去学系统移植,其他的先暂时放下 串口全称叫做串行接口,通常也叫做 COM 接口。 UART:(Universal Asynchronous Receiver/Trasmitter)通用异步串行收发器。 USART:(Universal Synchronous/Asynchronous Receiver/Transmitter)通用同步/异步串行收发器,相比 UART多了

    2024年02月07日
    浏览(74)
  • 嵌入式机器人系统ROS入门相关知识点介绍

    本文旨在收集整理linux系统、ROS系统、树莓派、ssh软件的相关基础知识。 重点是ROS系统相关的知识,根据该实验课程的要求,最后修改的代码,都是由ROS组织起来,运行在ROS环境下的。 1、ssh软件–mobaXterm ssh:SSH通过在网络中创建安全隧道来实现SSH客户端与服务器之间的连接

    2024年02月06日
    浏览(44)
  • SPI、UART、RS232、RS485、IIC 5种嵌入式经典通信总线协议

      UART即通用异步收发器,是一种通用的串行、异步通信总线。该总线有两条数据线,可以实现全双工的发送和接收。在嵌入式系统种常用于主机与辅助设备之间的通信。UART就是串口,也是一种通信协议/总线协议。 电脑上已经逐步没有了,换成了usb,但是在嵌入式领域是最

    2024年01月16日
    浏览(56)
  • 嵌入式软件调试与验证1概述

    近年来,嵌入式系统(ES Embedded systems)因其灵活的操作和可能性而被广泛应用于电子系统行业。嵌入式系统由硬件、软件和其他模块(如机械)组成,旨在作为更大系统的一部分执行特定任务。网络物理系统(CPS Cyber-Physical System)和物联网(IoT Internet of Things)等重要的新概

    2024年02月08日
    浏览(43)
  • 嵌入式的学习需要合理规划时间

    很多粉丝,问我, \\\"胡老师我想报您的培训班。\\\" ... 得知我知识业余时间写文章,紧接着又会问, \\\"jg单位这么清闲啊,你居然有这么多时间写文章的?而且你文章很深,每一篇我都看都要看很久!\\\" ... 这种粉丝确定不是来害我的??! 在此澄清3点: 我的工作还是很忙的 工

    2024年02月03日
    浏览(28)
  • 嵌入式驱动开发需要会哪些技能?

    嵌入式驱动开发是指在嵌入式系统中编写驱动程序,实现设备与计算机之间的通信。嵌入式驱动开发是指编写设备驱动程序,实现设备与计算机之间的通信。 以下是一些嵌入式驱动开发的具体操作方法:  1)了解硬件设备结构: 在进行嵌入式驱动开发之前,需要对所使用的硬

    2024年01月25日
    浏览(54)
  • 嵌入式硬件需要过哪几关?

    目标是成为一名硬件工程师,用电烙铁和电路板一统江湖,游戏共有九关。 你要有一定的基础,模电,数电这些都得会一些。一般科班出身的专业有电信,通信,自动化等等。 你如果完全没这些基础,连电阻,电容都不认识,那就需要在这关待上很久啦。 模电数电不用太纠

    2024年04月17日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包