深入理解SPi通讯协议

目录

SPI简介:

主设备通过选择线(SS)

主设备通过时钟线(SCLK)

主设备通过主输出线(MOSI)

主设备通过主输出线(MISO)

SPI读写数据:

SPI写入数据:

SPI读取数据:


SPI简介:

SPI(Serial Peripheral Interface)是一种常用的串行通信协议,用于在微控制器和外部设备之间进行数据传输。SPI通信使用主从架构,其中一个设备充当主设备,其他设备充当从设备。SPI通信使用时钟极性(CPOL)和时钟相位(CPHA)来控制通信模式。

主设备通过选择线(SS)

选择要与之通信的从设备:实际上SS是片选信号线,一般主机选择一个从机通信时,需要把对应从机的SS信号线拉低

主设备通过时钟线(SCLK)

提供时钟信号,从设备根据时钟信号进行数据传输,一般由主设备产生同步时钟信号

主设备通过主输出线(MOSI)

主设备通过(MOSI)发送数据,从设备通过主输入线(MOSI)接收数据

主设备通过主输出线(MISO)

从设备通过(MISO)发送数据,主设备通过主输入线(MISO)接收数据


SPI读写数据:

SPI写入数据:

要给目标存储芯片写入数据00001111首先片选信号置位选定芯片

写入地址为:

参考存储器的数据手册其写入方式为:

实际上我们发送的数据就要包含以下的内容:

但是SPI属于串行同步通信,SPI的正常工作还需要时钟同步信号:

本例中所需要的信号对应的采样时刻在时钟的上升沿:

也就是说,在片选信号使能时,每次时钟的上升沿所采集到的信号为有效信号,根据对应存储器的使用规则,在有效数据区间中,发送需要的内容即可。

SPI通信的模式由CPOL和CPHA决定,共有四种模式:

  1. 模式0:CPOL=0,CPHA=0。时钟处于空闲状态时为低电平,数据在时钟的下降沿采样。
  2. 模式1:CPOL=0,CPHA=1。时钟处于空闲状态时为低电平,数据在时钟的上升沿采样。
  3. 模式2:CPOL=1,CPHA=0。时钟处于空闲状态时为高电平,数据在时钟的上升沿采样。
  4. 模式3:CPOL=1,CPHA=1。时钟处于空闲状态时为高电平,数据在时钟的下降沿采样。

通过配置CPOL和CPHA,可以选择适合特定从设备的通信模式。例如,某些从设备可能在出厂时就被设置为模式0,因此主设备需要相应地配置为模式0才能与其通信。


SPI读取数据:

本例读取数据如下:

写入数据与读取数据类似,需要在片选信号和和时钟沿时刻采样数据,根据目标芯片的数据手册进行读取数据操作即可

最后要提醒一点:

SPI的读写操作,实际上SPI只是提供了一种在片选信号使能时,以及时钟沿来临时的读写数据的方式,在片选信号使能的时间内,你可以任意的读写任意位的数据,只要符合对应的存储器的读写方式即可。

  • 37
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Vizio<

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值