打印
[技术讨论]

写EEPROM需要关闭中断吗?

[复制链接]
2046|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
各位好,

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

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

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

谢谢

使用特权

评论回复
评论
cooldog123pp 2023-7-24 12:41 回复TA
要 
xch 2023-7-23 13:23 回复TA
哪个型号MCU? 

相关帖子

沙发
tyw| | 2023-7-23 12:09 | 只看该作者

使用特权

评论回复
板凳
jobszheng| | 2023-7-23 14:24 | 只看该作者
从理论上,对于写入EEPROM的操作应当在一个中断保护区域内完成。
但在我的实践中,由于其它中断的处理时间,占用时间较少,对于低速的I2C操作的影响很小,所以,我也没有在EEPROM读取与写入操作中使用保护区来保护。

使用特权

评论回复
地板
cjseng| | 2023-7-23 14:48 | 只看该作者
看这几个参数,受中断影响,不超过最大值即可,用IO模拟,肯定不会超过最大值。

使用特权

评论回复
5
天意无罪| | 2023-7-23 17:43 | 只看该作者
中断和导致写EPPROM失败没有关系,出现这样的原因也是程序问题。

使用特权

评论回复
6
delin17| | 2023-7-23 19:05 | 只看该作者
原因基本是这样,模拟I2C通信,GPIO一般是或、&。
但在很多单片机,这不是原子操作。 要先读出来,再写入。
这个时候,如果中断里也进行对应口的操作,例如:I2C用的是PA口中的IO,中断里有操作PA的其他口。这个时候,可能出现I2C的当前对IO的操作产生非预期的结果,导致I2C通信不对。

但大部CM0产中,你可以通过BRR,BSRR来进行IO一个位的原始操作,所以不会存在这个问题。

使用特权

评论回复
7
一叶倾城wwq| | 2023-7-24 08:50 | 只看该作者
外挂的不用关,保证时序是对的就行。

使用特权

评论回复
8
gaoyang9992006| | 2023-7-24 08:52 | 只看该作者
为何不使用硬件I2C,如果有中断打断,建议使用硬件的,这样可以避免读写打断。不过根据I2C协议为差分格式,打断的话也应该不会影响数据完整性。

使用特权

评论回复
9
mcu5i51| | 2023-7-24 09:08 | 只看该作者
多数芯片不受信号打断影响,就是说你可以用两个无干扰的开关纯手工写入时序,只要注意中断中不要干扰IO和数据就行,只有频率上线,没有下限

使用特权

评论回复
10
datouyuan| | 2023-7-24 09:33 | 只看该作者
本帖最后由 datouyuan 于 2023-7-24 09:52 编辑

我试过在24C04读写期间插入多个任意延时(5uS~2秒),都能正确读写,说明iic只要求时序,对时间没啥要求,不需要关闭中断。
在iic操作期间发生中断,并且该中断也要操作iic,这时才会有问题。

使用特权

评论回复
11
nvjwiciw659| | 2023-7-24 11:31 | 只看该作者
jobszheng 发表于 2023-7-23 14:24
从理论上,对于写入EEPROM的操作应当在一个中断保护区域内完成。
但在我的实践中,由于其它中断的处理时间 ...

偶遇jobs大佬

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

52

主题

123

帖子

1

粉丝