11 SPI通信协议

江科大stm32 P11. SPI通信协议

SPI相对I2C的优缺点

1. 速度更快,SPI协议没有严格规定最大传输速率,取决于芯片厂商的设计需求(I2C用功能换性能)

2. 设计简单,实现功能没有I2C那么多,学习起来简单

3. 没有上升沿缓慢的情况

4. SPI硬件开销比较大,通信线的个数比较多,通信过程中会有资源浪费的情况(只发送,只接收时)

SPI通信简介

SS用来指定从机,一个从机一条,低电寻址

SPI没有应答机制

SPI硬件电路

  • SCK完全由主机掌控,主机输出,从机输入
  • SPI是单端,需要共地,从机没有电源的话还要接VCC
  • SS线低电平有效,主机初始化后所有的SS都输出高电平
  • SS输出高电平结束通信
  • 同一时间主机只能选择一个从机
  • 推挽输出使得SPI引脚信号上升沿和下降沿十分迅速,不像I2C上升沿缓慢

SPI的冲突点

多个从机输出共享一个主机输入,它们都为推挽输出,容易出现问题

所以SPI规定,当从机的SS为高电平时它的MISO(输出)引脚必须切换为高阻态(相当于引脚断开,不输入任何电平)

这个程序一般写在从机里,主机不用管

SPI移位示意图

波特率发生器输送到移位寄存器即为时钟输入端,每来一个时钟上升沿,主机从机寄存器向左移位(高位先行)移出的位放在引脚上。

时钟下降沿, 引脚上的位采样输入到移位寄存器最低位

此时MOSI是高电平

MISO是低电平

八个时钟主机和从机完成数据交换,所以SPI的数据收发都是基于字节交换

只发送时,忽略掉收到的数据就行

发送时,随便发但一般法0x00或0xff

SPI基本时序单元

CPOL(Clock Polarity)时钟极性

CPHA(Clock Phase)时钟相位

模式0 数据移出对齐ss下降沿,模式0用的更多

在第一个边沿之前就要移出数据,可以看出,在SS下降沿时主从机就将数据移出了。

SPI指令集模型

spi通信通常指令码加读写数据的模型,SPI第一个发送给从机的数据 是指令码,从机中会有对应的指令集 ,指令码后面可能会有多个数据,也可能没有,取决于指令集。

波形图示例(W25Q64)

W25Q64规定,写指令后是地址高位

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值