SPI是一种芯片与芯片之间的通讯协议,采用的是主从模式,主机只能有一个,但是从机可以有很多个。
SPI通讯需要四条信号线:分别是SS,SCK,MOSI,MISO,主机和从机都有这些端口,下面来简单介绍一下这四条信号线的功能。
1.SS,这是片选信号线,单片机通过这条线的高低电平来选择和哪个从机进行通讯,一般情况下是低电平有效,也即低电平选中从机。
2.SCK,这条是时钟信号线,有主设备产生。
3.MOSI,这条是发送信号线,主设备从这条线上输出数据,从设备相应的从这条线上接收数据,
4.MISO,这条信号线是接收信号线,主设备从这条线上接收数据。
说完了SPI通讯的物理所需硬件连接,那如何实现通讯呢?
首先主机选中要通讯的从机,使用SS信号线选中,然后通过发送数据端口,将数据包裹起来,也即是除了自己要发送的数据之外,还要有起始位操作码地址码,这样才能将数据准确的发送到要保存的位置。
SPI是串行同步通讯,所以在发送数据需要和时钟线配合,才能给存储器发送数据,配合的原理如下:当要发送的目的存储被片选选中后,只有时钟的上升沿时才会采集数据线的数据,如果时钟上升沿的时候数据线电平为高电平,那么它采集到的就是1,如果这一瞬间是0,则采集到的就是0,有多少个上升沿,就会传输多少个数据,数据线和时钟线就是这样来配合发送数据的。
但是要分情况来看采集数据的时刻,有的则是下降沿,这是由存储器决定的,这就需要你查阅数据手册来判断了。
说完了如何写数据,接下来说一说如何读数据,这个就是和写入数据很类似的了,起始位,然后操作码,最后是地址,这样就可以将数据读出来了,操作码是告诉从机我们需要进行的操作。再读数据的过程中也是需要时钟配合的,即使是不采集数据,也是要提供时钟信号的。
这就是我的简单总结,希望对你有帮助。