1 SPI概述
SPI:Serial Peripheral Interface,串行外围设备接口,是Motorola公司提出的一种高速、全双工、同步的通信总线。
感官认识:下图是带SPI接口的实时时钟芯片DS1302封装图。
下图是SPI主机和从机的连接图。
引脚说明:
SPI总线传输只需4根线:
SCLK:serial clock,时钟线。
MOSI:master out slave in,master发送数据,slave接收数据。
MISO:master in slave out,master接收数据,slave发送数据。
SS: slave select,片选,低电平有效。用来选中哪个slave与master通信。
2 SPI总线特性:
(1)采用主从模式(Master-Slave)架构,支持单Master多Slave模式应用,通过片选信号选择Slave;
(2)全双工通信,一条数据输入线MOSI,一条数据输出线MISO,可以同时接收和发送串行数据;数据传输时高位在前,低位在后;
(3)SPI总线传输共有4种模式;
MODE0:CPOL= 0,CPHA=0。串行时钟SCLK空闲状态时为低电平,数据在SCLK时钟的上升沿采样,下降沿输出;
MODE1:CPOL= 0,CPHA=1。串行时钟SCLK空闲状态时为低电平,数据在SCLK时钟的下降沿采样,上升沿输出;
MODE2:CPOL= 1,CPHA=0。串行时钟SCLK空闲状态时为高电平,数据在SCLK时钟的下降沿采样,上升沿输出;
MODE3:CPOL= 1,CPHA=1。串行时钟SCLK空闲状态时为高电平,数据在SCLK时钟的上升沿采样,下降沿输出;
其中比较常用的模式是模式0和模式3。下面单独画出模式0下的SPI时序图
(4)数据速率可达几 Mbps;
(5)无应答机制。
特别说明:
(1)SPI总线的2条数据线MOSI和MISO,可以用双向IO口实现,如DS1302,虽然和IIC接口看似相同,实则是SPI总线;
(2)SPI传输模式设置:
看到很多地方都提到了SPI总线传输的4种模式选择,但是很少有提到如何设置,在此做简单介绍。
下图是SPI内部框图,看到有2个控制寄存器:SPI_CR1和SPI_CR2,其中就有CPOL(Clock Polarity,时钟极性)和CPHA(Clock Phase,时钟相位),这2个寄存器用来设置时钟极性和时钟相位。
但:实际我们为什么通常都没有设置呢?
因为我们用的带有SPI接口的芯片,都在出厂时设置好了,也给出了操作时序,我们只需按照芯片手册给出的时序去控制芯片即可,而不用管太多。
所以,对于不同的带有SPI接口的芯片,我们应该关注的是它本身的操作时序。
欢迎关注我的微信公众号:FPGA干货架