SPI通信

article/2025/7/13 16:32:05

第一章:SPI通信协议概述

SPI(串行外设接口)协议是一种由摩托罗拉公司开发的通信协议,它支持芯片与外部设备之间进行半双工或全双工、同步、串行的数据交换。该协议允许设备配置为主模式,为主设备提供通信时钟(SCK),并能够以多主设备配置方式运行。SPI协议适用于多种应用场景,包括使用一条双向数据线的双线单工同步传输,以及采用CRC校验的可靠通信。它广泛应用于ADC、LCD等设备与MCU之间的高速通信场合。

SPI通常采用全双工通信方式,在同一时刻,两个设备之间可以同时进行数据的发送和接收,这种方式无需进行方向的切换,但需要两根数据线。

第二章:SPI物理层结构

SPI 通讯设备之间的常用连接方式:

SPI通信设备之间的连接方式通常包括SCK、MOSI和MISO三条信号线,以及CS(从设备选择)片选信号线。所有主设备或从设备的信号线SCK、MOSI及MISO同时并联到相同的SPI总线上,共同使用这三条总线;CS片选信号线用于从设备选择,每个从设备都有独立的这条NSS信号线,本信号线独占主机的一个引脚,即有多少个从设备,就有多少条片选信号线。当主机要选择从设备时,把该从设备的NSS信号线设置为低电平,该从设备即被选中,主机开始与被选中的从设备进行SPI通信,则其它未被选中(NSS引脚为高电平)的从设备会忽略总线上的数据传输。SPI通信以NSS线置低电平为开始信号,以NSS线被拉高作为结束信号。

- **SCK(串行时钟)**:时钟信号线,用于通讯数据同步。只能由通讯主机产生,决定了通讯的速率,不同的设备支持的最高时钟频率不一样,STM32的SPI时钟频率最大为fpclk/2,两个设备之间通讯时,通讯速率受限于低速设备。

- **MOSI(主设备输出,从设备输入)**:主设备输出/从设备输入引脚。主机向从机发送数据,从机接收主机发送的数据。

- **MISO(主设备输入,从设备输出)**:主设备输入/从设备输出引脚。从机向主机发送数据,主机接收从机发送的数据。

第三章:SPI协议层细节

1. 通信的起始和停止信号

   NSS是每个从机各自独占的信号线。

   起始信号:NSS信号线由高变低。当从机在自己的NSS线检测到起始信号后,片选成功,开始准备与主机通讯。

   停止信号:NSS信号由低变高,是SPI通信的停止信号,表示本次通讯结束,从机的选中状态被取消。

2. 数据有效性

   SPI使用MOSI及MISO信号线来传输数据,使用SCK信号线进行数据同步。MOSI及MISO数据线在SCK的每个时钟周期传输一位数据,且数据输入输出是同时进行的,也就是说我们发送一个数据也会同时接收一个数据。数据传输时,MSB先行或LSB先行并没有作硬性规定,可以设置,但通信双向的模式要一致,一般采用MSB先行(高位先行)。

3. 时钟信号的相位和极性(重点)

   - SPI_CR寄存器的CPOL和CPHA位,能够组合成四种可能的时序关系。

   - CPOL(时钟极性)位控制在没有数据传输时时时钟的空闲状态电平,此位对主模式和从模式下的设备都有效。

   - 如果CPOL被清’0’,SCK引脚在空闲状态保持低电平;如果CPOL被置’1’,SCK引脚在空闲状态保持高电平。

   - CPHA(时钟相位)如果CPHA位被置’1’,SCK时钟的第二个边沿进行数据位的采样,数据在第二个时钟边沿被锁存(保持数据稳定)。

   - 如果CPHA位被清’0’,SCK时钟的第一个边沿进行数据位采样,数据在第一个时钟边沿被锁存(保持数据稳定)。

