【ARM笔记】调试EERPOM时碰到的若干问题

本文探讨了EEPROM在不同场景下出现数据丢失或改变的现象,包括更新过程中断电、电机启动时的EMI干扰以及读写速度不匹配导致的数据混乱。针对这些问题,提出了相应的解决方法,如电源稳定措施、中断处理、写保护功能、信号线布局优化以及延时处理等,以确保数据的完整性和可靠性。
摘要由CSDN通过智能技术生成

问题1

现象:EERPOM的参数丢失或改变。

原因1:在更新EEPROM过程中,断开电源。

解决方法1: a.更改设计避免在写入EEPROM过程中断开电源; b.增加100uF的电容,断电后瞬间维持EEPROM供电正常至EEPROM写入完成。

原因2: 在EEPROM读写过程中进入了中断服务程序,而中断服务程序也调用了EEPROM读写函数。

解决方法2: a.保证EEPROM读写函数的第一句是cli(),最后一句是sei(); b.中断服务程序不直接调用EEPROM读写函数,如果SRAM足够大使用读写缓冲区代替直接读写EEPROM,中断返回后在main循环里更新EEPROM; c.如果检测到EEPROM已被占用,则进入阻塞状态,等待EEPROM释放后继续执行; d.如果需存入的数据长度大于EEPROM最小存储单元,必须保证该数据在读写时不被打断。

 

问题2

现象:当大功率交流或直流电机启动或后, EEPROM里的数据自动丢失或改变。 原因:在大功率电机启动或断开瞬间EMI干扰大。 解决方法: a. 避开这些时候读写EEPROM。 b. 如果无法避开这些时候,启动EEPROM写保护功能,并且每个数据都保存多个副本。 c. 使EEPROM和EEPROM的SDA,SCK等信号线远离可能产生干扰的元件,并且避免形成大的环路。 d. 使用EMI抑制电路降低干扰幅度。

 

问题3

现象:EEPROM写入数据后,立即读取出来并通过串口发送到上位机。同样的程序,有时烧写后发出的正确的数,而有时会发出错数0xAB。

原因:EEPROM外设的读取数度是跟不上MCU的运行速度的,需要让MCU停下来等待一会儿,让外设有时间正常反应。

解决办法:[写入1-读取1]、[写入1-写入2]、[读取1-读取2] 之间必须加5ms的延时,必须加,否则数据易乱。

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值