一文解读SPI

描述

前言

让我们回顾一下,我们学习了串口通讯(优点是全双工,缺点是只能点对点通讯)

另外还学习了IIC通讯(优点是一主多从通讯,缺点是半双工)

技巧:看一个总线是半双工还是全双工就看有几根数据线

那有没有总线是以全双工,并且还是一主多从的方式通讯呢?

通讯

答案是有的,那就是用SPI通讯

写数据

先来看看设备之间如何使用SPI方式来通讯

通讯

可以看出设备之间有4根线连接(SCK、MOSI、MISO、SS),下面来细说每根线的作用

SS为片选信号线(用来选择哪个设备)

MOSI (master output , slave input)主机输出,从机输入

MISO(master input , slave output )主机输入,从机输出

SCK为时钟信号线(用来提供基准时钟信号)

下面以控制EEPROM为例(图中型号为93C46的是EEPROM)

通讯

假设EEPROM里面有128个内存地址(用一个字节就可以寻址完)

通讯

这SPI的数据格式

通讯

无论是写操作还是读操作,起始位都为1,但操作码01是写操作,操作码10是读操作

当地址码写入EEPROM中寄存器的地址,这时就选中了这个地址,相当于打通了直达该地址的通道

紧接着写入数据,这样数据被保存下来了

通讯

用电平表示是这样的

通讯

那是不是直接发送给被控设备就行了?

当然 是不行的

因为SPI是串行同步通讯的,所以需要数据线和时钟线两根线才能传输数据

而且SPI发送数据是当时钟线处于跳变沿时才能被发送的(具体是处于什么跳变沿,取决于该设备)这里以上升沿为例

通讯

在SS(片选信号)被选中期间,当SCK(时钟信号)发生上升沿,数据就被确定下来

以上面的数据为例

通讯

根据时钟信号线空闲状态是高电平还是低电平,又因为每种状态可以分为上升沿和下降沿触发

共计有4种状态

通讯

读数据

读操作也是同样的操作

现在要把EEPROM里的数据读出来

通讯

根据SPI的数据格式

通讯

现在需要MOSI写入1 10 0000001

MISO后半段就可以读取数据了(上面EEPROM存储的为0000 1111)

通讯

总结

SPI是全双工,一主多从

SPI是当发生跳变沿时,传输数据

SPI本质是移位寄存器

通讯

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分