SPI硬件设计、协议、速率全解析

SPI硬件电路

SPI(Serial Peripheral Interface)是一种嵌入式产品常用的板级高速、全双工通信总线。

它采用1主多从的方式进行通信。

整个通信的物理层通常需要(3+N)根线。

3指的是:SCK、MOSI、MISO

N指的是片选线:片选线的数量取决于具体的从机数量及从机配置模式;

1从机时: 只需要1根片选

多从机时:如果支持菊花链模式,也仅需要1根片选;如果不支持菊花链,则每个从机都需要独立的片选。

在这里插入图片描述

S\S\ : Slave Select

SCK : Serial Clock

MOSI: Master Output, Slave Input

MISO: Master Input, Slave Output

空闲状态下SCK的电平由CPOL控制、总线运行时的数据采样时刻由CPHA决定,关于CPOL和CPHA的定义在SPI总线标准中的描述如下:

CPOL — SPI Clock Polarity Bit

1 = Active-low clocks selected. In idle state SCK is high.

0 = Active-high clocks selected. In idle state SCK is low.

CPHA — SPI Clock Phase Bit

1 = Sampling of data occurs at even edges (2,4,…,16) of the SCK clock

0 = Sampling of data occurs at odd edges (1,3,…,15) of the SCK clock

简介总结为:

CPOL: Clock POLarity 时钟极性

CPHA: Clock PHAse 时钟相位

CPOL: 决定总线空闲时CLK时钟的极性(0为低电平,1为高电平)

CPHA: 决定数据何时进行采样(0为在时钟的第1个跳变边沿进行采样,1位在时钟的第2个跳变边沿采样)

由此,可以定义出SPI通信时的4种传输模式:

在这里插入图片描述
参考原文:《SPI通信的4种传输模式》

SPI时序讲解

一、SPI主从通信:

SPI的基本结构相当于两个8位移位寄存器的首尾相接,构成16位的环形移位寄存器,从而实现了主机与从机的数据交换;

在这里插入图片描述

二、SPI通讯模式

SPI有4种不同的传输时序,取决于时钟极性CPOL和时钟相位CPHA的组合。

在这里插入图片描述

CPHA是用来控制数据是在第一个跳变沿还是第二个跳变沿采集的。
在这里插入图片描述

通过上图可以看到:

CPHA=0的时候,数据是在第一个跳变沿的时候就会被采集。
CPHA=1的时候,数据是在第二个跳变沿的时候才会被采集。

那问题来了,到底是上升沿还是下降沿采集?

这个就由CPOL来决定了:

CPOL=1的时候是上升沿采集。CPOL=0的时候是下降沿采集。

在这里插入图片描述

除此以外,CPOL还决定了我们时钟线SCLK空闲时的状态。

CPOL=0的时候表示SCLK在空闲时为低电平。
CPOL=1的时候表示SCLK在空闲时为高电平。

Ok,明白了这个,我们再分析4种模式的时序图。

1.模式0(CPOL=0 CPHA=0)

CPOL = 0:时钟线空闲时是低电平,第1个跳变沿是上升沿,第2个跳变沿是下降沿

CPHA = 0:数据在第1个跳变沿(上升沿)采样

时序图如下:

在这里插入图片描述

2.模式1(CPOL=0 CPHA=1)

CPOL = 0:空闲时是低电平,第1个跳变沿是上升沿,第2个跳变沿是下降沿

CPHA = 1:数据在第2个跳变沿(下降沿)采样

时序图如下:

在这里插入图片描述

3.模式2(CPOL=1 CPHA=0)

CPOL = 1:空闲时是高电平,第1个跳变沿是下降沿,第2个跳变沿是上升沿

CPHA = 0:数据在第1个跳变沿(下降沿)采样

时序图如下:

在这里插入图片描述

4.模式3(CPOL=1 CPHA=1)

CPOL = 1:空闲时是高电平,第1个跳变沿是下降沿,第2个跳变沿是上升沿

CPHA = 1:数据在第2个跳变沿(上升沿)采样

