UART IIC SPI 协议区别

目录

1.首先我们要先了解几个概念

1.1串行通信和并行通信·

1.2 单工,半双工,全双工通信

1.3同步通信和异步通信

2.UART

2.1.UART如何通信:

2.2.UART 字节传送和应答

2.3.波特率

3.IIC

3.1 IIC如何通信

3.2 IIC 字节传送和应答

4.SPI

4.1 SPI如何通信

4.2 SPI字节传送

4.3 极性和相位

 5.UART IIC SPI 区别


1.首先我们要先了解几个概念

串行通信与并行通信

单工通信与半双工全双工的区别

同步通信与异步通信


1.1串行通信和并行通信·

并行通信:

(1)传输速度快:一位(比特)时间内可传输一个字符,并行口传输8位数据一次送出.;

(2)通信成本高:每位传输要求一个单独的信道支持;因此如果一个字符包含8个二进制位,则并行传输要求8个独立的信道的支持;

(3)不支持长距离传输:由于信道之间的电容感应,远距离传输时,可靠性较低

串行通信:

将组成字符的各位串行地发往线路。

特点:

(1)传输速度较低,一次一位,串行口传输方式为数据排成一行、一位一位送出接收也一样; (2)通信成本也较低,只需一个信道。

(3)支持长距离传输,目前计算机网络中所用的传输方式均为串行传输。

(4)针脚:针脚少

(5)用途:只用作控制接口

1.2 单工,半双工,全双工通信

单工通信

单工即数据传输只在一个方向上传输,方向是固定的,不能实现双向通信(A发送数据给B,而B不能发送数据给A),如:收音机广播,你只能听到广播站发出的广播(数据),而你不能反向给广播站发送广播。

            

双工通信

双工分为 半双工 和 全双工。

      

半双工

半双工比单工先进一点,传输方向可以切换,允许数据在两个方向上传输。

但是某个时刻,只允许数据在一个方向上传输,可以基本双向通信。

全双工

比半双工更先进的是全双工,允许数据同时在两个方向传输。发送和接收完全独立,在发送的同时可以接收信号,或者在接收的同时可以发送。它要求发送和接收设备都要有独立的发送和接收能力

1.3同步通信和异步通信

  • 同步通信:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式。

  • 异步通信:发送方发出数据后,不等接收方发回响应,接着发送下个数据包的通讯方式。

2.UART

ART : Universal Asynchronous Receiver-Transmitter, 通用异步收发器;是一种通用的串行,异步通信总线。改总线有两条数据线,可以实现全双工的发送和接收,在嵌入式系统中常用于主机与辅助设备之间的通信  

怎么传数据?怎么判断传输开始与结束?传数据的速度是多少?

2.1.UART如何通信:

UART 为异步串行全双工,传数据是一个字节一个字节传输(先发低位),接收方和发送方不需要时钟同步,并且因为是全双工可以在接收数据的过程中同时发送数据

2.2.UART 字节传送和应答

首先在空闲状态,即无传输时,串口线总是处在高电平的,当需要发送数据时,串口线拉低电平一定时间,代表传输开始,后面的即为数据位,传输结束后有一个奇偶校验位(可有可没有),结束传输后重新拉高电平,并留有一定的时间作为空闲位,串口通信每次最多发送一个字节,因为串口是异步通信,如果连续发送的话,收发两端时间不同步会一直累计误差,最后可能导致数据错乱,这也是为什么在停止位后还要留一点时间当空闲位,为的就是防止累计时间误差的出现,让每次传输结束后收发两端重新开始。

2.3.波特率

波特率用于描述UART通信时的通信速度,其单位为bps(bit per second)即每秒钟传送的bit的数,我们使用波特率来决定 串口每秒钟传输多少数据,例如115200波特率(bps):代表1秒可以传送115200 bits的数据。

3.IIC

IIC总线是Philips公司在八十年代初推出的一种串行、半双工总线.主要用于近距离、低速的芯片之间的通信;IIC总线有两根双向的信号线一根数据线SDA用于收发数据,一根时钟线SCL用于通信双方时钟的同步;IIC总线硬件结构简单,成本较低,因此在各个领域得到了广泛的应用

SCL:serial clock 串行时钟 SDA:serial data 串行数据

3.1 IIC如何通信

IIC总线是一种多主机总线,连接在IIC总线上的器件分为主机和从机主机有权发起和结束一次通信,而从机只能被主机呼叫;当总线上有多个主机同时启用总线时,IIC也具备冲突检测和仲裁的功能来防止错误产生; 每个连接到IIC总线上的器件都有一个唯一的地址(7bit),且每个器件都可以作为主机也可以作为从机(同一时刻只能有一个主机),总线上的器件增加和删除不影响其他器件正常工作;IIC总线在通信时总线上发送数据的器件为发送器,接收数据的器件为接收器;

