代码就不贴了,大致描述下问题,代码是别人写的:
目的是向存储器中的某一块写入数据,他的操作流程是,命令0x53(将主存储器中的数据转移至缓冲区)------命令0x84(向缓冲区写入数据)------命令0x88(将缓冲区的数据转存如主存储器)----命令0x60(将主存储器中的数据与缓冲区中的数据比较)。现在的问题是,不太明白0x53命令的作用,请用过的朋友们帮忙解答下,这个命令主要是做什么用的?
哈哈,早期写过这个的驱动代码,自认算得上比较完善的
0x53 : 就是把FLASH存储器主存页的数据,读取到FLASH内部缓存区1中
他的那个代码操作流程是: 读(读主存页到缓存)-- 修改(修改缓存中的数据)-- 写(将缓存中的数据再回写到主存页)-- 校验(比较主存页中的数据与缓冲区中的数据是否一致)
本帖最后由 foxpro2005 于 2020-8-21 21:50 编辑
引用: foxpro2005 发表于 2020-8-21 21:44 哈哈,早期写过这个的驱动代码,自认算得上比较完善的 0x53 : 就是把FLASH存储器主存页的数据,读取到F ...
嗯,是这个流程。但不知道为什么需要先将主存储区的数据读到缓冲区呢,直接往缓冲区里写不就行了吗
FLASH是要擦除过后的,才能将新数据写进去!!!
AT45DB041是有直接通过缓冲区写入数据到主存页的命令(带自擦除的或不带自擦除的),写的区域是擦除过的,可以直接写;但如果之前是写过数据的要先擦除再写数据,擦除前为了保护该页中其它区域的数据,所以需要先将这一页的数据读出来到缓存区中,然后新数据写入到缓存区中,再然后擦除该主存页,最后再把缓存区中的数据回到主存页中。
还是先好好了解一下FLASH存储器的原理吧
引用: foxpro2005 发表于 2020-8-22 09:40 FLASH是要擦除过后的,才能将新数据写进去!!! AT45DB041是有直接通过缓冲区写入数据到主存页的命令( ...
嗯,大致明白了。也就是每次写的时候都是按页进行写,为了避免已经写入的部分被擦除,就先读到缓冲区里,在缓冲区里对页进行重新编程后,再往主存储器里写。但这样最好一次写入的数据较多,不用重复擦除了