SPI通信
SPI简介部分
-
所有SPI设备的SCK、MOSI、MISO分别连在一起
-
从主机引出多根SS选择线,分别接到每个从机的SS输入端,主机的SS线都是输出,从机的SS线都是输入,SS线 是低电平有效,同一时间主机只能选择一个从机 只能置一个SS为低电平
-
SPI引脚的配置:输入引脚配置为推挽输出,输入引脚配置为浮空或上拉输入
-
MISO引脚、主机一个是输入,但是从机多个是输出,如果多个从机始终是推完输出,会导致冲突,在SPI协议里有一条规定,当从记得SS引脚为高电平,也就是未被选中时,他的MISO引脚必须切换为高阻态
移位示意图
移位输出,数据放到通信线上,就是放在了输出数据寄存器(时钟上升沿完成此过程)
采样输入,时钟下降沿,第一个时钟结束后的现象
八个时钟之后数据进行了交换
-
如果只想发送不想接收
- 发送同时接收,只是这个接收到数据我们不看他就行了
-
如果只想接收不想发送
- 接收的同时随便发送一个无用数据,用来置换从机的数据,可以发送0x00、0xFF
-
对于SPI通信,在只进行发送或只进行接受的时候,会有一些资源浪费
SPI对字节流的规定
-
不像I2C那样
-
有效数据流第一个字节是寄存器地址
-
之后依次是读写的数据,使用的是读写寄存器的模型
-
-
在SPI中
- 通常采用的是指令码加读写数据的模型
- SPI起始后,第一个交换发送给从机的数据,一般叫做指令码,在从机中会定义一个指令集,当我们需要发送什么指令时,就可以在起始后第一个字节,发送指令集里面的数据
- 这样就能指导从机完成相应的功能
-
在SPI里也有和I2C一样的地址指针,每读写一个字节,地址指针自动加一
-
由于SPI没有应答机制,所以交换一个字节后,就立刻交换下个字节就行了