51单片机_SPI

news/2026/1/16 21:21:39/文章来源:https://www.cnblogs.com/WIRO/p/19494086

51单片机_SPI

一、SPI 时序初步认识

UART、I2C 和 SPI 是单片机系统中最常见的三种协议。SPI 是英文 Serial Peripheral Interface 的缩写,顾名思义就是串行外围设备接口。SPI 是一种高速的、全双工、同步通信总线,标准的 SPI 也仅仅使用4个引脚,常用于单片机和 EEPROM、Flash、实时时钟、数字信号处理器等器件的通信。

SPI 通信原理比 I2C 要简单,它主要是主从方式通信,这种模式通常只有一个主机和一个或者多个从机,标准的 SPI 是4根线,分别为SSEL (片选,也写作 SCS)、SCLK(时钟,也写作 SCK)、MOSI(Master Output/Slave Input,主机输出从机输入) 和 MISO(Master Input/Slave Output,主机输入从机输出)。

  • SSEL: 从设备片选使能信号。如果从设备是低电平使能,当拉低这个引脚后,从设备就会被选中,主机与这个被选中的从机进行通信。
  • SCLK: 时钟信号,由主机产生,和I2C通信的SCL有点类似。
  • MOSI: 主机给从机发送指令或者数据的通道。
  • MISO: 主机读取从机的状态或者数的据通道。

在某些情况下,也可以用3根线的SPI或者2根线的 SPI 进行通信。比如主机只给从机发送命令,从机不需要回复数据的时候,那么MISO就可以不要;而在主机只读取从机的数能,不需要给从机发送指令的时候,那么 MOS1就可以不要;

当一个主机一个从机的时候从机的片选有时可以固定为有效电平而一直处于使能状态,那么 SSEL 就可以不要;

此时如果再加上主机只给从机发送数据,那么 SEL 和 MISO 都可以不要;如果主机只读取从机送来的数据,SSEL 和 MOSI 都可以不要。

3线和2线的SPI要知道其工作原理,实际中也是有应用的,但是当我们提及 SPI 的时候,一般都是指标准SPI,都是指4根线的这种形式。

SPI通信的主机也是单片机,在读写数据时序的过程中,有四种模式,要了解这四种模式,首先要了解以下两个名词。

  • CPOL: Clock Polarity,就是时钟的极性。通信的整个过程分为空闲时刻和通信时刻,如果 SCLK 在数据发送之前和之后的空闲状态是高电平,那么CPOL = 1,如果SCLK空闲状态是低电平,那么 CPOL = 0。
  • CPHA: Clock Phase,就是时钟的相位。

image-20260116205741926

主机和从机要交换数据,就牵涉到一个问题,即主机在什么时刻输出数据到 MOSI 上而从机在什么时刻采样这个数据,或者从机在什么时刻输出数据到 MISO上,而主机什么时刻采样这个数据。

同步通信的一个特点就是所有数据的变化和采样都是伴随着时钟沿进行的,也就是说数据总是在时钟的边沿附近变化或被采样。而一个时钟周期必定包含了一个上升沿和一个下降沿,这是周期的定义所决定的,只是这两个沿的先后并无规定。又因为数据从产生的时刻到它的稳定是需要一定时间的,那么,如果主机在上升沿输出数据到 MOSI上,从机就只能在下降沿去采样这个数据了。反之如果一方在下降沿输出数据,那么另一方就必须在上升沿采样这个数据。

​ CPHA = 1,表示数据的输出是在一个时钟周期的第一个沿上,至于这个沿是上升沿还是下降沿,这要视 CPOL 的值而定,CPOL = 1那就是下降沿,反之就是上升沿。那么数据的采样自然就是在第二个沿上了。

​ CPHA = 0,表示数据的采样是在一个时钟周期的第一个沿上,同样它是什么沿由 CPOL 决定。那么数据的输出自然就在第二个沿上了。这里会有一个问题:就是当一帧数据开始传输第一个 bit 时,在第一个时钟沿上就采样该数据了,那么它是在什么时候输出来的呢? 有两种情况: 一是 SSEL 使能的边沿,二是上一帧数据的最后一个时钟沿,有时两种情况还会同时生效。

image-20260116205915168