第四章:SPI特性及架构(重点

1. **通信引脚**

   - 不同型号的芯片基本都有3个SPI外设,其中SPI2,SPI3支持I2S通信因为I2S与SPI协议类似,所以他们共用一套逻辑就是上面的SPI框图。

2. **时钟控制逻辑**

   - SCK线的时钟信号,由波特率发生器根据“控制寄存器CR1”中的BR[0:2]位控制,该位是对fpclk时钟的分频因子,对fpclk的分频结果就是SCK引脚的输出时钟频率。

3. **数据控制逻辑(非常重要)**

   - 在接收时,接收到的数据被存放在一个内部的接收缓冲器中;在发送时,在被发送之前,数据将首先被存放在一个内部的发送缓冲器中。对SPI_DR寄存器的读操作,将返回接收缓冲器的内容;写入SPI_DR寄存器的数据将被写入发送缓冲器中。

4. **全双工发送和接收过程模式(超级重要)**

   - 准备工作:必须要理解下面这张图:总结一句话:主机发送一个字节数据的同时接收了一个字节数据。

5. **SPI初始化结构体**

   - SPI_Direction前面有详细介绍就不多说了。

   - SPI_Mode本成员设置SPI工作在主机模式(SPI_Mode_Master)或从机模式(SPI_Mode_Slave),由主机产生时钟信号,若被配置为从机模式STM32的SPI外设将接受外来的SCK信号。

   - SPI_DataSize本成员可以选择SPI通讯的数据帧大小是为8位(SPI_DataSize_8b)还是16位(SPI_DataSize_16b)。

   - SPI_CPOL和SPI_CPHA。

   - SPI_NSS本成员配置NSS引脚的使用模式,可以选择为硬件模(SPI_NSS_Hard)与软件模式(SPI_NSS_Soft),在硬件模式中的SPI片选信号由SPI硬件自动产生,而软件模式则需要我们亲自把相应的GPIO端口拉高或置低产生非片选和片选信号。实际中软件模式应用比较多。

   - SPI_BaudRatePrescaler。

   - SPI_FirstBit。

   - SPI_CRCPolynomial这是SPI的CRC校验中的多项式,若我们使用CRC校验时,就使用这个成员的参数(多项式),来计算CRC的值。配置完这些结构体成员后,我们要调用SPI_Init函数把这些参数写入到寄存器中,实现SPI的初始化,然后调用SPI_Cmd来使能SPI外设。

第五章:NorFLASH芯片—NM25Q64EV

FLASH简介

FLASH存储器,又称闪存,它与EEPROM都是掉电后数据不丢失的存储器,但FLASH存储器容量普遍大于EEPROM,现在基本取代了它的地位。我们生活中常用的U盘、SD卡、SSD固态硬盘以及我们STM32芯片内部用于存储程序的设备,都是FLASH类型的存储器。在存储控制上,最主要的区别是FLASH芯片只能一大片一大片地擦写,而在“I2C章节”中我们了解到EEPROM可以单个字节擦写。

NM25Q64EV芯片与W25Q64BV基本一致就是设备地址不一样而已。

硬件SPI协议逻辑

#### NorFLASH的存储特性(重点)

1. 在写入数据之前必须先擦出。

2. 擦除时把数据的位全部重置为1。

3. 写入数据时只能把为1的数据为改成0(这也是为什么写入数据前要先进行擦除的原因)。

4. 擦除的最小单位为扇区(4KB个字节)全部擦除为1。

#### FLASH指令汇总(重点)

1. 读取设备ID号:通过特定指令读取。

2. 读取状态寄存器1:判断FLASH芯片是否忙碌(在擦除数据或正在写入数据)。

3. 擦除扇区:24位地址,擦除4KB数据。

4. 写使能:向flash写入数据时或者flash擦除自己的数据时一定要先写使能才能进行。

5. 页写入数据:页写入特点:一次性写入的数据不能超过256个字节,超过256个字节后面的字节将不会写入。

6. 读取数据:该地址在每个地址之后自动递增到下一个更高的地址数据的字节被移出。因此,整个存储器可以使用单个读取数据字节进行读取(读取)命令。到达最高地址时,地址计数器将滚动到0。


http://www.hkcw.cn/article/aVamidRFuo.shtml

相关文章

ArkUI--抽奖

摘要:本文展示了一个基于ArkUI的生肖抽奖应用实现。通过State管理当前选中索引(n1)、各卡片中奖次数(nums)和生肖图片资源(pics)。点击抽奖按钮时,启动15次循环动画后随机停在0-5索引位置,并在对应卡片Badge上累计中奖次数。界面包含32网格展…

平台对比:澳洲电商增速放缓期,Kogan如何实现38%客户增长?

过去三年,全球电商经历了一场从“井喷”到“冷静”的转变。澳洲市场也不例外。根据Statista数据显示,2023年澳大利亚整体电商零售增长仅为3.8%,远低于前两年的两位数增长。在这样的背景下,本土电商平台Kogan却逆势上扬&#xff0c…

差分S参数-信号与电源完整性分析

差分S参数: 由于差分互连中使用差分信号传递信息,接收器最关心的是差分信号的质量,如果互连通道的S参数能直接反映出对差分信号的影响,对分析问题将方便得多。差分互连通道可以看成是一个四端口网络,激励源为单端信号,…

计算机一次取数过程分析

计算机一次取数过程分析 1 取址过程 CPU由运算器和控制器组成,其中控制器中的程序计数器(PC)保存的是下一条指令的虚拟地址,经过内存管理单元(MMU),将虚拟地址转换为物理地址,之后交给主存地址寄存器(MAR),从主存中取…

鸿蒙OS的5.0.1.120版本体验怎么样?

点击上方关注 “终端研发部” 设为“星标”,和你一起掌握更多数据库知识 越来越是好用了,之前是凑合能用,现在是大多能用。 我朋友的mate30PRO和PuraX一起用,新系统确实满足我90%以上的需求 一个系统适配一款机型,是要…

CPT302 Multi-Agent Systems 题型

Agent games Wumpus World 乌普斯世界 设定 环境:一个二维网格状的洞穴(cave),由多个房间(rooms)组成。 起点:智能体(agent)总是从左下角的 Room[1,1] 开始。 连接方式…

太阳诱电多层陶瓷电容器的优势和特点

基于电容器市场需求或将扩大的方向性战略所开展的产品研发 除多层陶瓷电容器外,电容器还包括电解电容器和薄膜电容器等类型。随着节能化、物联网化的进一步加速发展,可以预见高性能电容器的需求量将在中长期内有所增长。 多层陶瓷电容器对于实现电子设…

Chrome v131.0.6778.86 绿色便携版 下载

Google Chrome浏览器增强版,采用shuax便携式Dll劫持补丁加入原版打包而成, Chrome增强软件模块,强制实现flash插件支持,解除Adobe Flash Player地区不相容限制和移除警告提示,增强标签页功能。 百度网盘:ht…

PYTHON调用讯飞唤醒实现麦克风说话机器人离线唤醒

引言 语音唤醒技术是现代智能语音交互系统中的重要组成部分,它允许设备在待机状态下通过特定的唤醒词进入交互状态。本文将介绍如何使用Python结合讯飞语音SDK实现一个简单的语音唤醒系统。 技术背景 语音唤醒技术主要依赖于以下几个关键技术点: 声学…

做销售讲究接地气

你有没有遇到过这种情况?两个人聊了半天,你越说对方越皱眉,最后礼貌地说"我再考虑考虑"。其实不是产品不够好,而是没戳中对方心里那根弦。做销售最讲究的就是"接地气"。 和人打交道就像炒菜,火候…

ImBatch 7.6.3 中文版 - 高效图片批量处理工具

ImBatch是一款专业高效的图片批量处理工具。它提供强大的图像编辑功能,包括裁剪、尺寸调整、旋转等操作,并内置数十种专业工具,能满足各类复杂的图像处理需求。软件界面已全面中文化,操作更加便捷直观。 ImBatch下链接&#xff1…

Python+requests+pytest接口自动化测试框架的搭建(全)

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 框架的设计思路 首先要明确进行接口自动化需要的步骤,如下图所示: 然后逐步拆解需要完成的工作: 1)了解分析需求&…

