[嵌入式学习]问题解决(I2C通信连续写入读取导致失败)

正在跟着课程学习I2C通信协议,已完成一个数据写入,目标是写入一个数据后读取一个数据。

写代码的时候设置了错误代码。(错误代码6)

检查了一下,发现写入数据成功了,即写入时序完成,读取失败。

读取的时序与写入的时序是有区别的:写入的话,通信一次即可完成,即32作为发送设备,发送一次数据;读取操作,32要先作为发送设备,发送一次设备内需要读取数据的地址,再作为接收者,接收一次数据,通讯结束。

这次错误代码的位置是在,写入操作完成后,开始读取时序,开始发送设备内需要读取数据的地址,这个时候设备未响应。

老师分析,这是因为写入时序完成后,32这边完事了,但是EEPROM那边还没结束操作,当时正忙,所以读取时序开始,32发送设备地址后,EEPROM未响应。

解决方法:思路是等EEPROM完成当前的操作,所以写一个循环,重复发送I2C起始信号、等待响应、发送设备内地址,这个操作,如果EEPROM响应了,那就说明EEPROM完成了当前的操作,就可以开始读取操作了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值