[讨论] 关于存储器AT45DB041的使用

ena   2020-8-21 16:07 楼主

代码就不贴了,大致描述下问题,代码是别人写的:

目的是向存储器中的某一块写入数据,他的操作流程是,命令0x53(将主存储器中的数据转移至缓冲区)------命令0x84(向缓冲区写入数据)------命令0x88(将缓冲区的数据转存如主存储器)----命令0x60(将主存储器中的数据与缓冲区中的数据比较)。现在的问题是,不太明白0x53命令的作用,请用过的朋友们帮忙解答下,这个命令主要是做什么用的?

回复评论 (4)

哈哈,早期写过这个的驱动代码,自认算得上比较完善的

0x53 : 就是把FLASH存储器主存页的数据,读取到FLASH内部缓存区1中

他的那个代码操作流程是:  (读主存页到缓存)-- 修改(修改缓存中的数据)-- (将缓存中的数据再回写到主存页)-- 校验(比较主存页中的数据与缓冲区中的数据是否一致)

 

 

本帖最后由 foxpro2005 于 2020-8-21 21:50 编辑
点赞  2020-8-21 21:44
引用: foxpro2005 发表于 2020-8-21 21:44 哈哈,早期写过这个的驱动代码,自认算得上比较完善的 0x53 : 就是把FLASH存储器主存页的数据,读取到F ...

嗯,是这个流程。但不知道为什么需要先将主存储区的数据读到缓冲区呢,直接往缓冲区里写不就行了吗

点赞  2020-8-22 08:12

FLASH是要擦除过后的,才能将新数据写进去!!!

AT45DB041是有直接通过缓冲区写入数据到主存页的命令(带自擦除的或不带自擦除的),写的区域是擦除过的,可以直接写;但如果之前是写过数据的要先擦除再写数据,擦除前为了保护该页中其它区域的数据,所以需要先将这一页的数据读出来到缓存区中,然后新数据写入到缓存区中,再然后擦除该主存页,最后再把缓存区中的数据回到主存页中。

 

还是先好好了解一下FLASH存储器的原理吧

 

 

点赞  2020-8-22 09:40

5楼 ena 

引用: foxpro2005 发表于 2020-8-22 09:40 FLASH是要擦除过后的,才能将新数据写进去!!! AT45DB041是有直接通过缓冲区写入数据到主存页的命令( ...

嗯,大致明白了。也就是每次写的时候都是按页进行写,为了避免已经写入的部分被擦除,就先读到缓冲区里,在缓冲区里对页进行重新编程后,再往主存储器里写。但这样最好一次写入的数据较多,不用重复擦除了

点赞  2020-8-22 14:27
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复