【STM32】W25Q64 && SPI(串行外设接口)

一、SPI通信

0.IIC与SPI的优缺点

https://blog.csdn.net/weixin_44575952/article/details/124182011

【STM32】W25Q64 && SPI(串行外设接口)_第1张图片

【STM32】W25Q64 && SPI(串行外设接口)_第2张图片

1.SPI介绍

同步(有时钟线),高速,全双工(数据发送和数据接收各占一条线)

1)SCK:时钟线-->SCLK,CLK,CK--->等价于IIC的SCK

2)MOSI(主机输出从机接收),MISO(主机接收从机输出):DO(Data Output),DI(Data Input)--->等价于IIC的SDA

3)SS(片选):NSS(Not Slave Select)-->低电平有效,CS(Chip Select)-->专门进行主机和该指定从机的通信线路(可能不只一条)

4)SPI只接受:一主多从

5)SPI没有应答数据

【STM32】W25Q64 && SPI(串行外设接口)_第3张图片

DO,DI的区别

先确定芯片的身份(主机/从机)

【STM32】W25Q64 && SPI(串行外设接口)_第4张图片

2.硬件电路

1)SCK是主机控制,SCK是主机输出,SCK是从机接收

2)MOSI(主机输出从机接收)

3)MISO(主机接收从机输出)

4)SS:从机选择线(低电平有效)

【STM32】W25Q64 && SPI(串行外设接口)_第5张图片

3.移位示意图

SPI的数据收发:基于字节交换

如果单纯想要接收或者发送—---则将接收或者发送的数据自动屏蔽掉即可

只发送,只接收,既发送既接收

【STM32】W25Q64 && SPI(串行外设接口)_第6张图片

4.SPI时序基本单元

1.起始条件

SS低电平有效,通信时间段内一直保持低电平

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

【STM32】W25Q64 && SPI(串行外设接口)_第7张图片

2.终止条件

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

【STM32】W25Q64 && SPI(串行外设接口)_第8张图片

3.交换一个字节(模式1)

模式1:第一个边沿放数据,也可以描述成高电平放数据,第二个边沿采集数据,也可以描述成低电平采集数据(采集数据时数据不能更改)

下降沿采样(将数据读入寄存器中)

【STM32】W25Q64 && SPI(串行外设接口)_第9张图片

4.交换一个字节(模式3)

与模式1的区别:SCK极性取反(CPOL=1)

【STM32】W25Q64 && SPI(串行外设接口)_第10张图片

5.交换一个字节(模式0)

相比于模式1,数据输出快了半个时钟

上升沿采样(将数据读入寄存器中)

【STM32】W25Q64 && SPI(串行外设接口)_第11张图片

6.交换一个字节(模式2)

与模式0的区别:SCK极性取反(CPOL=1)

【STM32】W25Q64 && SPI(串行外设接口)_第12张图片

7.注意点:

1)CPOL:用于设置极性(1表示高电平有效,0表示低电平有效)

2)CPHA:不是用于决定上升沿读取还是下降沿读取,而是决定第几个周期进行采样。

3)一般如果我们想要接收数据&读取数据,则我们可以随便写入&读出一个值即可,其他不用理会。(我们一般发送0xff或者0x00)

5.SPI时序

1.发送指令

使用模式0(在时序开始前存放数据,在上升沿读取数据)

发送0x06(芯片公司自己定义)--->W25Q64是写使能

接收到0xff不需要看(因为我们目的是主机发送给从机,所以从机传输的数据是什么无所谓)

【STM32】W25Q64 && SPI(串行外设接口)_第13张图片

2.指定地址写

【STM32】W25Q64 && SPI(串行外设接口)_第14张图片

1)向SS指定的设备,发送写指令(0x02),

2)随后在指定地址(Address[23:0])下,写入指定数据(Data

由此图可知要在地址为:0x123456下写入0x55这个数据

【STM32】W25Q64 && SPI(串行外设接口)_第15张图片

【STM32】W25Q64 && SPI(串行外设接口)_第16张图片

【STM32】W25Q64 && SPI(串行外设接口)_第17张图片

【STM32】W25Q64 && SPI(串行外设接口)_第18张图片

【STM32】W25Q64 && SPI(串行外设接口)_第19张图片

3.指定地址读

1)向SS指定的设备,发送读指令(0x03),

2)随后在指定地址(Address[23:0])下,读取从机数据(Data

【STM32】W25Q64 && SPI(串行外设接口)_第20张图片

二、单片机中用到的存储器

1.物理层存储器

1)磁存储原理:磁带,软盘,机械硬盘(磁盘)

2)光刻存储:DVD

3)半导体存储:EEPROM,NandFlash,NorFlash

2.Nand和Nor的差异

(1)Nand容量大,价格低,需要按块访问(不能按字节访问),需要专用时序接口访问(不能直接接到地址总线上)
(2)Nor容量小,价格高,按块擦和写、按字节读需要专用时序接口访问

3.单片机系统常用存储解决方案

(1)单片机自身代码:存储在内部Flash中,本质是NorFlash
(2)存少量掉电不丢失数据,用EEPROM(一般都是比较小)--》IIC通信(速度较慢),典型24C02
(2)存中容量掉电不丢失数据,用SPINorFlash(使用SPI是为了减少引脚)--》SPI通信(速度比IIC快),一般64k-32MB范围
(3)存大容量掉电不丢失数据,用SPINandFlash,一般32MB-1GB范围
(4)要便于插拔和扩展,用TF/SD卡,U盘等,一般容量在GB级别。
(5)现在还有新型的SDNand,就是芯片封装的SD卡,容量在nMB-1GB级别。
(6)更大容量板载存储,用eMMC芯片,一般容量4GB-256GB级别
(7)STM32内部Flash可以开放给程序用,存储少量掉电不丢失数据。

4、存储器总结

(1)多种可用,根据产品特点和需求选择,重点考虑:性价比、容量、寿命、速度、可靠性等因素,大多数行业都有选型惯例。
(2)程序员不必过多关心内部存储颗粒特性,更多关心编程接口即可

三、W25Q64

1.W25Q64简介

1)AT24C存储容量是KB级别的,W25Q64是MB级别

2)存储容量:24位地址

【STM32】W25Q64 && SPI(串行外设接口)_第21张图片

【STM32】W25Q64 && SPI(串行外设接口)_第22张图片

2.硬件电路

【STM32】W25Q64 && SPI(串行外设接口)_第23张图片

3、W25Q64框图

1)W25Q64使用的存储空间是8MB(实际上可以使用16MB)-->所以地址从:0x00 00 00到0x7f ff ff

2)存储空间的划分:先划分为若干块,在划分为若干扇区,最后划分为若干页

1.分为Block

【STM32】W25Q64 && SPI(串行外设接口)_第24张图片

将8MB/128Block分为64KB(每一个大小为64KB,0-127)

【STM32】W25Q64 && SPI(串行外设接口)_第25张图片

2.分为Sector

将64KB/16分为4KB

【STM32】W25Q64 && SPI(串行外设接口)_第26张图片

3.分为page

将4K/25bit分为16bit

【STM32】W25Q64 && SPI(串行外设接口)_第27张图片

【STM32】W25Q64 && SPI(串行外设接口)_第28张图片

4.其他部分

SPI控制器,状态寄存器,数据缓存区

【STM32】W25Q64 && SPI(串行外设接口)_第29张图片

5.Flash操作注意事项

四、SPIFlash(W25Q64)数据手册解读

1、主要SPIFlash厂家

(1)SPIFlash本质:SPI接口芯片+内部存储颗粒(Nand,Nor)
(2)台湾:Winbond华邦(W开头)、MXIC旺宏(M开头)
(3)国内:GD兆易创新(GD开头)

你可能感兴趣的:(STM32,stm32,嵌入式硬件,单片机)