NorFlash型号
SST25VF0618B,在IMX6Q中通过SPI总线进行数据传输,u-boot也在NorFlash中,擦除需谨慎!
引脚说明
器件操作指令
状态寄存器
读状态寄存器(RDSR)
一般我们只需要读出BUSY位,由此判断寄存器写操作是否完成
- 将GPIO上的电平调为低电平,使能NorFlash芯片
- 发送05H命令
- 发送数据周期(发送一个变量用于接收状态寄存器的值)
- 将GPIO上的电平调为高电平,取消选中
写使能(WREN)
在对NorFlash进行写数据操作之前要进行写使能操作
- 将GPIO上的电平调为低电平,使能NorFlash芯片
- 发送06H指令
- 将GPIO上的电平调为高电平,取消选中
使能写状态寄存器(EWSR)
写状态寄存器前,要进行写状态寄存器操作
- 将GPIO上的电平调为低电平,使能NorFlash芯片
- 发送05H命令
- 将GPIO上的电平调为高电平,取消选中
写状态寄存器(WRSR)
- 将GPIO上的电平调为低电平,使能NorFlash芯片
- 发送01H命令
- 发送要写入状态寄存器的值
- 将GPIO上的电平调为高电平,取消选中
读操作流程
以25MHz频率读为例,需要至少五个周期,1个操作码周期,3个地址周期(要读的地址),1到多个数据周期(用于就收数据)
- 将GPIO上的电平调为低电平,使能NorFlash芯片
- 发送03H命令
- 发送3个地址周期
- 发送一个或多个数据周期
- 将GPIO上的电平调为高电平,取消选中
擦除操作
以4KB擦除操作为例
- 将GPIO上的电平调为低电平,使能NorFlash芯片
- 使能写状态寄存器
- 将1写入状态寄存器
- 发送20H命令
- 发送3个地址周期
- 读状态寄存器,等待擦除完毕
- 将GPIO上的电平调为高电平,取消选中
写操作
有两个写操作,分别是字节编程和AII编程
字节编程,发送一字节
-
将GPIO上的电平调为低电平,使能NorFlash芯片
-
写使能
-
发送02H命令
-
发送3个地址周期
-
发送一个数据周期(要写入的值)
-
读状态寄存器,等待写完成
-
将GPIO上的电平调为高电平,取消选中
(自动地址递增)AII字编程,发送多个字节,由于它的特性,只需要发送一次地址周期即可 -
将GPIO上的电平调为低电平,使能NorFlash芯片
-
写使能
-
发送ADH命令
-
发送3个地址周期
-
发送两个数据周期(要写入的值)
-
读状态寄存器,等待写完成
-
发送ADH命令
-
发送两个数据周期(要写入的值)
-
读状态寄存器,等待写完成
-
…
-
上述操作循环直到所有数据写完毕
-
将GPIO上的电平调为高电平,取消选中
注
NorFlash的使能信号与SPI的片选信号都绑定到了同一个GPIO上,所以需要将GPIO上的电平调低来使能与片选NorFlash芯片
详细信息可以搜索SST25VF016B的数据手册,附在线观看网址
https://max.book118.com/html/2017/0629/119003452.shtm