×
嵌入式 > 技术百科 > 详情

stm8s开发(九) EEPROM的使用:使用EEPROM存储数据!

发布时间:2024-05-16 发布时间:
|

EEPROM是单片机应用系统中经常会用到的存储器,它主要用来保存一些掉电后需要保持不变的数据。在以前的单片机系统中,通常都是在单片机外面再扩充一个EEPROM芯片,这种方法除了增加成本外,也降低了可靠性。现在,很多单片机的公司都推出了集成有小容量EEPROM的单片机,这样就方便了使用,降低了成本,提高了可靠性。


STM8单片机芯片内部也集成有EEPROM,容量从640字节到2K字节。最为特色的是,在STM8单片机中,对EEPROM的访问就象常规的RAM一样,非常方便。EEPROM的地址空间与内存是统一编址的,地址从004000H开始,大小根据不同的芯片型号而定。


为了管理方便,定义EEPROM的地址

#defineEP_HEADER_ADDR0x4000

操作EEPROM需要初始化,也就是FLASH解锁,解锁需要两个密钥,顺序还不能调换。

voidEEPROM_init(void)

{

do

{

FLASH_CR1=0x00;

FLASH_CR2=0x00;

FLASH_NCR2=0xFF;

FLASH_DUKR=0xAE;//写入第一个密钥

FLASH_DUKR=0x56;//写入第二个密钥

}while((FLASH_IAPSR&0x08)==0);//若解锁未成功,则重新再来

}


还有一个加锁的功能,一般来说操作完EEPROM之后需要加锁保护。

voidEEPROM_lock(void)

{

FLASH_IAPSR=(u8)(~0x08);//重新上锁

}


接下来就是两个读写的基本操作了。

//EEPROM指定地址写入一个数据addr:相对地址dat:数据

voidEEPROM_write(unsignedcharaddr,unsignedchardat)

{

unsignedchar*p;

p=(unsignedchar*)(EP_HEADER_ADDR+addr);

*p=dat;

while(!(FLASH_IAPSR&0x04));//等待写操作成功

}

//EEPROM指定地址读出一个数据addr:相对地址

unsignedcharEEPROM_read(unsignedcharaddr)

{

unsignedchar*p;

p=(unsignedchar*)(EP_HEADER_ADDR+addr);

return*p;

}


这里给的地址是绝对地址,函数内有个偏移地址的操作(偏移4000H)。

炒鸡简单是不?


有关EEPROM和FLASH的介绍:/zixunimg/eeworldimg/blog.csdn.net/yuanlulu/article/details/6163106

附上stm8s在IAR环境下的项目工程,包括了SPI、IIC、PWM、AWU、USART、EEPROM等片上硬件的初始化代码。

/zixunimg/eeworldimg/download.csdn.NET/detail/devintt/9454188


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
教你如何选一款内外兼备的吊顶LED灯