最近使用LPC1788内部EEPROM存储数据时候发现问题:LPC1788的EEPROM扇区只有 0-62 63扇区不存在
uint32_t i, j;
uint8_t count;
uint8_t error = 0;
debug_frmwrk_init();
_DBG(menu);
EEPROM_Init();
count = sizeof(write_buffer);
count &= 0xFC;
_DBG_("Erase EEPROM");
for(i = 0; i < EEPROM_PAGE_NUM; i++)
{
EEPROM_Erase(i);
}
for(i=0;i<EEPROM_PAGE_NUM;i++)
{
uint32_t *ptr = (uint32_t*)read_buffer;
EEPROM_Read(0,i,(void*)read_buffer,MODE_32_BIT,EEPROM_PAGE_SIZE/4);
for(j = 0; j < EEPROM_PAGE_SIZE/4; j++)
{
if(*ptr++ != 0)
{
_DBG("Erase ERROR at page ");_DBD(i);_DBG_("");
error = 1;
break;
}
}
}
if(error)
while(1);
_DBG_("Write data to EEPROM");
EEPROM_Write(PAGE_OFFSET,PAGE_ADDR,(void*)write_buffer,MODE_8_BIT,count/1);
_DBG_("Read data from EEPROM");
EEPROM_Read(PAGE_OFFSET,PAGE_ADDR,(void*)read_buffer,MODE_16_BIT,count/2);
//display eeprom data
for(i=0;i<count;i++)
{
if(read_buffer[i] != write_buffer[i])
{
_DBG("Difference at position ");_DBD(i);_DBG_("");
error = 1;
}
}
if(error)
_DBG_("ERROR!!!!");
else
{
for(i=0;i<count;i++)
{
_DBC(read_buffer[i]);
}
_DBG_("");
_DBG_("Demo is terminated");
}
while(1);
LPC178x/177x系列微控制器的内部EEPROM最高4032字节(并不是4K),其中,LPC1776/77/78、LPC1785/86/87/88的内部EEPROM为4032字节,LPC1774的内部EEPROM为2048字节。
所以LPC1778内部EEPROM第63扇区是不存在的!
参考链接
http://blog.csdn.net/zhzht19861011/article/details/39080705