时序图如下:

在这里插入图片描述

三、示例分析

实际芯片的Datasheet中,大部分是不会给出SPI时序图工作模式,此时需要根据时钟和数据读取方式判断工作模式。

在这里插入图片描述

从CLK看支持Mode 0,空闲时低电平,第一个上升沿采样。

时序分析如下:

  1. CS拉低,开始通信;

  2. CLK引脚上出现脉冲,在脉冲的边沿上,I/O引脚开始脱离高阻态,最多占用一个时钟周期;

  3. MOSI引脚发送指令0x0Bh,MISO引脚处于高阻态,占用八个时钟周期;

  4. MOSI引脚按照大端序发送24位地址,先发送高字节,MISO引脚处于高阻态,共占用24个时钟周期;

  5. MOSI和MISO均进入高阻态,等待八个时钟周期;

  6. MOSI进入空闲,MISO上开始出现数据脉冲,在该芯片上,数据按照写入的顺序读出,读出N个字节,占用N*8个时钟周期;

  7. CS拉高,MOSI/MOSI进入高阻态,CLK引脚回到空闲电平,通信结束。

本文来源于网络,参考原文:《SPI时序,看不懂你打我》

补充知识1-多从机配置模式

SPI多从机配置模式

在这里插入图片描述

图. 多从机SPI配置

菊花链模式

在这里插入图片描述

图. 多从机SPI菊花链配置

参考原文:《深入剖析 SPI 通信原理及应用》

补充知识2-SPI通信速率

SPI通信速率

SPI的作为master或者slave时可以达到的最大传输速率是多少呢?

I2C协议v2.1规定了100K,400K和3.4M三种速率(bps)。
SPI是一种事实标准,由Motorola开发,并没有一个官方标准。已知的有的器件SPI已达到50Mbps。具体到产品中SPI的速率主要看主从器件SPI控制器的性能限制。

因此SPI的最大传输速率主要受到以下几个条件影响:
1.SPI的最大时钟频率
2.CPU处理SPI数据的能力
3.输出端驱动能力(PCB所允许的最大信号传输速率)

参考原文:《SPI通信介绍》

  • 10
    点赞
  • 139
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
XPT2046是一种硬件SPI(Serial Peripheral Interface)触摸屏控制器。SPI是一种同步串行通信接口,常用于连接微控制器和外围设备。XPT2046通过SPI接口与主控设备(如微控制器)进行通信,实现触摸屏的功能。 XPT2046硬件SPI具有以下特点: 1. 高速传输:硬件SPI可以以更高的速率传输数据,提供更快的响应时间和更高的触摸屏采样率。 2. 硬件控制:XPT2046通过硬件SPI直接与主控设备通信,无需额外的软件层。这样可以减少主控设备的负荷,提高系统性能。 3. 可靠性:硬件SPI通信更稳定可靠,不容易受到干扰和误差影响,提高了数据传输的准确性。 4. 简化电路:硬件SPI只需少量的引脚和电路连接就能完成通信,减少了电路板的复杂度和尺寸。 使用XPT2046硬件SPI需要进行相应的配置和编程: 1. 设置SPI接口:选择正确的通信模式、数据位长度、时钟频率等参数,以匹配XPT2046的要求。 2. 通过SPI发送指令:按照XPT2046的通信协议,向其发送命令,如读取触摸坐标等。 3. 读取SPI接收数据:通过SPI接收器接收XPT2046传回的数据。 4. 解析数据:根据XPT2046提供的数据格式,解析接收到的数据,获取触摸屏的状态、坐标等信息。 5. 根据需求进行处理:根据接收到的数据,进行相应的操作,例如在屏幕上显示触摸点、执行触摸操作等。 总的来说,XPT2046硬件SPI是一种高速、可靠的触摸屏控制器,通过硬件SPI接口与主控设备通信,可以简化电路设计并提高系统性能。使用XPT2046硬件SPI需要进行相应的配置和编程,以实现触摸屏的功能。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ltqshs

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值