目录
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决定,共有四种模式:
- 模式0:CPOL=0,CPHA=0。时钟处于空闲状态时为低电平,数据在时钟的下降沿采样。
- 模式1:CPOL=0,CPHA=1。时钟处于空闲状态时为低电平,数据在时钟的上升沿采样。
- 模式2:CPOL=1,CPHA=0。时钟处于空闲状态时为高电平,数据在时钟的上升沿采样。
- 模式3:CPOL=1,CPHA=1。时钟处于空闲状态时为高电平,数据在时钟的下降沿采样。
通过配置CPOL和CPHA,可以选择适合特定从设备的通信模式。例如,某些从设备可能在出厂时就被设置为模式0,因此主设备需要相应地配置为模式0才能与其通信。
SPI读取数据:
本例读取数据如下:
写入数据与读取数据类似,需要在片选信号和和时钟沿时刻采样数据,根据目标芯片的数据手册进行读取数据操作即可
最后要提醒一点:
SPI的读写操作,实际上SPI只是提供了一种在片选信号使能时,以及时钟沿来临时的读写数据的方式,在片选信号使能的时间内,你可以任意的读写任意位的数据,只要符合对应的存储器的读写方式即可。