![6812b094d600b58d125d2e3d9128df22.png](https://i-blog.csdnimg.cn/blog_migrate/3064fb13b164cedf6f80d650938bc985.png)
最近正在调试一个芯片的评估板,其中配置寄存器使用的是SPI通信协议。其实很多芯片寄存器的配置都用到了SPI通信协议,我们今天就需要实现这个SPI通信协议。
首先,我们需要了解SPI协议的基本内容,SPI主要有四根传输线,分别为SPI_CLK, SPI_EN, SPI_DI, SPI_DO。
主设备会将数据时钟通过SPI_CLK传送给从设备,从设备根据SPI_CLK进行接收发送工作;SPI需要注意的是极性CPOL和相位CPHA;CPOL指的是时钟极性,CPHA指的是时钟相位。一个时钟周期内,会有两个跳变沿,它既有可能是上升沿也有可能是下降沿;CPOL的值决定了SPI数据时钟在空闲状态下保持为高电平(CPOL=1)还是低电平(CPOL=0),CPHA的值决定了SPI的采样边沿是第一个边沿(CPHA=0)还是第二个边沿(CPHA=1)。
举个例子,从某芯片手册上看,该芯片手册SPI的时序图如下:
![a46fe35c08b2778e76851a8cdd802088.png](https://i-blog.csdnimg.cn/blog_migrate/f15ef60a1f4ceaa7100564c8b2b46a93.png)