SPI通信(使用SPI读写W25Q64)

SPI通信协议

SPI(Serial Peripheral Interface)是由Motorola公司开发的一种通用数据总线
四根通信线:
        SCLK:串行时钟线,用来提供时钟信号的。
        MOSI:主机输出,从机输入
        MISO:从机输出,主机输入
        SS:从机选择
同步,全双工
支持总线挂载多设备(一主多从
使用SPI通信的设备,如下图所示

硬件电路

1、  所有SPI设备的SCK、MOSI、MISO分别连在一起
•2、 主机另外引出多条SS控制线,分别接到各从机的SS引脚
        主机的SS线都是输出,从机的SS线都是输入。SS线是低电平有效的,主机想跟谁通信,就把对应的SS输出线置为低电平就可以了。(比如,主机初始化之后,所以的SS都输出高电平,这样就是不跟从机通信。当主机需要和从机1进行通信,主机就把SS1输出低电平就可以了。从机1就知道主机再找我,然后主机在数据引脚进行的传输,就只有从机会响应。当主机和从机1通信完成后,就会把SS1置为高电平,这样从机1就知道,主机结束了和我通信。)
        同一时间,主机只能置1个SS为低电平,只能选中一个从机。如果同时选择多个从机,就会导致数据冲突。
3、 输出引脚配置为推挽输出输入引脚配置为浮空或上拉输入
        推挽输出:高低电平均有很强的驱动能力,这将使得SPI引脚信号的下降沿,非常迅速;上升沿,也非常迅速。

移位示意图

移位寄存器:有一个时钟输入端。因为SPI一般都是高位先行的,所以,每来一个时钟,移位寄存器都会向左进行移位。

移位寄存器时钟源是由主机提供的,这里叫波特率发生器。它产生的时钟驱动主机的移位寄存器进行移位。同时,这个时钟也通过SCK引脚进行输出,接到从机的移位寄存器。

移位寄存器接法:主机移位寄存器左边移出去的数据,通过MOSI引脚,输入到从机移位寄存器的有右边。从机左边移出去的数据,通过MISO引脚,输入到主机移位寄存器的右边。

SPI时序基本单元

起始条件

起始条件:SS从高电平切换到低电平

SS是低电平有效,SS从高变到低,是不是就代表选中了某个从机,这就是通信的开始。

终止条件

终止条件:SS从低电平切换到高电平

交换一个字节

1、四种模式

2、模式1

CPOL(时钟极性)=0:空闲状态时,SCK为低电平
CPHA(时钟相位)=0:SCK第一个边沿移入数据第二个边沿移出数据

SCK在第一个边沿就要移入数据,但数据总得先移出,才能移入。所以在模式1的配置下,SCK第一个边沿之前,就要提前开始移出数据了,或者把它称作在第0个边沿移出,在第一个边沿移入。首先,SS下降沿开始通信,现在SCK还没有变化,但是SCK一旦开始变化,就要开始移入数据了。所以此时趁SCK还没变化,SS下降沿时,就要立刻触发移位输出。所以这里的MOSI和MISO的输出是对齐到SS的下降沿,SS下降沿触发了输出,SCK上升沿,就可以采样输入数据了,这样B7就传输完毕。依次循环,SCK下降沿,主机和从机移出数据;SCK上升沿,移入数据。最终在第8个上升沿时,B0位移入完成,整个字节交换完成。

3、模式2

CPOL=0:空闲状态时,SCK为低电平
CPHA=1:SCK第一个边沿移出数据第二个边沿移入数据

SCK第一个边沿,就是上升沿主机和从机同时移出数据,主机通过MOSI移出最高位,此时MOSI的电平就表示了主机要发送数据的B7。从机通过MISO移出最高位,此时MISO表示从机要发送数据的B7。然后时钟运行,产生下降沿,此时主机和从机同时移入数据,也就是进行数据采样。这里主机移出的B7,进入从机移位寄存器的最低位。从机移出的B7,进入主机移位寄存器的最低位。这样,一个时钟脉冲产生完毕,一个数据位传输完毕。依次循环8次,完成一个字节的传输。如果主机只想交换一个字节,那这时就可以置SS为高电平,结束通信。如果主机还想继续交换字节,主机就不必把SS置回高电平。

4、模式3

CPOL=1:空闲状态时,SCK为高电平
CPHA=0:SCK第一个边沿移入数据,第二个边沿移出数据

5、模式4

CPOL=1:空闲状态时,SCK为高电平
CPHA=1:SCK第一个边沿移出数据,第二个边沿移入数据

W25Q64简介

FLASH:是一种掉电不丢失的存储 

        芯片内部flash:64K+512K的512K -- 存放个代码的地方

        芯片外部flash:独立于芯片外部

W25Q64:是flash的一种 -- 有厂家信息

W25Qxx系列是一种低成本、小型化、使用简单的非易失性存储器,
常应用于数据存储、字库存储、固件程序存储等场景
存储介质:Nor Flash(闪存)
时钟频率:80MHz / 160MHz (Dual SPI) / 320MHz (Quad SPI)
存储容量(24位地址):
        W25Q40: 4Mbit / 512KByte                                          
        W25Q80: 8Mbit / 1MByte              
        W25Q16: 16Mbit / 2MByte
        W25Q32: 32Mbit / 4MByte
        W25Q64: 64Mbit / 8MByte
        W25Q128: 128Mbit / 16MByte
        W25Q256: 256Mbit / 32MByte                                
        

硬件电路

W25Q64容量大小

1Byte = 8 BIT

W25Q64  容量大小:  64M BIT    ==  8M字节

W25Q64框图

1、快

首先,这一整个矩形空间里,是所有的存储器。存储器以字节为单位,每个字节都有唯一的地址。W25Q64的地址宽度是24位,3个字节。左下角,第一个字节它的地址是000000h,h代表16进制。之后的空间,地址一次自增,直到最后一个字节,地址是7FFFFFh。

 64KB为一个基本单元,把它划分成若干的快Block,从前往后,依次是快0、快1、等等等。一直分到最后一块,总共8MB,以64KB为一块进行划分,最后分得的块数,就是8MB/64KB=128,所以这里可以分得128快。

2、扇区

在一块里,我们在以4KB为一个单元,进行切分。64KB/4KB=16份。所以在每一块里,都可以分为扇区0,一直到扇区15。每个扇区内的地址范围是XX X0 00------XX XF FF。就是对每一块,在细分为16个扇区的分配方式。

3、页

页是在扇区里,再进行划分。页的大小是256个字节,一个扇区是4KB,以256个字节进行划分,4*1024/256=16页。所以,一个扇区里,可以分为16页。

在这里,每一行就是一页。在一页中,地址变化范围是XX XX 00-----XX XX FF。一页内的地址变化,仅限于地址的最低一个字节。

4、SPI控制逻辑

SPI控制逻辑:芯片内部进行地址锁存、数据读写等操作,都可以由控制逻辑来自动完成。主控芯片通过SPI协议,把指令和数据发给控制逻辑,控制逻辑就会自动去操作内部电路。

状态寄存器:比如芯片是否处于忙碌状态、是否写使能、是否写保护,都可以在这个状态寄存器里体现。

写控制逻辑:和外部的WP引脚相连。显然,这个是配合WP引脚实现硬件写保护的。

高电压生成器:这个是配合Flash进行编程的

页和字节地址锁存/计数器:是用来指定地址的。通过SPI,总共发过来3个字节的地址,因为1页是256字节,所以1页内的字节地址,就取决于最低位的1个字节,而高位的2个字节,就对应的是页地址。

FLASH操作注意事项

写入操作时:
写入操作前, 必须先进行写使能
每个数据位只能由1改写为0,不能由0改写为1
写入数据前必须先擦除 擦除后,所有数据位变为1
擦除必须按最小擦除单元进行
连续写入多字节时,最多写入一页的数据 超过页尾位置的数据,会回到页首覆盖写入
写入操作结束后,芯片进入忙状态,不响应新的读写操作
读取操作时:
直接调用读取时序,无需使能,无需额外操作,没有页的限制,读取操作结束后不会进入忙状态,但不能在忙状态时读取

W25Q64状态寄存器

忙是只读的状态寄存器(S0)被设置为1状态时,表示设备正在执行程序(可能是在擦除芯片)或写状态寄存器指令。这个时候设备将忽略传来的指令,除了读状态寄存器和擦除暂停指令,写指令或写状态指令无效, 当S0为0状态时指示设备已经执行完毕,可以进行下一步操作。

W25Q64指令集

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

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

相关文章

Java中的数据类型与变量

引言: 哈喽,各位读者老爷们大家好呀,long time no see!这里是小堇Java小课堂,在本课堂中我们将继续分享Java中的数据类型与变量,标识符,关键字等知识,那我们启程咯! 数据类型与变量 1.字面变量…

红蓝对抗 网络安全 网络安全红蓝对抗演练

什么是红蓝对抗 在军事领域,演习是专指军队进行大规模的实兵演习,演习中通常分为红军、蓝军,演习多以红军守、蓝军进攻为主。类似于军事领域的红蓝军对抗,网络安全中,红蓝军对抗则是一方扮演黑客(蓝军&…

pytest教程-46-钩子函数-pytest_sessionstart

领取资料,咨询答疑,请➕wei: June__Go 上一小节我们学习了pytest_report_testitemFinished钩子函数的使用方法,本小节我们讲解一下pytest_sessionstart钩子函数的使用方法。 pytest_sessionstart 是 Pytest 提供的一个钩子函数&#xff0c…

Anaconda下载安装

看到这篇文章的同学们,说明你们是要下载Anaconda,这篇文章讲的就是下载安装教程。 Anaconda下载网址: Download Now | Anaconda 根据我们需要的系统版本下载,我的电脑是window,所以选择第一个,如下图&am…

javaEE进阶——SpringBoot与SpringMVC第一讲

文章目录 什么是springMVCSpringMVC什么是模型、视图、控制器MVC和SpringMVC的关系SpringMVC的使用第一个SpringMVC程序RestController什么是注解 那么RestController到底是干嘛的呢?RequestMapping 如何接收来自请求中的querystryingRequestParamRequestMapping(&q…

运用MongoDB Atlas释放开发者潜能同时把控成本

在当下的商业环境中,不可预测性已经成为常态,工程团队负责人必须在把控不可预测性和优化IT成本的双重挑战下谋求平衡。 咨询公司德勤2024 MarginPLUS调查收集了300多位企业负责人的见解,报告中重点介绍了面对动荡的全球经济环境,…

电子邮箱是什么?付费电子邮箱和免费电子邮箱有什么区别?

注册电子邮箱前,有付费电子邮箱和免费电子邮箱两类选择。付费的电子邮箱和免费的电子邮箱有什么区别呢?区别主要在于存储空间、功能丰富度和售后服务等方面,本文将为您详细介绍。 一、电子邮箱是什么? 电子邮箱就是线上的邮局&a…

labelimg删除用不到的标签(yolo格式)以及 下载使用

问题:当我们标注完成新的类别后后直接删除classes.txt中不需要的类别之后再次打开labelimg会闪退,如何删除不需要的标签并且能够正确运行呢?(yolo格式) 原因:当我们打开labelimg进行标注的时候&#xff0c…

LVM - Linux磁盘逻辑卷管理器概念讲解、实践及所遇到的问题

1、lvm概念 逻辑卷管理器(LogicalVolumeManager)本质上是一个虚拟设备驱动,是在内核中块设备和物理设备之间添加的一个新的抽象层次,它可以将几块磁盘(物理卷,PhysicalVolume)组合起来形成一个存储池或者卷组(VolumeGroup)。LVM可以每次从卷组中划分出不同大小的逻辑卷(Logi…

【C语言】必备Linux命令和C语言基础

🌟博主主页:我是一只海绵派大星 📚专栏分类:嵌入式笔记 ❤️感谢大家点赞👍收藏⭐评论✍️ 目录 一、文件和目录相关命令 Linux 的文件系统结构 文件系统层次结构标准FHS pwd命令 ls 列目录内容 文件的权限 c…

STC8增强型单片机开发【热敏电阻】

目录 一、引言 二、热敏电阻概述 三、STC8增强型单片机简介 四、基于STC8单片机的热敏电阻测温系统 五、热敏电阻测温系统的优化与扩展 提高测量精度 扩展系统功能 六、 温度计算步骤 通过ADC采样计算出热敏电阻位置的电压 通过欧姆定律计算热敏电阻的阻值 通过阻值…

栈和队列经典面试题详解

目录 题目一:20. 有效的括号 - 力扣(LeetCode) 题目二:225. 用队列实现栈 - 力扣(LeetCode) 题目三:232. 用栈实现队列 - 力扣(LeetCode) 题目四:622. 设…

软件压力测试怎么做

随着信息技术的迅猛发展,软件在各行各业的应用越来越广泛,其稳定性、可靠性和性能表现也受到了越来越多的关注。在这样的背景下,软件压力测试显得尤为重要。本文将详细介绍软件压力测试的概念、目的、方法以及实施步骤,帮助读者更…

浅析扩散模型与图像生成【应用篇】(二十五)——Plug-and-Play

25. Plug-and-Play: Diffusion Features for Text-Driven Image-to-Image Translation 该文提出一种文本驱动的图像转换方法,输入一张图像和一个目标文本描述,按照文本描述对输入图像进行转换,得到目标图像。图像转换任务其实本质上属于图像编…

对于接口的安全性测试,这几点你掌握了吗?

接口防刷 1.为什么会有人要刷接口? 牟利:黄牛在 12306 网上抢票再倒卖。 恶意攻击竞争对手:如短信接口被请求一次,会触发几分钱的运营商费用,当量级大了也很可观。 压测:用apache bench 做压力测试。 …

管仲故乡是颍川,何分颍上或颍下

第一仲父管仲,故乡在哪里?依然像许多名人故里一样存在争议,但是这个争议却很不一般,引出了一个大话题。 管子是安徽颍上县人,《史记》记载: “管仲,颍上人也。”颍上县有管鲍祠,是安徽省重点文物…

亚阈值电流镜

相同电流情况下,由于亚阈值区的gm较大,造成由于阈值电压Vth的失配造成的失配会更大,所以要规避过大的gm,选取较大的过驱动电压。 相同电流情况下,W/L的尺寸选的较小一点,或者说L一定时,W不要取得过大。 Q:Vgs一定的情况下,特别小,几乎小于Vth,一定是亚阈值电流镜吗。…

单位内部防泄密策略与技术实践

在信息时代,企业内部数据安全至关重要,尤其是涉及核心竞争力的重要文件,员工的不当操作或恶意泄露都可能给企业带来重大损失。本文将从制度建设、技术防护、以及日常管理三个方面入手,探讨如何构建一套行之有效的内部防泄密体系&a…

yolov8使用与训练步骤

第一:安装miniconda 网址:Index of /anaconda/miniconda/ 登录网址后 在网页按ctrF 输入:搜py38 Miniconda3-py38_22.11.1-1-Windows-x86_64.exe 52.5 MiB 2022-12-23 07:57 下载进行安装 安装过程中记得加环境变量这个项。 第二…

独家|暴雨推出基于国产X86芯片的四路服务器

伴随着智慧计算时代的到来和企业数字化转型的深入,人工智能、大数据、虚拟化等创新技术在应用普及的过程中,也在不断地细分和深化,使得企业的业务系统日趋复杂,数据量、数据类型更加庞大,对计算平台的性能要求“水涨船…