SPI是串行设备接口的(serial Peripheral Interface)简称。SPI是一种高速的,全双工,同步的通信总线。SPI
在芯片管脚上只占4根线。
二、单机与多机通信
1、单机通信
SCLK-------->SCLK
MOSI---------->MOSI
MISO<-----------MISO
SS ------------>ss
SCLK :串行时钟线,用于数据同步
MOSI:主机输出数据,从机输入数据。
Master ouput Slave input
MISO:主机输入数据,从机输出数据。
2、多机通信
三、通信的细节与过程
四、模拟SPI接口
在有些情况下没有硬件SPI的支持,只能通过IO口来模拟SPI时序图,参考代码如下:
uint8_t SPI1_SendByte(uint8_t byte)
{
uint32_t i=0;
uint8_t d=0;
for(i=0; i<8; i++)
{
//MSB,最高有效位发送数据
if(byte & (1<<(7-i)))
W25QXX_MOSI =1;
else
W25QXX_MOSI =0;
//设置SCLK引脚为低电平,这个时候,从机会开始读取MOSI引脚电平
W25QXX_SCLK=0;
delay_us(2);
//由于是同步事件,这个时候,从机通过MISO引脚已经输出数据给主机,主机可以读取MISO引脚电平值
if(W25QXX_MISO)
d|=1<<(7-i);
//设置SCLK引脚为高电平
W25QXX_SCLK=1;
delay_us(2);
}
return d;
}