主机如何去发指令给从机,从机又如何要去响应主机,是由主机发数据给从机,还是从机发给主机呢。这就涉及到IIC的寻址方式

主机在发送起始信号后必须先发送一个字节的数据,该数据的高7位为从机地址,最低位表示后续字节的传送方向,'0'表示主机发送数据,'1'表示主机接收数据;总线上所有的从机接收到该字节数据后都将这7位地址与自己的地址进行比较,如果相同,则认为自己被主机寻址,然后再根据第8位将自己定为发送器或接收器

传输流程:

1.主机发送起始信号启用总线

2.发送需要响应的从机地址,并在最后一位设置传输方向(0表示主机发送数据给从机,1表示从机发送数据给主机)

3.被寻址的从机发送应答信号回应主机

4.发送器发送一个字节数据

5.接收器发送应答信号回应发送器

......(循环4 5直到通信结束)

6.通信完成后主机发送停止信号释放总线

3.2 IIC 字节传送和应答

SCL为高电平时,SDA由高变低表示起始信号 SCL为高电平时,SDA由低变高表示停止信号 起始信号和停止信号都是由主机发出,起始信号产生后总线处于占用状态 停止信号产生后总线处于空闲状态

当我们拉低SDA的电平后代表数据开始传输

IIC总线通信时每个字节为8位长度,数据传送时,先传送最高位,后传送低位,发送器发送完一个字节数据后接收器必须发送1位应答位来回应发送器即一帧共有9位

IIC在进行数据传输时,当时钟线SCL为低电平时发送器向数据线发送一位数据,在这期间的信号允许发生变化,但当SCL为高电平时接收器从数据线上读取数据,在此期间的信号不允许发生变化,必须保持稳定,总结来说,就是SCL为低电平时是你写入数据,可以由你自己改变值,但当SCL为高电平时,你只能读取不能改变,否则就会出错。

iic通信开始由主机开始,结束也是由主机结束,当主机接收不到从机的应答信号或者数据传输已经完成后,主机重新拉高电平结束通信。

4.SPI

SPI(Serial Peripheral Interface)是串行外设接口的缩写,SPI是一种高速的、全双工、同步的串行通信总线;

4.1 SPI如何通信

SPI 和 IIC 类似,都是一个主机可以对多个从机进行来回通信,如图所示,他和iic一样都有时钟线,所以为同步传输,并且因为MOSI和MISO和互不干扰,所以为全双工,收发可以同时进行。CS为片选线,当主机向从机的CS线发送使能信号表示选中开始传输数据,与iic不同的是,spi每发完一个数据后不需要等从机回应,并且也不需要开始位和结束位,所以它的传输为高速传输。但他与多个设备通信时需要多条CS片选线.

4.2 SPI字节传送

SPI总线采用同步方式工作,时钟线在上升沿或下降沿时发送器向数据线上发送数据,在紧接着的下降沿或上升沿时接收器从数据线上读取数据,完成一位数据传送,八个时钟周期即可完成一个字节数据的传送;

假设spi如上图工作方式,当我们遇到第一个下降沿时,代表发送器向数据线发送数据,到第一个上升沿时,表示接收器从数据线上读取数据,完成一个采样读取周期。如此反复八个时钟周期就是一个字节数据的传送。

4.3 极性和相位

极性和相位 SPI总线有四种不同的工作模式,取决于极性(CPOL)和相位(CPHL)这两个因素 CPOL表示SCLK空闲时的状态 CPOL=0,空闲时SCLK为低电平 CPOL=1,空闲时SCLK为高电平 CPHA表示采样时刻 CPHA=0,每个周期的第一个时钟沿采样 CPHA=1,每个周期的第二个时钟沿采样、

脉冲传输前和完成后都是低电平,CPOL为0,第一个边沿(上升沿)采样,第二个边沿(下降沿)输出,对应CPHA为0

脉冲传输前和完成后都是低电平,CPOL为0,第二个边沿(下降沿)采样,第一个边沿(上升沿)输出,对应CPHA为1

脉冲传输前和完成后都是高电平,CPOL为1,第一个边沿(下降沿)采样,第二个边沿(上升沿)输出,对应CPHA为0

 

脉冲传输前和完成后都是高电平,CPOL为1,第二个边沿(上升沿)采样,第一个边沿(下降沿)输出,对应CPHA为1

 5.UART IIC SPI 区别

UART :异步 全双工 串行 一对一

IIC : 同步 半双工 串行 一对多 有应答机制(与spi比较)极性和时钟相位固定(与spi比较)

SPI :同步 全双工 串行 一对多 无应答机制 (与iic比较)极性和时钟相位可变(与iic比较)

参考视频SPI、UART、RS232、RS485、IIC 5种嵌入式经典通信总线协议精讲「附赠课件资料&项目源码」_哔哩哔哩_bilibili

  • 13
    点赞
  • 78
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值