野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 13039|回复: 5

关于I2C-EEPROM读取程序的一些不解

[复制链接]
发表于 2014-12-2 11:24:59 | 显示全部楼层 |阅读模式
本帖最后由 inkfishg 于 2014-12-2 11:50 编辑

1.png
读取程序中有一段是这么写的,
那么意思就是,若要读取NumByteToRead个数据,先依次读取前面的NumByteToRead-1个数据,然后在最后一个字节的时候先“非应答+停止”,最后再读取最后一位字节数据;NumByteToRead == 1的时候先执行上面的if,再执行下面的if。
经单步执行验证确实是这个顺序执行的,调试仿真的结果也是对的。可是主接收的序列图不是这样的吗(下图),不是“读取完数据+非应答+EV7+停止”吗?停止不是在最后吗?怎么理解呢?求大神指点!(不要删我贴啊。。。真心求教啊)
I2C主接收器序列图.png

回复

使用道具 举报

发表于 2014-12-2 15:31:47 | 显示全部楼层
这个程序就是实现了停止在最后呀,你看停止信号的语句放在前面就以为它是先执行么?只有numbytetoread=1时,也就是剩下最后一个数据才执行
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-12-4 14:35:19 | 显示全部楼层
flyleaf 发表于 2014-12-2 15:31
这个程序就是实现了停止在最后呀,你看停止信号的语句放在前面就以为它是先执行么?只有numbytetoread=1时 ...

本来没觉得是这样的,但是我单步运行的时候发现当NumByteToRead=1时就是先执行if语句里的,然后下面那个if也是成立的,也执行了;如果没执行的话就只读了NumByteToRead-1个数据出来,就是因为NumByteToRead=1也执行了下面这句if才读出了最后一个数据,也就是NumByteToRead=1时的数据;怎么破?要不你试试???
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-12-5 11:03:08 | 显示全部楼层
求大神给解释一下到底怎么回事啊???
回复 支持 反对

使用道具 举报

发表于 2015-3-16 18:05:29 | 显示全部楼层
我也纳闷  请问  你这个问题解决了吗 赐教下
回复 支持 反对

使用道具 举报

发表于 2015-3-16 19:17:17 | 显示全部楼层
你好  我貌似找到了一些有头绪的东西
1.jpg
2.jpg
3.jpg
4.jpg
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-12-29 09:26 , Processed in 0.033090 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表