UART协议——异步全双工串行通信方式


前言

2023.4.22 世界地球日


一、简介

UART:Universal Asynchronous Receiver/Transmitter,通用异步收发器

  • 广泛的应用在各类MCU和SOC产品上
  • “不需要额外的时钟线进行数据的同步传输”。即只要信号拉低,即可开始传送数据(不在时钟沿发送数据)
  • 一个数据的发送方和一个数据的接收方

1、优点

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

2、缺点

  • 数据帧最大支持9位数据(没有校验位的时候最大为9个数据)
  • 不支持多主机或多从机的主从系统

二、数据格式

一帧数据由起始位数据位校验位停止位组成,没有数据传输时为空闲位

在这里插入图片描述

起始位:0,接收方检测到低电平时,开始接收数据
(需要起始位的原因:由于UART没有控制线,要让接收方知道什么时候开始接收数据,就在传输时把信号线拉低)

数据位:5、6、7、8位,从数据的最低位开始传输
(数据位可变的原因:UART是一种低速总线,每多发一位都占用不少的时间(由传输波特率决定),所以可以根据传输数据的特点,采用不同位宽以节约数据传输的时间。)

校验位:可有可无,检查发送数据中1的个数,是包含校验位在内的个数。
偶校验位来说,如果一组给定数据位中1的个数是奇数,补一个bit为1,使得总的1的个数是偶数。
奇校验位来说,如果给定一组数据位中1的个数是奇数,补一个bit为0,使得总的1的个数是奇数。
在这里插入图片描述

在这里插入图片描述

停止位:1/1.5/2位的高电平。当发送完停止位之后,UART总线进入空闲

空闲位:1,无数据传输

三、波特率

1、定义

每秒钟传输的数据位数:bit/s
传输1bit所需时间:bit_width = 1/(baud rate)

clk=100 MHz,波特率=9600,T=10 ns
1s/9600 = 104166 ns,也就是传输1bit需要104166ns,也就是10416个时钟周期,所以需要对时钟进行分频

2、波特率和采样频率

两者是不同的概念,在数据的传输中,信号可能受到一些干扰而产生一些抖动(比如说电磁兼容性设计中的近端串扰),如果接收端只对这些信号进行一次采样,那么它有可能采样到的是不准确的数据,所以接收端在采样时,通常都要采样多次,然后通过处理获得准确的数据。(波特率是采样多次后得到的准确数据,采样数据可能会发生错误

16倍数据波特率的时钟:每个数据有16个时钟采样,取中间值

3、计算

如果波特率为9600 bit/s,传输的数据位为8位,无校验位,一位停止位,那么传输速度最大是多少?

答:每一帧数据为10bit,那么最大速度为960 Bps

四、常见接口电平

1、TTL电平

晶体管-晶体管逻辑集成电路:Transistor-Transistor Logic

  • 低电平:0 ~ -5V
  • 高电平:0 ~ 5V
  • 输入高电平最小2V,输出高电平最小2.4V,典型值3.4V
  • 输入低电平最大0.8V,输出低电平最大0.4V,典型值0.2V

2、RS232(负逻辑)

  • 高电平:-3V~-15V
  • 低电平:+3~+15V

下面是传输数据01010101,从最低位开始传输
在这里插入图片描述

3、RS485

差分信号,可以抑制共模干扰,因此在恶劣的环境中拥有很好的抗干扰性,比较稳定

  • 高电平:+2 ~ 6V
  • 低电平:-2 ~ -6V
  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值