UART、RS232、RS485、I2C和SPI的介绍

基本知识

  • 串行通信:多个数据通过一条数据线,依次传输
  • 并行通信:多个数据通过多条数据线,一次性传输
  • 单工通信:只能接收数据或者发送数据(遥控器、收音机)
  • 半双工通信:在同一时刻,只能接收数据或者发送数据(对讲机)
  • 全双工通信:在同一时刻,既可以接收数据,也可以发送数据(电话)
  • 波特率:用于描述通信时的通信速度,其单位是 bps(bit per second),即每秒钟传送 bit 的数量

UART

UART(Universal Asynchronous Receiver Transmitter),即通用异步收发器。

  • 特点:
    1、有两根数据线(RXDTXD
    2、串行、异步通信
    3、全双工通信
    4、点对点通信:接收端和发送端(两个设备)

  • 应用:在嵌入式系统中,常用于主机和辅助设备之间的通信

  • 时序图
    在这里插入图片描述
    一次完整的数据传输包括:起始位、数据位、校验位(可有可无)和停止位
    传输数据的时候,高电平(置1)表示空闲
    起始位: 置低电平(0),表示通信的开始
    数据位: 起始位后开始通信,传输数据,先传送数据低位,再传送数据高位(数据位可以发送5-8位,一般发送8位数据(即一个字节))
    校验位:(可有可无) 验证数据是否发送正确,只能检查错误,不能修正,加上后,通信速度变慢
    停止位: 置高电平(置1),表示一次通信的结束(占用1位、1.5位或者2位)

  • UART每次通信只能发送一个字节,不能够累计发送(避免累计误差);若要发送多个字节数据,需要先发送一个字节,然后结束通信,再开始通信,发送下一个字节

  • 因为是异步通信,没有时钟线,所以通过波特率来区分 01还是0011

  • 硬件连接图
    在这里插入图片描述

  • 一般情况下,SOC会集成 UART控制器,在使用UART进行通信的时候只需要对其内部的相关寄存器进行设置,即可完成通信

USART

USART是通用同步/异步收发器(带同步时钟线 USART_CK),只是一种协议方式,根据不同电平方式分为 RS232协议和RS485协议。

UART串口通信存在的问题:
1、电气接口不统一
2、抗干扰能力差:UART 直接使用 TTL信号表示 01,但 TTL信号的抗干扰能力很差,传输过程中很容易出错
3、通信距离短:因为 TTL信号的抗干扰能力较差,所以其通信距离也很短。一般只用于一个电路板上两个不同芯片之间的通信(板载间通信)

RS232协议:(点对点通信)
1、基于串口,所以时序图和 UART串口一致
2、在电气层上做了一些改变,统一电气接口(定义了一个标准的连接器,标准中对连接器的每个引脚的作用加以规定,还对信号的电平加以规定)
3、抗干扰能力变强,通信距离变长(一般可达15米)
4、电气接口为 DB-9,一般使用 RXDTXDGND这三条线
5、规定逻辑为 1的电平为 -5V到-15V;规定逻辑为 0 的电平为 +5V到+15V

硬件连接:
在这里插入图片描述

RS232协议存在的问题:
1、接口的信号电平值较高,易损坏接口电路的芯片
2、与 TTL电平不兼容,需要电平转换芯片才能与 TTL电路连接
3、通信速度低
4、易产生共模干扰,抗噪声干扰性弱
5、通信距离15米,还是较短

RS485协议
特点:(半双工通信)
1、采用差分信号进行数据传输(双绞线),使用两线间电压差为 +2V到+6V表示逻辑0;两线间电压差为 -2V到-6V表示逻辑1,从而实现了远距离通信(1500米);且在电子噪声较大的环境下,能够有效传输信号
2、允许连接多个收发器,具有多站能力,也就是可以建立一个设备网络
3、RS485接口信号的电平比RS232降低了,所以不易损坏接口电路的芯片

硬件连接图(设备网络,RS485总线上挂载多个设备,主从机制参考 I2C总线)
120Ω电阻用来消除信号线上的共模干扰
在这里插入图片描述

I2C

I2C总线是一种串行、同步、半双工通信的多主机通信总线,有两根数据线:SDA(数据线)、SCL(时钟线);硬件结构简单,成本较低
应用: 同一块电路上的不同芯片之间进行通信
特点:
1、I2C总线是一种多主机总线,连接在 I2C总线上的器件分为主机和从机;
2、主机有权发起和结束一次通信,而从机只能被主机呼叫;
3、当总线上有多个主机同时启用总线时,I2C也具备冲突检测和仲裁的功能来防止错误发生;
4、每个连接到 I2C总线上的器件,都有一个唯一的地址(7位),且每个器件都可以作为主机(同一时刻只有一个主机),也可以作为从机;总线上的器件增加和删除不影响其它器件的正常工作;
5、I2C总线在通信时,总线上发送数据的器件叫发送器,接收数据的器件叫接收器

划分:

  • 传输模式
    标准模式(最快100k/s)
    快速模式(最快400k/s)
    高速模式(最快3.4M/s)
    10位寻址(最多1024个从机地址),可以和7位寻址兼容
  • 按模式:主发送,主接收,从接收,从发送
    我告诉你:“晚上10点提醒我看球赛.”----对于我来说,这是主发送
    我问你:"到时间了吗?"你:“还没呐”-----对于我来说,这是主接收
    你提醒我:“10点啦!球赛开始啦!”-------对于我来说,这是从接收
    你问我:"现在几比几啦?"我:“还是0:0”–对于我来说,这是从发送

硬件连接图
在这里插入图片描述通信过程:
1、主机发送 起始信号,启用总线(这时总线上的所有设备都可以收到,并且其它设备在此器件就不会启用总线了)
2、主机发送一个字节的数据指明 从机地址 和后续字节的 传送方向(是主机—>从机,还是从机—>主机)
一个字节的数据:前7位为从机地址,最后一位是传送方向(是0表示主机—>从机,1表示从机—>主机)
3、被寻址的从机发送 应答信号 回复主机,其它设备查看地址不是自己的地址,并不会理会
4、发送器发送一个字节数据
5、接收器发送应答信号回应发送器
第4、5步 循环…
6、通信完成后,主机发送 停止信号 释放总线,一次通信完成

起始信号:SCL处于高电平时,SDA由高变低
停止信号:SCL处于高电平时,SDA由低变高
字节传送与应答: 发送器发送一个字节数据(先传送高位,再传送低位);接收器发送 应答位 来回应,(1位低电平应答)
同步信号:
传输数据期间,
SCL低电平期间,发送器向数据线上发送一位数据,在此期间数据线上的信号允许发生改变
SCL高电平期间,接收器从数据线上读取一位数据,在此期间数据线上的信号不允许发生改变(因为SCL高电平时,数据线上信号改变会被认为是起始信号或者停止信号

SPI

SPI(Serial Peripheral Interface)是串行外设接口的缩写,是一种高速、全双工、同步的串行通信总线;最少有四根线:MISO(主设备输入、从设备输出),MOSI(主设备输出、从设备输入),SCLK(时钟线),CS(片选线)
SPI采用主从方式工作,一般有一个主设备和一个或多个从设备

硬件连接图
每多连接一个从设备,就要多用连接一条片选线,和I2C利用地址来寻址的方式不同
在这里插入图片描述通信过程:
1、SPI总线传输数据:先传送高位,再传送低位;一个字节传送完成后,无需应答,即可开始下一个字节的传送
2、SPI总线采用同步方式工作,时钟在上升沿或下降沿时发送器向数据线上发送数据,在紧接着的下降沿或上升沿接收器从数据线上读取数据,从而完成一位数据的传送;八个时钟周期即可完成一个字节数据的传送

极性和相位:根据芯片手册来判断
SPI总线有四种不同的工作模式,取决于 极性(CPOL)相位(CPHA)

CPOL表示 SCLK 空闲时的状态:
CPOL = 0,SCLK低电平表示总线空闲
CPOL = 1,SCLK高电平表示总线空闲

CPHA表示采样时刻:
CPHA = 0,每个周期的第一个时钟沿采样,相位为0
CPHA = 1,每个周期的第二个时钟沿采样,相位为1

I2CSPI 的异同

相同点:
1、均采用串行、同步的方式
2、均采用 TTL电平,传输距离和应用场景类似(近距离传输,板载通信)
3、均采用主从方式工作
不同点:
1、I2C为半双工通信;SPI为全双工通信
2、I2C有应答机制;SPI无需应答
3、I2C通过总线广播 从机地址 来寻址;SPI通过 向片选线发送使能信号 来寻址
4、I2C的时钟极性和相位固定;SPI的时钟极性和相位可以调整

猜你喜欢

转载自blog.csdn.net/Sir666888/article/details/125477333