从零实现 SPI_flash(W25Q256)

本文深入解析SPI通信协议及其在W25Q256闪存上的应用,涵盖SPI特性、闪存组织结构、初始化及读写操作。探讨STM32与SPI闪存交互细节,包括速度设置、扇区擦写策略,以及如何通过SPI总线进行高效数据传输。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:

SPI是全双工,即同一时刻可以双向通讯。

SPI是英语serial peripheral interface 的缩写,顾名思义就是穿行外围设备接口。是motorola首先在其MC68HCXX系列处理器上定义的。SPI接口主要应用在EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。SPI是一种高速的,全双工,同步的通信总线。并且在芯片的管脚上只占用4根线。

SPI的主要特点:可以同时发送和接收串行数据;可以当作主机或者从机工作;提供频率可编程时钟;发送结束中断标志;写冲突保护;总线竞争保护等。

W25Q256(256Mb)将32M(字节byte)的容量分为512个块(block),每个块大小为64K字节,每个块又分为16个扇区(sector),每个扇区4K字节。最小擦除单位为一个扇区,也就是4K字节。

W25Q256的擦写周期多达10W次,具有20年的数据保存期限。这就是我用的norflash,我当前用2M字节,因为用norflash的目的是IAP远程升级代码用,而flash只有1MB,2MB的norflash也绰绰有余了。

后面做到STM32H750时还会发现,SPI_FLASH是可以用作分散加载的。还有QSPI通讯方式


在原子哥的讲解中关于CPHA=0和CPHA=1时的时序图弄反了,查了STM32F29的中文手册SPI部分,是这样的。对比一下即可知。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值