SPI&UART&I2C三种通信协议理解

概要

嵌入式设备中最常用的三种通信协议,今天重点写的是SPI,因为这也是自己后面需要用的,重新看了一些SPI通信相关的一些东西,又有了一些新的收获。在小结中将对三种协议做一个简要的对比。

SPI通信

说起SPI,大多数人其实并不知道其英文全称,Serial Peripheral Interface,“串行外围设备接口”,而一说起特点,就是“高速,全双工,同步,串行”,这里面需要注意的是全双工和同步,全双工也就是可以同时进行数据的发送和接受,不同于后文将要介绍到I2C的半双工模式。

SPI工作时有四根线:SCLK(时钟),MOSI(主机输出从机输入),MISO(主机输入从机输出),CS(片选信号)
四根线中需要注意的CS线,其全称是Chip Select,之前自己一直对这根线半知半解,只知道需要将其拉低(常用)后才会进行通信过程,今天看了一些资料后,才知道这根线还有些门道。首先我们常见的芯片上的CS标识符上会有一个横杠,其实就代表着在低电平时候有效,有的芯片也会标为“CS#”。另外就是一根CS线连接着一个从机(Slave),当一主多从的时候,就需要多根CS线在不同的时候发挥其作用,因此,这也是为什么很多文章说SPI的一大缺点就是需要多根线连接,可能会增加硬件设计的复杂性。

再一个就是SPI协议中的极性和相位,也就是CPOL和CPHL,它们均由0和1两种状态:
极性CPOL为0:SCLK空闲时处于低电平状态
极性CPOL为1:SCLK空闲时处于高电平状态
相位CPHL为0:主机在上升沿发送数据,从机在下降沿接受数据
相位CPHL为1:主机在下降沿发送数据,从机在上升沿接受数据
CPOL和CPHL各自状态的两两组合,就形成了SPI通信的四种状态,各位可以自己动手画简单画画四种状态,自己刚开始看着这些感觉也挺绕,但动手画了画之后发现理解起来还是挺简单的。电路或这些信号传输的相关内容有的还是需要将抽象形象化后可能会恍然大悟。

最后就是总结一下SPI优缺点:
优点:通信速度快,可以同时进行数据发送和接受,协议相对简单
缺点:多线连接,增加硬件复杂性(其实也是小问题),长距离传输的话可能会导致信号衰减和干扰,主设备数量有限。

为什么重点要写SPI,因为最近需要用SPI来做一个数字电位器控制的电路模块,后面完成了再出一期。

UART通信

UART全称:Universal Asynchronous Receiver Transmitter,通用异步收发传输器。最主要特点就是只需要两根线,即数据发送线和数据接收线,发送器和接收器不需要共享时钟。数据被组织成了数据包进行传输,一个数据包包含一个起始位,5到9个数据位,以及一个活两个停止位。

至于优点,协议简单,非常容易,兼容性很好,可以用于通信距离长的场景

缺点的话,速度较低,可靠性不太行,可能会受到噪声和干扰的影响。

I2C通信

I2C通信可能是我们最经常用和听到的,记得以前本科时候第一个调的单片机通信就是I2C通信。同样作为一种串行通信协议,使用两根线来进行双向通信,不同与UART的发送线和接受线,I2C两根线分别是SCL(时钟)和SDA(传输线)。

优点:可以实现多设备连接到同一总线,每个设备地址唯一,协议简单,空闲模式下功耗低

缺点:速度慢,总线长度和设备数量有限制,多个设备同时发送数据时,可能会发生冲突。

小结

大概了解了三种通信方式,也可以对它们进行一些对比,上面介绍每一种协议的时候,其实都有自己画的一些示意图,偷懒一下就没有放上来,各位看官可以找找一些示意图会更加直观。

首先对比下I2C和SPI:
I2C 半双工 SPI 全双工
I2C 有应答机制 SPI 无应答机制(这一点可以想象下一个人喊另一个人,I2C就是只有另一个人答应后,这个人才会跟他说考试答案。而SPI虽然无应答机制,但其通过时钟的上升下降沿判断发送数据,也可以想象为一个人自己喊两个不同的音调,喊完后不管另一个人如何就开始自说自话,也许大概可以这样比喻比喻hhh)
I2C向总线广播从机地址寻址,SPI向对应从机发出使能信号(第二点的专业化描述)

从第三点也可以看出来,I2C虽然节省了硬件资源,但通信时间也就长了,而SPI虽然需要的硬件资源多,但时间短了。鱼与熊掌向来不可兼得。

UART总结就是在长距离通信和速度要求较低的配置中表现比较出色。

以上就是今天的主要内容,深入理解这些协议还是要亲自动手去实践一下,不然纸上谈兵再熟悉其实都没啥用。

一点儿碎碎念

每天都感觉有好多事情要去做,但每天一坐下来又总是半天不知道从哪里开始,时间却又总是在这种状态中悄然流逝,有时候还是需要有一个清晰的思路去把每一天的时间最大化利用。

  • 24
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕业设计,基于SpringBoot+Vue+MySQL开发的影城管理系统,源码+数据库+论文答辩+毕业论文+视频演示 随着现在网络的快速发展,网上管理系统也逐渐快速发展起来,网上管理模式很快融入到了许多生活之中,随之就产生了“小徐影城管理系统”,这样就让小徐影城管理系统更加方便简单。 对于本小徐影城管理系统的设计来说,系统开发主要是采用java语言技术,在整个系统的设计中应用MySQL数据库来完成数据存储,具体根据小徐影城管理系统的现状来进行开发的,具体根据现实的需求来实现小徐影城管理系统网络化的管理,各类信息有序地进行存储,进入小徐影城管理系统页面之后,方可开始操作主控界面,主要功能包括管理员:首页、个人中心、用户管理、电影类型管理、放映厅管理、电影信息管理、购票统计管理、系统管理、订单管理,用户前台;首页、电影信息、电影资讯、个人中心、后台管理、在线客服等功能。 本论文主要讲述了小徐影城管理系统开发背景,该系统它主要是对需求分析和功能需求做了介绍,并且对系统做了详细的测试和总结。具体从业务流程、数据库设计和系统结构等多方面的问题。望能利用先进的计算机技术和网络技术来改变目前的小徐影城管理系统状况,提高管理效率。 关键词:小徐影城管理系统;Spring Boot框架,MySQL数据库
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值