SPI协议简单介绍

导言

SPI是串行扩展总线。

串行总线技术可以使系统的硬件设计大大简化、系统的体积减小、可靠性提高。同时系统的更改和扩充极为容易。

常用的串行扩展总线有:I2C(Inter IC Bus)总线、单总线(1-WIRE BUS)、SPI(Serial Peripheral Interface)总线及Microwire/PLUS等。

一、SPI协议

SPI总线是微控制器四线的外部总线。SPI没有明文标准,是一种事实总线,对通信操作的实现由芯片厂商和驱动开发者通过data sheet和application notes沟通实现的细节。SPI是四根信号线协议,如下:

SPI协议简单介绍_第1张图片

SCLK:Serial Clock(Output from master);

MOSI:Master Output Slave Input(Outpt from Master);

MISO:Master Input Slave Output(Output from Slave);

SS:Slave Select(Active low,Output from Master);

二、 SPI协议通信

SPI是单主设备通信,总线中只有一个设备发起通信,能发起通信的设备称为主设备。当SPI主设备想读/写从设备时,首先拉低对应从设备的SS线SS是低电平有效);然后发送工作脉冲到时钟线上,在相应的脉冲时间上,主设备把信号发到MOSI实现写同时可以对MISO线采样实现读

三、SPI操作模式

SPI有四种操作模式:模式0、模式1、模式2、模式3。

这几个模式之间的区别是定义了在时钟脉冲的哪条边沿转换(toggles)输出信号,哪条边沿采样输入信号,还有时钟脉冲的稳定电平值(即时钟信号无效时是高还是低)。每种模式由两个参数描述,称为时钟极CPOL(clock polarity)与时钟期CPHA(clock phase)。

Mode = Bit[CPOL]Bit[CPHA]

CPOL=0表示 SCK在空闲状态时为0;

CPOL=1表示 SCK在空闲状态时为1;

CPHA=0表示 在SCK第一个边沿时输入输出数据有效;

CPHA=1表示 在SCK第二个边沿时输入输出数据有效;

一般从器件的工作模式是固定的,主机要跟从机采用一样的工作模式,双方才能正常通信。如果有多个从设备,且从设备使用了不同的工作参数,那么主设备与不用的从设备通信时必须重新配置这些参数。

SPI协议简单介绍_第2张图片

3.1 Mode0

Mode0时,CPOL=0,CPHA=0,SCK空闲状态为低电平,主机数据在每个上升沿被从机采样,数据输出同理。 

SPI协议简单介绍_第3张图片

3.2 Mode1

Mode1时,CPOL=0,CPHA=1,SCK空闲时为低电平,在SCK第二个边沿时数据有效,即SCK下降沿有效。

SPI协议简单介绍_第4张图片

 3.3 Mode2

Mode2时,CPOL=1,CPHA=0,SCK空闲时为高电平,在SCK第一个边沿时数据有效,即SCK下降沿有效。

SPI协议简单介绍_第5张图片

3.4 Mode3

Mode3时,CPOL=1,CPHA=1,SCK空闲状态为高电平,主机数据在第二个边沿时有效,即每个上升沿被从机采样,数据输出同理。

SPI协议简单介绍_第6张图片

 四、SPI基本时序

SS为低电平时,表示对应的从机设备被使能,在每个SCK周期可以传输1Bit数据,采样时刻取决于器件支持的SPI mode,根据不同SPI器件的控制方法,在进行正式的数据读写操作前,一般需要先写入控制字,然后是寄存器地址和数据。

如下是FM25V05铁电存储器采用SPI模式0的写时序,SS(CS)被拉低,主机数据在每个上升沿被从机采样,Opcode是控制字,控制字采样结束后开始采样数据。

SPI协议简单介绍_第7张图片

 如下是FM25V05铁电存储器采用SPI模式0的读时序:

SPI协议简单介绍_第8张图片

 需要注意的是在SS下降沿和SCLK第一个边沿,或SS上升沿和SCLK最后一个边沿之间要留有一定的延迟时间,一般是0.5个SCLK周期。

参考:

 【1】关于SPI协议,看这一篇文章就够了!-面包板社区

 【2】总线I2C和SPI,工程师喜欢用哪一个?

 

你可能感兴趣的:(通信协议,fpga开发,spi)