组合成四种 SPI 模式:

CPOL 和 CPHA 组合起来,就形成了四种标准的 SPI 工作模式:

模式 CPOL CPHA 空闲时时钟 采样时刻(数据被读取) 数据切换时刻(数据被改变)
0 0 0 低电平 时钟上升沿 时钟下降沿
1 0 1 低电平 时钟下降沿 时钟上升沿
2 1 0 高电平 时钟下降沿 时钟上升沿
3 1 1 高电平 时钟上升沿 时钟下降沿

(小技巧:通常只需记住粗体标出的“采样时刻”,这是最关键的信息。)

image-20260116210418712

下面以 CPOL=1/CPHA=1 为例的时序图:

当数据未发送时以及发送完毕后,SCK 都是高电平,因此 CPOL = 1。

可以看出,在 SCK 第一个沿的时候,MOSI 和MISO 会发生变化,同时 SCK第二个沿的时候,数据是稳定的。此刻采样数据是合适的,也就是上升沿即一个时钟周期的后沿锁存器读取数据,注意最后是隐藏的 SSEL 片选,这个引脚通常用来决定是哪个从机和主机进行通信。

image-20260116205315835

为简化起见,下面几张时序图 把 MOSI 和 MISO 合在一起,可以仔细研究下~

image-20260116211224892

在时序上,SPI 没有了起始、停止和应答,同样,UART 和 SPI 在通信的时候,只负责通信,不管是否通信成功,而 I2C 却要通过应答信息来获取通信成功、失败的信息,所以相对来说,UART 和 SPI 的时序都要比 I2C 简单一些。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1170006.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

零成本搭建全球加速后端!Cloudflare Workers + 国内优化,小白也能30分钟搞定

一、准备工作 1.1 注册Cloudflare账号 首先需要注册一个Cloudflare账号,可以用Google、GitHub等账号,Cloudflare提供免费计划,有数据库、对象存储等完全足够个人项目使用。 1.2 准备域名 自备一个域名,可以使用阿…

轮廓系数(Silhouette Score)量化K-Means聚类效果的核心指标

在K-Means聚类中,仅靠可视化判断聚类效果不够精准(尤其是高维数据),而**轮廓系数(Silhouette Score)** 是衡量聚类质量的黄金指标——它能从“同类紧致性”和“异类分离度”两个维度,用数值量化聚类的好坏,帮你…

BeautifulSoup-cnblog

BeautifulSoup ​ 蔬菜网 ​ (完整代码再文后) ​ 首先再基础的部分,和re正则不同的是,我们要先对拿到的网页源代码进行解析。 ​ 接着我们观察一下源代码,这里我们要爬的是网页中蔬菜的价格。 我们可以发现所…

方框标定代码

import numpy as np import cv2 import glob# 1. 准备标定板参数 chessboard_size (7, 10) # 内角点数量 square_size 13.0 # 毫米# 2. 生成世界坐标系中的3D点 objp np.zeros((chessboard_size[0]*chessboard_size[1], 3), np.float32) objp[:, :2] np.mgrid[0:chessboa…

揭秘TCP/IP协议栈:网络通信的核心架构

