欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2533|回復: 15
收起左側

關于EEPROM扇區擦除的問題

[復制鏈接]
ID:95375 發表于 2022-8-9 19:54 | 顯示全部樓層 |閱讀模式

如果是擦除1個扇區,那么是直接擦除就可以了,但是要擦除多個扇區呢,好像用重復的方法不好用,


                                                                        IapEraseSector(IAP_ADDRESS);        //清除內存
                                                                        IapEraseSector(IAP_ADDRESS2);        //清除內存
                                                                        IapEraseSector(IAP_ADDRESS3);        //清除內存
在擦每個扇區間加個延時也不行



                                                                        IapEraseSector(IAP_ADDRESS);        //清除內存
                                                                        delay1ms(20);//延時1ms
                                                                        IapEraseSector(IAP_ADDRESS2);        //清除內存
                                                                        delay1ms(20);//延時1ms
                                                                        IapEraseSector(IAP_ADDRESS3);        //清除內存
                                                                        delay1ms(20);//延時1ms



請教各位大神都是如何擦除EEPROM多個扇區的呢?


使用的芯片是:STC15F2k08S2、STC15F2k32S2
回復

使用道具 舉報

ID:213173 發表于 2022-8-9 21:14 | 顯示全部樓層
        for(i=0;i<10;i++)//連續擦除10個扇區
        {
                IapEraseSector(i*0x0200);
        }
回復

使用道具 舉報

ID:161164 發表于 2022-8-9 21:19 | 顯示全部樓層
  1. for(i=0;i<3;i++)
  2. {
  3.         IapEraseSector(IAP_ADDRESS+i*512);
  4. }
復制代碼
回復

使用道具 舉報

ID:624769 發表于 2022-8-9 21:22 | 顯示全部樓層
IAP_CONTR | = 0x80;
IAP_CMD = 0x03;
IAP_ADDRH = ????;   //Epprom高位地址
IAP_TRIG = 0x5A;
IAP_TRIG = 0xA5;

一共就 5 句話,連續 刪除多個扇區的話,只要不斷重復后面三句就夠了。 你整那么花俏,最終關鍵代碼又不發出來,有啥用?
回復

使用道具 舉報

ID:57657 發表于 2022-8-9 21:33 | 顯示全部樓層
IAP_ADDRESS、IAP_ADDRESS2、IAP_ADDRESS3 是常量還是 變量? 具體請將程序貼完成。
回復

使用道具 舉報

ID:965189 發表于 2022-8-9 21:46 | 顯示全部樓層
STC15F2k08S2的EEPROM扇區地址是:0000h,到D3FFh.擦除要對應地址。
回復

使用道具 舉報

ID:382454 發表于 2022-8-10 11:10 | 顯示全部樓層
官方有例程。用一個循環。
回復

使用道具 舉報

ID:1034262 發表于 2022-8-10 11:31 | 顯示全部樓層
正如“沙發”發的,一個for循環的事,一條調用語句即可。
回復

使用道具 舉報

ID:95375 發表于 2022-8-10 12:05 | 顯示全部樓層

謝謝,這樣簡單方便,通殺了
回復

使用道具 舉報

ID:95375 發表于 2022-8-10 12:09 | 顯示全部樓層

我原來想用0x0400開始后面的3個扇區,用了以下for循環
#define IAP_ADDRESS 0x0400
        for(i=0;i<3;i++)
        {
                IapEraseSector(IAP_ADDRESS);
                IAP_ADDRESS=IAP_ADDRESS+0x0200;
        }

但存不住信息,斷電就沒了
對比你的代碼,受教了,謝謝,我這代碼應也沒什么問題吧?
回復

使用道具 舉報

ID:95375 發表于 2022-8-10 12:11 | 顯示全部樓層
188610329 發表于 2022-8-9 21:22
IAP_CONTR | = 0x80;
IAP_CMD = 0x03;
IAP_ADDRH = ????;   //Epprom高位地址

你這直接在擦除函數里修改,不好維護和移植啊
回復

使用道具 舉報

ID:95375 發表于 2022-8-10 12:14 | 顯示全部樓層
coody_sz 發表于 2022-8-10 11:31
正如“沙發”發的,一個for循環的事,一條調用語句即可。

用過for的,發現不成功,以為是我的擦除方式錯了,想請教一下連續擦除多個扇區,擦每個扇區后要休息一下的嗎?還有如何檢驗EEPROM有些扇區是不良的呢?
回復

使用道具 舉報

ID:161164 發表于 2022-8-10 15:15 | 顯示全部樓層
liyago 發表于 2022-8-10 12:09
我原來想用0x0400開始后面的3個扇區,用了以下for循環
#define IAP_ADDRESS 0x0400
        for(i=0;i

你這IAP_ADDRESS是宏定義的
你寫的代碼是 IAP_ADDRESS=IAP_ADDRESS+0x0200;
但編譯器看到的是0x0400=0x0400+0x0400;
當然存不住信息
回復

使用道具 舉報

ID:123289 發表于 2022-8-10 16:59 | 顯示全部樓層
注意:擦除是需要時間的。
時間不足時,訪問它,你就會發現未擦干凈。等時間足夠了,再訪問就OK了。
回復

使用道具 舉報

ID:95375 發表于 2022-8-10 18:38 | 顯示全部樓層
lkc8210 發表于 2022-8-10 15:15
你這IAP_ADDRESS是宏定義的
你寫的代碼是 IAP_ADDRESS=IAP_ADDRESS+0x0200;
但編譯器看到的是0x0400=0x ...

明白了,又一個低級錯誤,怎么會把這看成了變量,多謝了!
回復

使用道具 舉報

ID:57657 發表于 2022-8-10 20:44 | 顯示全部樓層
yzwzfyz 發表于 2022-8-10 16:59
注意:擦除是需要時間的。
時間不足時,訪問它,你就會發現未擦干凈。等時間足夠了,再訪問就OK了。

是否擦干凈用 do while 進行判斷,沒有字節擦除,只有扇區擦除,一次擦 512字節。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表