发 帖  
原厂入驻New

请问NOR Flash如何操作?

53 NOR Flash
分享
2020-11-10 07:55:09   评论 分享淘帖 邀请回答

相关问题

3个回答
  擦(erase)
  Flash 的编程原理都是只能将 1 写为 0,而不能将 0 写为 1。所以在 Flash 编程之前,必须将对应的Page擦除,而擦除的过程就是把所有位都写为 1 的过程。是寄存器控制的。都是0xFFFFFFFF才能被写入
  1.擦除的单位是page,一个page可能是256B也可能是512B。
  2.擦除的地址需要提前进行页对齐。
  实现目标 擦除一个page的数据
  流程:
  (1)设置寄存器为page擦除状态
  (2)加载一个无效数据dummy,任意值到目标区域上
  (3)激活寄存器高电平状态
  (4)加一个while死循环,等待高电平状态消失,高电平状态消失说明擦写完成
  (5)使能寄存器的鉴别模式
  (6)读出所有数据和0xFFFFFFFF比较
  (7)数据相符,关闭寄存器verify模式,返回success。失败重复上面所有步骤
  (8)失败次数达到门限值,关闭寄存器verify模式,返回fail
  Note:在高电平操作之后,硬件已经记住了目标的擦除page,所以只会是目标page是表现出verify模式
2020-11-10 15:10:22 评论

举报

  写(write)
  需要注意:
  1.以word为写入单位
  2.写前需要提前擦除。写入前,必须是0xFFFFFFFF。
  实现目标写一个buffer的数据(需要注意操作的时候要按照具体芯片文档说明来操作,比如关闭一些时钟和中断)
  流程:
  (1)设置底层寄存器为写状态
  (2)加载一个word的数据到buffer上
  (3)通过设置寄存器设置为高电平状态
  (4)等待高电平状态消失,判定为写结束
  (5)数据比对,比对成功则写成功
  (6)重复前面的步骤进行第二个一直到第n个word的写操作
2020-11-10 15:10:34 评论

举报

  更新(update)
  Update!=Write
  Write是目标区域是空白,然后写入数据;Update是在目标区域已经存在数据的情况下,把目标区域的数据给覆盖更新成新数据
  这样一说是不是很清晰了呢?
  按照已知的特点,flash是无法一次擦除,多次写入的。要想写入数据必须重新对目标区域进行擦除。而擦除一擦除就是一整个page,因此需要对数据进行备份到ram中,再擦除,再写入。把flash的擦和写结合一下就是upade了。
  实现目标update,nword
  流程:
  (1)目标地址dst,Upade数据来源地址src,长度n个word,计算目标地址和page起始地址的偏移长度offset
  (2)复制备份数据到ram中
  (3)在ram中把数据update掉
  (4)擦除page
  (5)把ram buffer中的数据到目标区域,整个page都重新写入
2020-11-10 15:10:44 评论

举报

只有小组成员才能发言,加入小组>>

320个成员聚集在这个小组

加入小组

创建小组步骤

关闭

站长推荐 上一条 /9 下一条

快速回复 返回顶部 返回列表