完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
我正在使用STM32f030c8在24c04开发用于I2C eeprom的库。我的读写功能有效,但是当我在写入eeprom后立即尝试读取时,eeprom doest会返回任何数据。但是我可以马上连续写一下。只有在写入语句后才能读取问题。我尝试启用和禁用I2C使能位,但问题仍然存在。有人可以告诉我这是什么问题吗
|
|
相关推荐
6个回答
|
|
你是否进行过任何检查以确保在如此快速地阅读之前完成写入?
|
|
|
|
我确实尝试过数据表中提到的确认轮询。甚至延迟。但结果是一样的
|
|
|
|
I2C2_StartWrite做什么?你是否了解使用I2C写入和读取的确切顺序?
|
|
|
|
我添加了I2C2_StartWrite和I2C2_StartRead函数。我从教程和数据表中开发了代码。我相信我遵循正确的方法因为我能够单独写作和阅读。我遵循数据表中显示的i2c循环。
|
|
|
|
我将读取功能修改为两个周期,一个写入加载读取地址和一个当前地址读取。它现在正在工作。但是我不确定为什么数据表中提到的随机地址读取周期不起作用。
|
|
|
|
看起来你没有等待EEPROM完成写入。我没有看你的EEPROM,但是对于我曾经使用过的所有EEPROM,写入或擦除序列只会启动动作,然后EEPROM忙了一段时间。
大多数EEPROM都有类似状态寄存器的地方,你可以在其中进行轮询以查看它是否正忙。无论是否繁忙,都可以执行该读取操作。 最通用的软件架构总是在尝试执行任何操作之前轮询忙碌位。如果EEPROM忙,它会继续轮询,直到它没有,然后继续执行所请求的任何操作。更复杂的实现在写入和擦除时设置标志,表明EEPROM可能正忙。只有在设置此标志时才会进行繁忙检查。天真的实现总是在擦除或写入后等待。 仔细查看你的代码,特别是当写入后立即读取时,确切地发送到EEPROM。我的猜测是,在这种情况下,繁忙的检查会以某种方式被忽略。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
STM32串口接受中断使用C++STL中的queue导致所有中断失效
5843 浏览 1 评论
3002 浏览 0 评论
STM32配合可编程加密芯片SMEC88ST的防抄板加密方案设计
1322 浏览 0 评论
3844 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
3678 浏览 4 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-2-11 17:14 , Processed in 0.749826 second(s), Total 83, Slave 67 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191