[技术讨论] 写EEPROM需要关闭中断吗?

[复制链接]
3478|12
 楼主| showmyself 发表于 2023-7-23 11:02 | 显示全部楼层 |阅读模式
各位好,

现在用一款国产32bit M0核MCU,外部外挂了一颗EEPROM,AT24C04,IO口模拟I2C接口通信,每写一次数据都会保存到EEPROM,写入和保存数据都使用了均衡算法。

我的问题是,写入数据时,需要关闭中断吗?我的程序中开启了1ms定时器中断,听说当写入数据时,如果被中断打断,将导致数据丢失。
现在我是没管它,没关中断,就直接写的,测试了几个月,没有发现一次数据写入有问题的,所以现在我也搞不懂到底要不要关闭中断。
如果关闭中断,会不会导致另一个问题,因为我的按键都是放在中断扫描的,关掉后会不会导致按键又出问题了。

求教有这方面经验的大神指教。

谢谢

评论

要  发表于 2023-7-24 12:41
xch
哪个型号MCU?  发表于 2023-7-23 13:23
tyw 发表于 2023-7-23 12:09 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
jobszheng 发表于 2023-7-23 14:24 | 显示全部楼层
从理论上,对于写入EEPROM的操作应当在一个中断保护区域内完成。
但在我的实践中,由于其它中断的处理时间,占用时间较少,对于低速的I2C操作的影响很小,所以,我也没有在EEPROM读取与写入操作中使用保护区来保护。
cjseng 发表于 2023-7-23 14:48 | 显示全部楼层
看这几个参数,受中断影响,不超过最大值即可,用IO模拟,肯定不会超过最大值。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
天意无罪 发表于 2023-7-23 17:43 | 显示全部楼层
中断和导致写EPPROM失败没有关系,出现这样的原因也是程序问题。
delin17 发表于 2023-7-23 19:05 | 显示全部楼层
原因基本是这样,模拟I2C通信,GPIO一般是或、&。
但在很多单片机,这不是原子操作。 要先读出来,再写入。
这个时候,如果中断里也进行对应口的操作,例如:I2C用的是PA口中的IO,中断里有操作PA的其他口。这个时候,可能出现I2C的当前对IO的操作产生非预期的结果,导致I2C通信不对。

但大部CM0产中,你可以通过BRR,BSRR来进行IO一个位的原始操作,所以不会存在这个问题。
一叶倾城wwq 发表于 2023-7-24 08:50 | 显示全部楼层
外挂的不用关,保证时序是对的就行。
gaoyang9992006 发表于 2023-7-24 08:52 | 显示全部楼层
为何不使用硬件I2C,如果有中断打断,建议使用硬件的,这样可以避免读写打断。不过根据I2C协议为差分格式,打断的话也应该不会影响数据完整性。
mcu5i51 发表于 2023-7-24 09:08 | 显示全部楼层
多数芯片不受信号打断影响,就是说你可以用两个无干扰的开关纯手工写入时序,只要注意中断中不要干扰IO和数据就行,只有频率上线,没有下限
datouyuan 发表于 2023-7-24 09:33 | 显示全部楼层
本帖最后由 datouyuan 于 2023-7-24 09:52 编辑

我试过在24C04读写期间插入多个任意延时(5uS~2秒),都能正确读写,说明iic只要求时序,对时间没啥要求,不需要关闭中断。
在iic操作期间发生中断,并且该中断也要操作iic,这时才会有问题。
nvjwiciw659 发表于 2023-7-24 11:31 | 显示全部楼层
jobszheng 发表于 2023-7-23 14:24
从理论上,对于写入EEPROM的操作应当在一个中断保护区域内完成。
但在我的实践中,由于其它中断的处理时间 ...

偶遇jobs大佬
您需要登录后才可以回帖 登录 | 注册

本版积分规则

54

主题

126

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部