STM32
直播中

感谢相遇

9年用户 968经验值
擅长:嵌入式技术 制造/封装 控制/MCU
私信 关注
[问答]

SMT8 EEPROM读写程序,写没问题好象读有问题是怎么回事?

[size=13.3333px]连续读EE时,例如
[size=13.3333px]        data_1=Read_ee(1);
[size=13.3333px]        data_2=Read_ee(2);
[size=13.3333px]        data_3=Read_ee(3);
[size=13.3333px]        data_4=Read_ee(4);
[size=13.3333px]        data_5=Read_ee(5);
[size=13.3333px]        data_6=Read_ee(6);

[size=13.3333px]        data_1=Read_ee(1); 的值读不出来,后面的都读的对的,写函数没有问题



unsigned char Read_ee(unsigned char add)
{
   static unsigned char *p;
   p=(unsigned char *)(add+0x4000);
   return *p;
}


void Write_ee(unsigned char add,unsigned char data)
{
   static unsigned char *p;
   p=(unsigned char *)(add+0x4000);
   do{FLASH_DUKR=0xae;FLASH_DUKR=0x56;}while(FLASH_IAPSR_DUL==0);
   *p=data;while(FLASH_IAPSR_HVOFF==0);
}


回帖(1)

赵辉

2024-5-7 17:41:44
根据您提供的信息,您在使用SMT8的EEPROM读写程序时,写入功能正常,但读取功能存在问题。当您连续读取EEPROM时,第一个数据(data_1)无法读取,而后面的数据(data_2至data_6)都能正确读取。以下是一些可能的原因和解决方法:

1. 检查EEPROM地址:确保您读取的EEPROM地址是正确的。如果地址错误,可能导致无法读取第一个数据。

2. 检查初始化代码:确保您的EEPROM初始化代码是正确的。错误的初始化可能导致读取失败。

3. 检查读取函数:检查您的Read_ee函数是否正确实现了EEPROM的读取操作。确保您正确地设置了EEPROM的地址和数据寄存器。

4. 检查EEPROM硬件:确保您的EEPROM硬件连接正确,没有损坏或故障。如果硬件存在问题,可能导致读取失败。

5. 检查时序问题:EEPROM的读取操作可能需要一定的时间来完成。如果连续读取操作之间的时间间隔过短,可能导致第一个数据读取失败。尝试在连续读取操作之间添加适当的延时。

6. 检查电源和电压:确保您的EEPROM模块供电正常,电压稳定。不稳定的电源可能导致读取失败。

7. 检查干扰:检查您的系统中是否存在电磁干扰或其他干扰,这可能影响EEPROM的读取操作。

8. 调试和测试:使用调试工具逐步检查您的代码,找出可能导致读取失败的原因。您可以尝试使用单步调试或添加打印语句来帮助定位问题。

9. 检查EEPROM容量:确保您的EEPROM容量足够存储您尝试读取的数据。如果EEPROM容量不足,可能导致读取失败。


举报

更多回帖

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