秒懂通讯之SPI

#挑战30天在头条写日记#


前言


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

另外还学习了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本质是移位寄存器


以上是我对SPI通讯的大致理解,如有不同,可以在评论区探讨一下,互相学习!

展开阅读全文

页面更新:2024-05-23

标签:通讯   信号线   数据线   时钟   信号   状态   操作   地址   数据   设备

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top