I2C eeprom调试经验

本文作者分享了在STM32C8T6上使用I2C与Atmel EEPROM通信时遇到的调试难题,包括错误的读写操作、连续读写的理解误区以及查询写入结束时的死机问题。通过详细分析和实践,作者发现官方例程中的问题并提出了相应的解决策略,强调了仔细阅读文档和理解I2C协议的重要性。
摘要由CSDN通过智能技术生成
在写本文之前我不得不痛批ST的comtex-M3的I2C做得实在是太烂了!就这样一个简简单单的I2C,需要无数多的配置,无数多的寄存器,无数多的标志位,难道ST的目标就是把简单的东西复杂化么?复杂了就难用。另一方面,ST官方给的I2C eeprom例程中while死等的语句比比皆是,本来I2C就做得复杂,还四处布满死等代码,很容易在使用中让系统死机。

言归正传,前边的抱怨也是我调试I2C的起因。查过很多资料,普遍对于STM32I2C的在产品(不是实验室)中的使用表示需要谨慎,陷阱很多,bug很多。前前后后折磨了我估计有一个月吧,心里始终觉得官方的东西应该还是要好点,所以一直将就官方的代码在用,直到我的系统莫名奇妙的死机,究其原因是I2C操作引起为止,终于下定决心还是用模拟I2C。

目标平台是STM32C8T6+atmel的eeprom,通信总线为串行I2C总线。

调试过程遇到的问题:
1.字节写操作正常,但是字节读函数出错
原因:一厢情愿的认为写eeprom是在七位器件地址后添加写标志,则读eeprom也应该在七位期间地址后添加读标志,而事实上读eeprom也是在七位地址后添加写标志。

2.断续单字节读写正常,但是采用连续的单字节读写出错。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值