前言
主要进行个人学习的记录
一、基础理论
不做赘述
注意SPI规定了主机与从机,片选信号低电平有效。
二、通讯模式
1.介绍
四种工作模式: CPOL->0:SCLK空闲时低电平,1:SCLK空闲为高电平 CPHA->0:奇数边沿进行数据采集,1:偶数边沿进行数据采集 如下图具有四种模式的组合,具体分析不做赘述,图中画的很清楚。主机和从机之前的模式需要相互保持一致2.示例
以W25Q为例子
观察上图,模式零的情况下,根据上一个图已知模式零的情况下时钟默认低电平,上升沿采集数据,下降沿发送数据。继续往后看,数据的采集都在数据块的中间刚好进行数据采集,发送都在数据块之间。
上图说明了W25Q支持的SPI读取的模式,之后的编程驱动就是根据这个来写的。
三.芯片编程注意事项
注意芯片页的大小,超过一页大小的数据写入,需要把数据分开。读数据和大小无关
最好不要使用硬件的SPI的CS引脚,可以使用一个GPIO口进行CS管脚的控制。
和大部分操作相同,先检查芯片是否处于空闲状态,然后在进行读写。
注意数据读取时,要注意数据的高低位的传输以及传输数据的bits位,这些都是由Flash芯片决定的,去手册中读取。
如果为擦除扇区则擦除必须是4k的倍数。
关键点:芯片操作指令
页面操作程序
四.数据写入注意事项
写入的数据有四种情况
- 写入数据大于一页
- 写入数据小于一页
- 写入地址有对齐
- 写入地址没有对齐
编程思想如下:先判断地址是否对齐,如果已经对齐则进行判断:写入数据小于一页则直接写入;超过一页则先进行整页写入然后在写剩余的。如果没有进行地址对齐则进行判断:待写入数据不足一页的类似上面的判断这里不做赘述。
总结
学会Flash后可以进行一些重要数据的存储或者图片的存储,加油吧嘻嘻