深入理解SPi通讯协议

发布时间:2024年01月03日

目录

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只是提供了一种在片选信号使能时,以及时钟沿来临时的读写数据的方式,在片选信号使能的时间内,你可以任意的读写任意位的数据,只要符合对应的存储器的读写方式即可。

文章来源:https://blog.csdn.net/weixin_50932441/article/details/135365649
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。