通信协议详解——UART串行通信

        UART,即通用异步串行通信,是最常用的通信协议之一。本文结合实际通信数据,对UART串行通信协议进行详细介绍。

接口定义

        TXD:数据发送

        RXD:数据接收

        GND:公共地

        标准的UART只能支持双机通信,通信时一端的数据发送对应的是另一端的数据接收,即通信双方的TXD与RXD需要交叉连接,双方的GND则需要连接在一起。如下图1所示:

图1、UART双机通信连接示意图

波特率

        波特率,也称作比特率,是数据传输的速率,单位为bps(bits per second),即每秒传输的数据位(bit)数,也就是传输一位数据所用的时间的倒数。理论上波特率可以是任意值,但有一些值比较常用的,比如2400bps、9600bps、19200bps、115200bps等。

        举个例子,如波特率为9600bps,那么传输一个数据位(bit)需要的时间就是1s/9600≈104.2us。

数据格式

        一个UART通信数据帧的格式如图2所示:

图2、UART通信数据帧格式示意图

  • 起始位

        当没有数据传输即通信空闲时,UART要求通信线路保持为高电平,即‘1’。那么每当有效数据传输之前,UART要求先发送一个bit宽度的低电平,即发送一个‘0’,用于标识一帧通信数据的开始,即起始位。

  • 数据位

        起始位之后就要开始传输真正的有效数据了,有效数据一般都是8位的,也有7位或9位的情况。数据位要求先发送最低位,最后发送最高位,即低位在前、高位在后。

  • 校验位

        校验位是一个可选位,视具体情况,可以有也可以没有。校验位通常用来检查数据传送的正确性,有以下几种方式:

        A. 无校验(no parity)。

        B. 奇校验(odd parity): 若数据位中“1”的总数是偶数,则校验位为“1”;若“1”的总数是奇数,则校验位为“0”。

        C. 偶校验(even parity):若数据位中“1”的总数是偶数,则校验位为“0”;若“1”的总数是奇数,则校验位为“1”。

        D. 1校验(mark parity):校验位始终为“1”(不常用)。

        E. 0校验(space parity):校验位始终为“0”(不常用)。

  • 停止位

        停止位是一帧通信数据的结束标志,必须是高电平,即‘1’,其宽度可以是1位、1.5位或2位。

通信数据实例

        图3是使用Kingst LA5016逻辑分析仪采集的一帧UART串行通信的实际数据。

图3、UART串行通信实例波形

        逻辑分析仪不但可以采集到通信波形,还可以根据波形自动解析出数据,如图中的0xE4所示就是自动解析出的8位有效数据的具体数值,而最前方的绿色圆点代表的是起始位,结尾的红色方框代表的是停止位,本例中没有使用校验位。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值