STC12LE5052的EEPROM使用
关于STC12LE5052的EEPROM,官方资料只有简单一句话:所有FLASH空间均可作EEPROM修改。
写一段代码,生成HEX后,显示CODE=2437,扫描 0x0000开始的10个扇区,发现前2438个字节都是有数据的,其它是0或FF. 说明STC12LE5052代码从 0x0000处开始存储。其它空余空间可作EEPROM来使用。那它的空间顶部在哪儿? 下面用代码证明:
for (i=512*5; i<512*200; i+=512) //前面的5个扇区不操作保留为代码空间
{
IapEraseSector(i) ; 先清除第5到第200个扇区(假定有200个扇区,哈)
}
for (i=512*5; i<512*200; i++)
{ //对这些扇区进行写操作,i为增变量,保证相邻不相同
IapProgramByte(IAP_ADDRESS+i, (BYTE)i);
}
for (i=512*5; i<512*200; i++) //Check whether all sector data is FF
{
theByte = IapReadByte(IAP_ADDRESS+i) ;
//TxData(theByte);
if(theByte==oldByte && theByte==0xFF)
{
TxData(i); TxData(i>>8);
break;
}
oldByte =theByte;
}
最后,返回到串口的数据是0070. 这就意味着EEPROM可存储0x7000个字节。STC12LE5052包括代码,最大扇区数为 0x7000/512=56. 存储空间为28K。为了验证0-55扇区的有效性,可用如下代码测试:
for (i=0; i<512*57; i++)
{
theByte = IapReadByte(i) ;
TxData(theByte);
}
发现最后512个字节,全是重复的FF。这就是stc12le5052的真实EEPROM空间,远远超出我们想象和官方公布。