摘要:目录概述概述总线机制四种工作模式四种工作模式数据交换概述数据交换是一种同步串行通信协议,由一个主设备和一个或多个从设备组成。 主设备发起与从设备的同步通信,完成数据的交换。
目录
1.SPI概述
2.SPI总线机制
3 .SPI 4 种工作模式
4.SPI数据交换
1. SPI概述
SPI(Serial Peripheral Interface)是一种同步串行通信协议,由主设备和主设备组成。一台设备由一个或多个从设备组成。 主设备发起与从设备的同步通信,完成数据的交换。 SPI是一种高速全双工同步通信总线。 标准 SPI 仅使用 4 个引脚。 它主要用于 EEPROM、闪存、实时时钟 (RTC)、数模转换器 (ADC) 和数字信号处理器 (DSP)。 以及数字信号解码器之间。 这是摩托罗拉公司推出的同步串行接口技术。 高速、全双工、同步通信总线。 SPI 总线于 1979 年首次推出。 摩托罗拉将 SPI 总线集成到其首款基于 68000 微处理器的微控制器芯片中。 芯片内仅占用4个引脚用于控制和数据传输,节省了芯片内引脚数量和PCB布局空间。 这种简单易用的特性使得SPI技术被集成到越来越多的芯片中。
2. SPI总线工作原理
SPI的通信原理非常简单。 工作在主从模式。 该模式通常具有一个主设备和一个或多个从设备,并且需要至少四根线。 事实上,也可以使用3线(用于单向传输)。 所有基于 SPI 的设备共有的还有 SDI(数据输入)、SDO(数据输出)、SCLK(时钟)和 CS(片选)。
(1)SDO/MOSI – 串行数据输出/主输出从输入、主设备数据输出、从设备数据输入。 (2) SDI/MISO – 串行数据输入/主输入从输出、主设备数据输入、从设备数据输出。 (3) SCLK——串行时钟,由主设备产生的时钟信号。 (4) CS/SS – 从机选择/片选、从机设备使能信号。 由主设备控制。 如果有多个从设备,每个从设备都有一个与主设备连接的片选引脚,所以当主设备与从设备通信时,需要相应的芯片。 选择拉低或拉高的引脚电平。
3. SPI 的四种工作模式
CPOL:时钟极性 时钟极性。 指示SPI空闲时时钟信号是高电平还是低电平。
CPHA:时钟相位 时钟的相位。 指示SPI设备是在SCK引脚上的时钟信号变为上升沿时触发数据采样,还是在时钟信号变为下降沿时触发数据采样。
时钟极性CPOL用于配置哪种状态。 SCLK 电平与空闲或活动状态无关。 时钟相位 CPHA 用于设置发生数据采样的边沿。
如果SCLK=0,CPOL=0 表示空闲。 因此,当SCLK为高电平且CPOL=时为有效状态。 1. SCLK=1表示空闲状态。 因此,有效状态是当SCLK为低电平时。 CPHA=0。 这意味着数据采样已经开始。 在第一个边沿,数据被打开。 第二个边缘。 CPHA=1表示数据采样在第二个边沿完成,数据在第一个边沿切换
我们的SPI通信有四种不同的模式和不同的从设备。 它可以在工厂设置为特定模式。 它无法改变。 但由于通信双方需要工作在相同的模式下,因此可以通过CPOL(时钟极性)和CPHA(时钟相位)设置主设备的SPI模式来控制主设备的通信模式,如下所示: Mode0: CPOL =0, CPHA=0 Mode 1: CPOL=0, CPHA=1 Mode 2: CPOL=1, CPHA=0 Mode 3: CPOL= 1, CPHA=1
四种模式时序示意图如下。 :
模式0:CPOL=0,CPHA=0。 SCK串行时钟线空闲时为低电平,在SCK时钟的上升沿采样数据,并在SCK时钟的下降沿切换数据。
模式1:CPOL=0,CPHA=1。 SCK串行时钟线空闲时为低电平,在SCK时钟的下降沿采样数据,并在SCK时钟的上升沿切换数据。
模式2:CPOL=1,CPHA=0。 SCK串行时钟线空闲时为高电平,在SCK时钟的下降沿采样数据,并在SCK时钟的上升沿切换数据。
模式3:CPOL=1,CPHA=1。 SCK串行时钟线空闲时为高电平,在SCK时钟的上升沿采样数据,并在SCK时钟的下降沿切换数据。 比较常用的模式是模式0和模式3。 为了更清楚地解释SPI总线时序,下图为模式0下的SPI时序图。
上图清楚地表明,在模式0空闲状态下,SCK串行时钟线处于低电平。 当 SS 被主机拉低时,数据传输开始。 数据线MOSI和MISO的数据切换(toggle)发生在时钟的下降沿(上图中的黑色虚线),MOSI和MISO数据的采样发生在数据线的中间。 数据(上图中的灰色实线)。 下图清楚地展示了其他三种模式数据线MOSI和MISO的数据切换(toggle)位置和数据采样位置之间的关系。
4. SPI 数据交换
SPI 设备之间的数据传输之所以也称为数据交换,是因为在 SPI 协议中,SPI 设备充当“发送者”或“发送者”的角色。在数据通信过程中,它被称为“发送器”。这是因为它规定不能只充当接收器。 每个时钟周期,SPI 设备都会发送和接收 1 位大小的数据。 这相当于设备交换 1 位大小的数据。
从设备接收主设备发送的数据。 控制信号必须预先可供主设备访问。 因此,主设备必须首先通过SS/CS引脚对从设备进行片选,以选择访问哪个从设备。
在数据传输过程中,每次接收到的数据都会在下一次数据传输中发送出去。之前采样过。 如果不读取之前接收到的数据,则接收到的数据可能会被丢弃,最终导致SPI物理模块出现故障。 因此,程序通常会在 SPI 完成数据传输后读取 SPI 设备中的数据,即使程序不需要它(虚拟数据)。
参考资料:
学习SPI通信协议(SPI总线)
SPI总线协议概述
评论前必须登录!
注册