SPI
简述
SPI是串行外设接口(Serial Peripheral Interface),Motorola公司提出,现在单片机的的许多模块(FLASH,NRF24L01)都在使用这种,主要有以下特点:
- 全双工
- 同步
- 简单
- 没有流控和应答机制
信号线
标准的SPI总线上,只存在一个主机(Master)和若干从机(Slaver)。SPI接口包含4四根信号线,分别为:
信号线 | 控制方 | 描述 |
---|---|---|
SCK/SCLK/CLK 时钟线 (serial clock) | 主机 | 用来传输SPI的同步信号,一般是8个时钟周期为单位,传输一个Byte。 根据时钟极性和时钟相位的区别,共有4种模式。 |
CS/CSN/CE 片选 (chip select/enable) | 主机 | 片选信号是主机控制从机是否通信的使能信号。 一般规定低电平选中(使能),所有的片选信号是带N的,表示负极性 |
MOSI Master Output Slaver Input | 主机 | 主机数据输出,从机数据输入。 这是一根从主机到从机的信号线。 |
MISO Master Input Slaver Output | 从机 | 主机数据输入,从机数据输出。 这是一根从从机到主机的信号线。 |
时序
为了能够兼容更多的设备,SPI总线根据时钟极性(CPOL, Clock Polarity)和时钟相位(CPHA, Clock Phase)总共有4种模式。
上面展示了CS的作用和SCK的在4种模式下的作用。
只有CS在低电平的的情况下,SCK、MOSI和MISO的信号线才有作用。CPOL决定了时钟空闲的电平,CPOL为0,SCK空闲状态为0;CPOL为1,SCK空闲状态为1。CPHA决定了是在奇数边沿输出还是在偶数边沿输出,相应的就在另一个边沿输入。