STM8S 操作內(nèi)部EEPROM
對于STM8S103F3這款芯片來講,存在640個字節(jié)的EEPROM,當(dāng)然如果有外部EEPROM,自然是不會使用到內(nèi)部的EEPROM的。但小東西也有大用途,例如做無線應(yīng)用時,減少成本的情況下,還能保存一些特定設(shè)置,如:休眠時間,工作頻率,輸出功率,密碼等。
下圖所示,STM8S系列EEPROM大小一目了然。
操作EEPROM自然分成讀操作和寫操作,先查看STM8S的手冊描述如下:
中文手冊上的存儲器組織結(jié)構(gòu)存在錯誤,如:
對應(yīng)英文手冊如:
對應(yīng)的代碼如下;
char*p=0x4000;
u8a,b,c;
a=*p;
b=*p++;
c=*p++;
就像C8051操作外部數(shù)據(jù)存儲一樣,只需要簡單通過指針指向0x4000位置即可。
寫操作,則有些小麻煩,主要是STM8S的存儲區(qū)安全機制問題。
中文手冊描述:
英文手冊描述:
u8write_header(header*h)
{
u8*p=(u8*)EP_HEADER_ADDR;//EP_HEADER_ADDR0x4000
if(!h)
return0;
/*操作EEPROM,需要先進行解鎖*/
FLASH_DUKR=0xAE;//注意這里不能斷點調(diào)試,否則會造成內(nèi)部不同步,F(xiàn)LASH解鎖失敗
FLASH_DUKR=0x56;
FLASH_CR2=0x00;
FLASH_NCR2=0xFF;
if(!(FLASH_IAPSR&0x08))//檢測對應(yīng)的位是否解鎖
return0;
_memcpy(p,(u8*)h,sizeof(header));
FLASH_IAPSR=(u8)(~0x08);//重新上鎖
return1;
}
執(zhí)行解鎖后,操作也是非常簡單的。
總結(jié):
1、STM8S內(nèi)部EEPROM使用還是挺方便的,只有寫操作時需要解鎖。
2、中文手冊很多時候會存在錯誤,只能作為快速瀏覽用,具體應(yīng)用還得參考官方英文手冊。