UART协议详解

        uart就是我们常说的串口,UART是Universal Asynchronous Receiver Transmitter的缩写,即通用异步收发器,是一种通用的串行、异步通信总线,该总线有两条数据线,可以实现全双工的发送和接收,在嵌入式系统中常用于主机与辅助设备之间的通信。

        那么很多初学者在这里会存在这样几个疑问。

        1、什么是串行?

        这里我们提到了什么是串行,在通信里面按照通信设配每次发送的二进制的个数将通信方式分为串行通信和并行通信两种,但作为学习来讲,我们应该还要了解什么是并行,这里就串行和并行一起讲解。

        并行通信

        

 图 1并行通信的示意图

        图1就是并行通信的示意图, 例如发送方要方式一个字节的数据,如0x55,转换为二进制为:01010101,那么同步通信就是soc通过8根数据线将这8为数据一次发送给外部设备。

        串行通信

   

        图 2 串行通信示意图

        串行通信就是通过一根数据线发送数据。如图2所示,如果有一个字节的数据(8位),它需要传递8次,才能将一个字节的数据传递给外部设备。 

        并行通信和串行通信优缺点对比

        并行通信需要的数据线多,线与线之间的干扰较大。

        并行通信传递数据满,但干扰小,UART、II2等都是串行通信。

        2、什么是异步

        先来看这样一个问题,发送方发送01和0011,电平信号都是低电平高电平,那么接收方该如何区分呢?  

        这个就和波特率有关,波特率表示单位时间发送的数据,根据高低电平时间来确定发送的数据的位数,区别到底是1个1还是两个1。

        所谓异步就是指发送方和接收方的时钟不同步。

        

        3、什么是全双工?

        在通信中,我们按数据传递的方向将通信分为单工通信和双工通信。

        单工通信

 单工通信示意图

        在单工通信中,将通信双方分为发送器和接收器,在单工通信中,数据只能从发送器发送给接收器,不能从接收器发送给发送器,数据的传递是单向的。

        双工通信

        与单工通信对立的就是双工通信,双工通信即通信双方A可以给B发数据,B可以给A发数据。双工通信又分为半双工通信和全双工通信。

半双工示意图 

        在双工通信中,虽然通信双方可以互发数据,但A给B发数据时,B不能给A发送数据,B给A发数据的时候,A不能给A发送数据。

全双工示意图 

        在全双工通信中,A在B发送数据的时候,B也可以给A发送数据,B给A发送数据的时候,A也可以给B发送数据。

        在描述串口通信之前,我们先来看一下如下几个概念。

        波特率

        波特率是用于描述UART通信时的通信速度。单位为bps,即每秒钟发送bit的数量。注意是描述串口通信时的速率。

       UART帧格式

uart帧格式 

        该图描述了串口通信的过程,发送方先发送一个起始位,起始位表示通信的开始,紧接着发送数据位,数据位发送完了之后发送校验位,最后发送停止位。

        注意:串口协议规定,数据线在空闲的时候必须为高电平。这也就是为什么在发送数据之前为什么要先发送一个低电平的起始位的原因。假如没有起始位那么会出现什么样的情况呢,比如要发送0xFF(0x11111111),那么接收方将无法区分发送的数据。它不知道此时是空闲还是在发送数据。

     例如:A要通过串口给B发送一个数据,以发送0x55为例。以高电平表示1,低电平表示0。

        当接收方收到低电平之后就知道要开始接收数据了,这时候就可以将接收的数据放入到寄存器中了,串口协议规定发送数据的时候要先发送低位。即发送方依次发送10101010。串口协议发送数据的位数可以为5~8位。

        数据位发送完之后要发送一个校验位,在数据发送的过程可能会出现失正,为了避免错,因此出现了校验位。

        在串口通信中,主要使用的是奇偶校验,以0x55为例,发送方发送了偶数个1,因此向校验位写1,接收方接收数据后,如果发送接收的数据是奇数个1,与校验位数据不匹配,就知道发送过程中出现了错误,接收方就会告诉发送方发送错误需要重新发送。校验位可有可无,如果有的话,通信速度会变慢

        停止位表示通信的结束,停止位必须为高电平,可以为1位,1.5位、2位,但是不能没有。

        

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
UART(Universal Asynchronous Receiver-Transmitter)是一种常见的串口通信协议,常用于将数据从一个设备传输到另一个设备,如将数据从计算机发送到外部设备,或者在嵌入式系统中进行设备之间的通信。下面是UART串口通信协议详解: 1. 物理连接:UART通信使用两根信号线,一根用于传输数据(TX线),一根用于接收数据(RX线)。这两根线连接在两个设备之间,其中TX线与对方的RX线相连,RX线与对方的TX线相连。 2. 数据传输:UART是一种异步通信协议,数据通过一个字节一个字节地传输。每个字节由起始位(Start bit)、数据位(Data bits)、可选的校验位(Parity bit)和停止位(Stop bit)组成。 - 起始位:起始位用于标识一个数据传输的开始,它是一个低电平信号。 - 数据位:数据位用于传输实际的数据,通常有8位或9位数据位可供选择。 - 校验位:校验位用于检测数据传输过程中的错误。常见的校验方式有奇偶校验、偶校验和无校验。 - 停止位:停止位用于标识一个数据传输的结束,它是一个高电平信号。通常有1位或2位停止位可供选择。 3. 波特率:UART通信中的波特率(Baud rate)表示单位时间内传输的比特数。常见的波特率有9600、115200等,波特率越高,传输速率越快。 4. 通信模式:UART通信可以在全双工或半双工模式下进行。在全双工模式下,两个设备可以同时发送和接收数据;在半双工模式下,两个设备交替发送和接收数据。 5. 数据流控制:UART通信中可以使用硬件流控制或软件流控制来控制数据的传输。硬件流控制通过额外的信号线实现,如RTS(Request to Send)和CTS(Clear to Send)信号线;软件流控制通过特定的数据字节来实现,如XON和XOFF字符。 总结起来,UART串口通信协议是一种常见的异步串口通信协议,通过起始位、数据位、校验位和停止位来传输数据。它可以使用不同的波特率和通信模式,并支持硬件或软件流控制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值