ch554 dataflash字節(jié)寫入問題

WriteDataFlash(DATA_FLASH_ADDR_Offset, DataBuffer, 90);

重新寫入90個字節(jié)后,執(zhí)行讀取數(shù)據(jù),還是之前的數(shù)據(jù),感覺沒有寫進(jìn)去。

部分程序:


if(HIDKey[0] == 1) HIDKey[0] = 0xAA;DataBuffer[0] = 0xAA;

if(HIDKey1[0] == 2) HIDKey1[0] = 0xAA;DataBuffer[9] = 0xAA;

if(HIDKey2[0] == 3) HIDKey2[0] = 0xAA;DataBuffer[18] = 0xAA;

? if(HIDKey3[0] == 4) HIDKey3[0] = 0xAA;DataBuffer[27] = 0xAA;

if(HIDKey4[0] == 5) HIDKey4[0] = 0xAA;DataBuffer[36] = 0xAA;

? if(HIDKey5[0] == 6) HIDKey5[0] = 0xAA;DataBuffer[45] = 0xAA;

if(HIDKey6[0] == 7) HIDKey6[0] = 0xAA;DataBuffer[54] = 0xAA;

if(HIDKey7[0] == 8) HIDKey7[0] = 0xAA;DataBuffer[63] = 0xAA;

if(HIDKey8[0] == 9) HIDKey8[0] = 0xAA;DataBuffer[72] = 0xAA;

if(HIDKey9[0] == 10) HIDKey9[0] = 0xAA;DataBuffer[81] = 0xAA;

? i = 10;

? while(i--){

//? status = EraseDataFlash(DATA_FLASH_ADDR);

//? if(status != 0) continue;

#if DE_PRINTF

? printf("write ..\n");

#endif

? WriteDataFlash(DATA_FLASH_ADDR_Offset, DataBuffer, 90);

? break;


之前好像遇到過,dataflash寫完之后得稍微等一會兒再對flash讀取,不然寫入的信息就無效了,加個delay,寫入完成后,稍微等一下再讀試試(個人經(jīng)驗(yàn),僅供參考,無效勿噴)


謝謝你的回復(fù),加了延時,會對按鍵檢測有了好的體驗(yàn),減少誤操作 ,不過還是沒有改變,數(shù)據(jù)沒有被保存。一直懷疑是不是空間不夠,感覺也不是,我是存儲90個字節(jié),實(shí)際空間是128,應(yīng)該是夠的。不知道為什么 ,前面的數(shù)據(jù)都可以保存,也可以讀取,多次驗(yàn)證,就是最后這九個字節(jié),從81--90無法保存。有沒有辦法 直接觀察 dataflash的空間存儲情況,不修改? code數(shù)據(jù)。


WCHISPTool提供了讀取芯片DATAFLASH的功能,如圖:

image.png


可以描述一下大體應(yīng)用嗎?檢測到按鍵需要存儲到FLASH中去,但保存到RAM會更快速,操作FLASH時芯片會處于停止運(yùn)行狀態(tài),可能會影響到檢測,討論看看是否有更合適的處理方式。


我還是用ch552的全部引腳做按鍵輸入,把讀取和存儲的數(shù)據(jù)全部放到dataflash里面,測試只有p17也就是設(shè)置的最后一個引腳,他保存的數(shù)據(jù)和讀出的數(shù)據(jù)有問題,像你說的處于停止?fàn)顟B(tài),或者說是無限死循環(huán)狀態(tài),導(dǎo)致其他所有按鍵引腳都不能正常使用,ch552是8個io口,全部用作普通的io口使用,定義的前9個還算正常,第九個偶爾也會失靈,懷疑是串口導(dǎo)致,把串口初始化禁掉,導(dǎo)致枚舉失敗無法識別usb設(shè)備,請問是什么問題?需要怎么設(shè)置,不需要串口,只要把全部io口做按鍵輸入 。


轉(zhuǎn)到另外一個主題




http://www.findthetime.net/bbs/thread-89733-1.html


只有登錄才能回復(fù),可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频