spi通讯协议

spi与iic的对比,为啥使用spi而不用iic。

spi是一主多从模式,iic为各个设备之间地位相等可以主从切换。

1.spi的通讯速率没有限制,而iic最大为3.4mhz,但普遍使用的还是0到400khz,所以spi比iic的通讯速率更快。

2.iic的scl与sda都要配置成开漏输出模式,而spi没有限制

3.spi没有应答位等。

4.spi的抗干扰比iic强。

5.iic是半双工,因为sda相当于spi中的mosi,miso,ss,三根线。spi为全双工。

6.iic速率受限制的原因,iic为弱上拉(回弹慢,影响数据传输速率),强下拉下拉快。

7.spi为推挽输出,浮空或上拉输入,数据传输的速率快效率高。

spi通信介绍(其中m为master主机,s为slave从机,o为output,i为input,)

1.spi有四根通讯线sck(serial clock时钟线),mosi(master output slave input主机输出从机输入),miso(master input slave output主机输入从机输出),ss(slave select从机选择)。

2.支持一主多从模式。

3.同步全双工。(挂载的两个设备可以进行同时的信息传递与接受)同步全双工需要更多的带宽和硬件资源。(因此设备之间的距离较远或存在干扰,可能会影响同步全双工的性能)

关于一些进行spi通讯的模块介绍

上图是 w25q64是一个flash存储器

图中引脚介绍

vcc电源(3.3v),

cs连接spi通讯线上的ss(slave select从机选择),低电平选中进行通信(低电平允许从设备开始通信),未被选中时miso,mosi两个引脚为高阻态断开。

DO为输出,连接到设备上的miso(主机输入从机输出),

DI为输入,连接到设备上的mosi(主机输出从机输入)

clk为serial clock时钟线,

gnd接地。

spi硬件电路

1.所有spi设备的sck,mosi,miso分别连接到一起

2.主机另外引出多条ss控制线,分别接到各个从机的ss引脚上。可使用138译码器加573实现三个ss控制多个从设备。

3.输出引脚为推挽输出,输出引脚配置为浮空或者上拉输入。

通讯原理图

假如主机中一个八位数据1100 1010要发送到从机,从机一个数据1011 0011要发送到主机,

波特率发生器讲解(起到一个同时控制主从设备进行移位采集操作的作用):给一个脉冲(上升沿),将主机移位寄存器中的最高位(最左位)移出寄存器将数据放到MOSI上,同时将从机的最高位(左位数据)放到MISO上。再给一个下降沿脉冲,主机将MISO上的数据采集到自己末尾(最右位),从机将MOSI上的数据采集到从机的移位寄存器的末尾最右位。完成一个位的传输。

开始进行通讯(下图为原理):

spi通信的时序

1.起始条件:ss从高电平切换到低电平(下降沿)

2.终止条件:ss从低电平切换到高电平(上升沿)

3. 交换一个字节

模式一(上升沿移出,下降沿采集)

1.多个输出连接在一起,如果同时开启输出,会造成冲突当从设备的ss未被选中时MISO为高阻态

2.在SS为上升沿时(终止信号),MOSI可以再变化一次,将mosi置到一个默认的电平,此时MISO变为高阻态。

 模式三

模式三与模式一再SCK时序上相反,下降沿移出,上升沿采集。

模式零(下降沿移出,上升沿采集)

1.这里是将ss也当做SCK的一个时基单元。ss下降沿后,主机移位寄存器将一个位(最高位)移到MOSI。从机移位寄存器将一个位(最高位)移到MISO上。SCK上升沿后,MOSI上的数据被采集到从机移位寄存器的最后一位。MISO上的数据被采集到主机移位寄存器的最后一位。完成一位数据的交换。

2.ss上升延后终止通讯。

3.在第八个上升沿时,数据被采集完成(一个字节数据交换完成)。在第八个下降沿时,MOSI置回默认电平或者主机放出下一个字节的第一位。MISO变化一次,变为下一个字节的第一位(因为相位提前了原因,ss的下降沿被作为一个信号采集的相位,所以多一个上升沿移出一位,所以移出下一个字节的第一位)。如果这个移出位不需要,就是只传输一个字节就结束(当SS上升沿时)MISO变化为高组态。

模式二

模式二与模式零在SCK时序上相反,ss起始信号进行移出一位,SCK下降沿采集一位,SCK上升沿移出

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值