前言
让我们回顾一下,我们学习了串口通讯(优点是全双工,缺点是只能点对点通讯)
另外还学习了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
+关注
关注
17文章
1867浏览量
99876 -
通讯
+关注
关注
9文章
942浏览量
36365
原文标题:秒懂SPI
文章出处:【微信号:mcu168,微信公众号:硬件攻城狮】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
一文详解SPI串行外设接口
一文搞懂SPI通信协议
一文详解SPI接口
一文读懂SPI串行外设接口
一文读懂MSP430 SPI总线
AN1245中文手册之Microchip SPI串行SRAM器件的建议用法
一文介绍SPI串行总线
一文解读FPGA设计者的5项基本功及设计流程资料下载
一文讲完SPI通讯,看后不懂来找我
一文看懂SPI协议
一文搞懂SPI通信协议
你知道什么是SPI吗?一文入门,简单易懂

一文解读SPI
评论