TCP/IP协议栈深度解析技术文章大纲引言简要介绍TCP/IP协议栈的历史背景、重要性及其在现代网络通信中的核心作用。TCP/IP协议栈的分层结构详细说明TCP/IP的四层模型(应用层、传输层、网络层、链路层)及其与OSI七层模型的对比。链路层(数据链路…

揭秘TCP/IP协议栈:网络通信的核心架构

TCP/IP协议栈深度解析技术文章大纲引言简要介绍TCP/IP协议栈的历史背景、重要性及其在现代网络通信中的核心作用。TCP/IP协议栈的分层结构详细说明TCP/IP的四层模型(应用层、传输层、网络层、链路层)及其与OSI七层模型的对比。链路层(数据链路…

捕捉瞬息万变的电信号世界:Waverunner力科610Zi示波器深度解读

156/2558/3328产品概述:在电子工程师的实验室里,每一块电路板的心跳与脉动——那些高速流动、转瞬即逝的电信号——决定了产品的性能与成败。如何精准“看见”并理解这些复杂的信号,尤其是捕捉那些隐蔽极深、稍纵即逝的异常?力科&…

vscode的几个版本说明

Stable稳定版(蓝色版)、Insider内测版(绿色版)、Exploration探索版(橙色版)橙色版目前只提供给VSCode开发团队使用,而绿色版的核心价值在于“抢先体验前沿功能”。绿色版1.默认支持 Copilot X 全功能;2.终端增强:多面板拆分与实时预览&#x…

存储技术全景:从基础原理到未来趋势

系统存储机制深度剖析技术文章大纲存储基础概念与分类存储介质类型(机械硬盘、固态硬盘、非易失性内存等)存储层次结构(寄存器、缓存、主存、外存)存储访问方式(随机访问、顺序访问)物理存储机制磁盘结构&a…

存储技术全景:从基础原理到未来趋势

系统存储机制深度剖析技术文章大纲存储基础概念与分类存储介质类型(机械硬盘、固态硬盘、非易失性内存等)存储层次结构(寄存器、缓存、主存、外存)存储访问方式(随机访问、顺序访问)物理存储机制磁盘结构&a…

C++跨平台开发:挑战与解决方案

C跨平台开发的核心挑战平台差异性处理 硬件架构差异(x86/ARM等)导致的内存对齐、字节序问题 操作系统API差异(Windows/Linux/macOS系统调用、文件路径等) 编译器兼容性问题(GCC/Clang/MSVC对C标准的支持程度不同&#…

C++跨平台开发:挑战与解决方案

C跨平台开发的核心挑战平台差异性处理 硬件架构差异(x86/ARM等)导致的内存对齐、字节序问题 操作系统API差异(Windows/Linux/macOS系统调用、文件路径等) 编译器兼容性问题(GCC/Clang/MSVC对C标准的支持程度不同&#…

Java性能优化实战:从原理到技巧

Java性能优化实战技术文章大纲性能优化的基础概念性能优化的定义与重要性性能指标:吞吐量、延迟、资源利用率常见性能瓶颈:CPU、内存、I/O、网络JVM层面的优化垃圾回收器选择与调优(G1、ZGC、Shenandoah)堆内存与元空间参数配置&a…

Photoshop 图形与图像处理技术——第9章:实践训练3——图像修饰和色彩色调的调整

目录 零、常用快捷键操作 一、使用“污点修复工具” (1)素材与效果图 (2)操作步骤 二、使用“修复画笔”工具 (1)素材与效果图 (2)操作步骤 三、使用“修补”工具 &#xf…

闲置京东e卡回收新选择,让沉睡的购物卡焕发新生机 - 京顺回收

李女士在整理抽屉时意外发现几张未拆封的京东e卡,面值加起来竟有两千元。她望着这些卡券苦笑:"现在购物都习惯用手机支付,这些卡放着也是浪费。"这个场景或许正发生在无数家庭中——随着移动支付普及,曾…

5G、雷达、航天研发的“心脏”利器:是德N5182B 信号发生器全面解析

156/2558/3328产品概述:在无线通信、雷达系统和航空航天等领域,研发与测试人员每天都在与无形的射频信号打交道。如何生成一个“纯净”且“听话”的信号,来验证设备在真实世界复杂电磁环境中的性能?这离不开一台核心仪器——射频信…

不同版本的 chrome 开发者工具 CSS 属性变为斜体无法修改,如何解决?

如上操作,取消"CSS源代码映射",就可以把CSS斜体属性变为正常可修改属性

Photoshop 图形与图像处理技术——第9章:实践训练4——图层和蒙版

目录 一、绘制小狗 (1)素材 (2)效果图 (3)步骤教程 二、实践1——将老人图层移至海滩图层 (1)素材 (2)效果图 (3)步骤教程 三…

提示系统没人用?架构师教你3步打造爆款互动体验

提示系统没人用?架构师教你3步打造爆款互动体验 关键词 提示系统设计 | 用户互动体验 | 场景化引导 | 个性化感知 | 反馈闭环 | 行为经济学 | 数据驱动优化 摘要 你是否遇到过这样的场景:精心设计的AI提示框弹出来,用户却直接关掉&#x…

Nvidia H100 算力服务器 Cuda、FabricManager、Container 安装和升级 - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …