W25Q64+STM32CubeMX配置SPI
这个博主的W25Q64,STM32CubeMX配置SPI巨详细:
https://www.xjx100.cn/news/486862.html?action=onClick
程序库函数超级详细:
正点原子
http://www.openedv.com/docs/index.html
野火:
https://embedfire.com/download/
文章主要讲的在文档中找配置参数,只讲到SPI配置,个人记录
一、SPI配置内容
硬件参考:
摘抄野火:
SPI配置内容
1、SPI通讯方向,双工,双线只接收,单线只接收等
2、设置主从模式
3、SPI 通讯的数据帧大小
4、通讯模式(CPOL,CPHA)
5、设置 NSS 引脚的使用模式
6、设置波特率分频因子
7、所有串行的通讯协议都会有 MSB 先行(高位数据在前)还是 LSB 先行(低位数据在前)的问题
带着问题看文档去
二、尝试在文档中找配置参数
一定要看目录,目录的大标题,一定要忍痛把目录和开头的描述看懂,直接百度翻译其实也不会很痛。
目录:
1、GENERAL DESCRIPTIONS 一般描述
2、FEATURES 特点
3、PACKAGE TYPES AND PIN CONFIGURATIONS 封装类型和引脚配置
4、PIN DESCRIPTIONS 引脚说明
5、BLOCK DIAGRAM 块状图
6、FUNCTIONAL DESCRIPTIONS 功能描述
7、FUNCTIONAL DESCRIPTIONS 状态和配置寄存器
8、INSTRUCTIONS 说明(明显看出有指令)
9、ELECTRICAL CHARACTERISTICS 电气特性
开头的描述:
看到了和速率扯上关系的:
133MHz Single
266/532MHz
Min 100K Program-Erase cycles per sector
SCK:配置不能高过标准SPI133MHz?
引脚说明
CS:低电平有效。传输数据高电平拉到低电平
8bit:指令通过DI(IO0)引脚移入设备,地址和数据移入和移出
功能描述
用的标准SPI,其他的没看
SPI协议的总结
(1)标准SPI是通用的,Dual SPI和QSPI只适用于flash;
(2)标准SPI:标准4线连接,全双工,同时收和发;
(3)Dual SPI:标准4线连接,半双工,2根数据线,并线发和收,双方向切换;
(4)QSPI:标准4线连接,半双工,4根数据线,并线发和收,双方向切换;
CPOL,CPAH:0(0,0)/3(1,1)
说明
First bit:MSB
根据手册和需求得知:
1、SPI通讯方向,双工,双线只接收,单线只接收等
双工,方便一点
2、设置主从模式
主模式
3、SPI 通讯的数据帧大小
指令是8bit,用8位会好些吧。
4、通讯模式(CPOL,CPHA)
*CPOL,CPAH:0(0,0)/3(1,1) *
5、设置 NSS 引脚的使用模式
通常自己另外配置一个引脚用来控制
6、设置波特率分频因子
我理解是时钟信号不超过133MHz
7、所有串行的通讯协议都会有 MSB 先行(高位数据在前)还是 LSB 先行(低位数据在前)的问题
手册:MSB
三、W25Q64存储空间分配
1K = 1024Byte
1Byte = 8bit
由开头的描述可知:32768个可编程页,每个界面256byte
一页 = 256byte
一个扇区= 4K = 41024= 4096byte = 4096/256 = 16页
一个块 = 64K = 64/4 = 16个扇区 = 1616 = 256页
一个芯片 = 128块 = 128 * 16 = 2048个扇区 = 32768页