spi原理
一、概述
SPI(Serial Peripheral Interface),是一种高速串行全双工的接口。最早由Motorola首先提出的全双工同步串行外围接口,采用主从模式(Master—Slave)架构,支持一个或多个Slave设备。SPI接口主要应用在EEPROM、FLASH。
二、接口
SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(单向传输时)。也是所有基于SPI的设备共有的,它们是MOSI(主出从入)、MISO(主入从出)、SCLK(时钟)、CS(片选)。
时钟信号只由主设备控制,用于时钟同步。在一主多从模式下,每个从设备都有一条独立的CS信号线,如果要和特定的从机进行通讯,可以将相应的CS(下图使用NSS表示)信号线拉低。SPI接口为收发为双全工串行方式传输,收发同步,主设备发出一位给从设备时,从设备也发出一位给主设备。一主多从情况如下图:
三 、工作模式
SPI具有4种工作方式,时钟极性(CPOL)和相位(CPHA)共同决定读取数据的方式:
CPOL用来决定SCLK空闲时的电平:CPOL=0,空闲时为低电平;CPOL=1,空闲时为高电平。
CPHA用来决定采样时刻:CPHA=0,每个周期的第一个时钟沿采样;CPHA=1,每个周期的第二个时钟沿采样。
设定 |
空闲时电平状态 |
数据采样 |
---|
MODE0: CPOL=0,CPHA=0 |
低电平 |
每个时钟周期第一个沿采样 |
MODE1: CPOL=0,CPHA=1 |
低电平 |
每个时钟周期第二个沿采样 |
MODE2: CPOL=1,CPHA=0 |
高电平 |
每个时钟周期第一个沿采样 |
MODE3: CPOL=1,CPHA=1 |
高电平 |
每个时钟周期第二个沿采样 |
|