单片机/MCU论坛
直播中

王焕锁

7年用户 957经验值
私信 关注
[问答]

ADuc7060/1 Flash存储器进行读写,有时读出来是0XFFFF的原因?

我Flash/EE 存储器进行读写,之前出现过能观看寄存器正确操作写入0X55AA 然后同样的地址读出来为0XFFFF
(错误值)。经过测试一段时间后重新建立工程,就出现了正确读到0X55AA的情况 。然后昨天又出现了读出的是OXFFFF
的情况,对于手头项目比较紧张,附带FLASH 操作基本程序
unsigned short
Flash_Red(unsigned short FlashAddr)
{
unsigned short
FlashData;
unsigned char Status;
FEEMOD=FEEMOD|0x8; //Erase key
enable
FEEADR=FlashAddr;
FEECON=READ_HALF_WORD;
Status =
FEESTA 0x03;
while (!(Status)) Status = FEESTA 0x03;
if
((Status 0x02)==0x02) ERROR = 1;
FlashData=FEEDAT;
FEEMOD =0xfff7;
//Erase key unable
return FlashData;
}
void ErasePage(unsigned
short FlashAddr )
{
unsigned char Status;
FEEMOD=FEEMOD|0x8; //Erase
key enable
FEEADR=FlashAddr;
FEECON=ERASE_PAGE;
Status =
FEESTA 0x03;
while (!(Status)) Status = FEESTA 0x03;
if
((Status 0x02)==0x02) ERROR = 1;
FEEMOD =0xfff7; //Erase key
unable
}
void Flash_Write (unsigned short FlashAddr,unsigned short
FlashData)
{ unsigned char Status;
FEEMOD=FEEMOD|0x8; //Erase/Red key
enable
FEEADR=FlashAddr;
FEEDAT=FlashData;
FEECON=WRITE_HALF_WORD;
Status =
FEESTA 0x03;
while (!(Status)) Status = FEESTA 0x03;
if
((Status 0x02)==0x02) ERROR = 1;
FEEMOD =0xfff7; //Erase key
unable
}

回帖(1)

王玲

2024-1-15 18:54:13
可能的原因是Flash存储器的数据出现了错误或损坏。读取到0xFFFF表示读取失败或读到的数据无效。可能的处理方法包括:
1. 检查Flash存储器是否正确连接和配置。
2. 确保Flash存储器的电压和时钟都正常。
3. 检查写入和读取操作是否正确,包括地址、数据和控制信号。
4. 尝试擦除Flash存储器并重新写入数据。
5. 如果问题仍然存在,可能需要更换Flash存储器或进行更详细的故障排除。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分