C#定时器深度对比:System.Timers.Timer vs System.Threading.Timer性能实测与选型指南

本文通过真实基准测试揭秘两种常用定时器的性能差异,助你做出最佳选择 一、C#定时器全景概览 在C#生态中,不同定时器适用于不同场景。以下是主流定时器的核心特性对比: 定时器类型命名空间适用场景触发线程精度内存开销依赖框架System.Wind…

简单配置RHEL9.X

切换默认运行级别 将系统默认启动模式从多用户的图形界面调整为多用户的文本界面,适用于优化系统资源占用或进行远程服务器管理的场景。 注意:安装选择“带GUI的服务器”部分常用命令默认安装;如果选择“最小安装”时,部分常用命…

【运维实战】Linux 中su和sudo之间的区别以及如何配置sudo!

Linux 系统相比其他操作系统具有更高的安全性,其安全机制的核心之一在于用户管理策略和权限控制--普通用户默认无权执行任何系统级操作。 若普通用户需要进行系统级变更,必须通过su或sudo命令提权。 1.su与sudo的本质区别 su 要求直接共享 root 密码&…

基于Android的记录生活APP_springboot+vue

开发语言:Java框架:springboot AndroidJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7数据库工具:Navicat12开发软件:eclipse/myeclipse/ideaMaven包:Maven3.6 系统展示 APP登录 A…

2025年渗透测试面试题总结-匿名[校招]攻防研究员(应用安全)(题目+回答)

安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 匿名[校招]攻防研究员(应用安全) 基础部分 1. HTTP状态码 2. HTTP请求方法及作用 3. 网络分层及协议 OW…

区域未停留检测算法AI智能分析网关V4打造铁道/工厂/机场等场景应用方案

一、背景 在工业生产、公共场所管理等场景中,特定区域的人员/物体停留时间管控关乎作业效率与安全。传统监控系统仅能录像存证,无法主动分析停留行为。AI智能分析网关V4的区域未停留检测功能,依托智能算法实现实时监测与异常告警&#xff0c…

第Y5周:yolo.py文件解读

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 本次任务:将YOLOv5s网络模型中的C3模块按照下图方式修改形成C2模块,并将C2模块插入第2层与第3层之间,且跑通YOLOv5s。 任务…

无人机桥梁3D建模、巡检、检测的航线规划

无人机桥梁3D建模、巡检、检测的航线规划 无人机在3D建模、巡检和检测任务中的航线规划存在显著差异,主要体现在飞行高度、航线模式、精度要求和传感器配置等方面。以下是三者的详细对比分析: 1. 核心目标差异 任务类型主要目标典型应用场景3D建模 生成…