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没有应答机制,所以交换一个字节后,就立刻交换下个字节就行了