社区
嵌入开发(WinCE)
帖子详情
i2c读问题--两次结果不一样
qhsjcyc
2008-06-15 11:39:09
大家好,我这边有个芯片接在i2c总线上,我用i2c读写接口向从设备某块区域写数据,然后读出,看有没有写进去。
但奇怪的是第一次读出来是对的,再读一次就不对,再读一次又是对的.....。
总个情况就是:
第一次读结果是对的
第二次读结果是错的
第三次读结果是对的
第四次读结果是错的
..............
请问大家这是怎么回事? 有没有人遇到这种情况,帮忙分析一下
...全文
2022
10
打赏
收藏
i2c读问题--两次结果不一样
大家好,我这边有个芯片接在i2c总线上,我用i2c读写接口向从设备某块区域写数据,然后读出,看有没有写进去。 但奇怪的是第一次读出来是对的,再读一次就不对,再读一次又是对的.....。 总个情况就是: 第一次读结果是对的 第二次读结果是错的 第三次读结果是对的 第四次读结果是错的 .............. 请问大家这是怎么回事? 有没有人遇到这种情况,帮忙分析一下
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
kidhuang
2008-06-25
打赏
举报
回复
通常都是因为时序问题~硬件很麻烦的~~不像软件那样可以自己虚拟一下时序或者接口改动~小弟也在头痛这个i2c的问题
ly_liuyang
2008-06-24
打赏
举报
回复
I2C的时序要求并不严格的~
简单点,如果你有泰克DPO3000/4000的示波器就能直接在示波器上看到I2C的全部过程和数据(机器具备数据流分析记忆功能,特好用的)
没这个新设备(便宜型号的都8万多一台,贵一个字,不过绝对是嵌入式开发的好东东,叫你Boss买台来用啦~呵呵)~那就用传统的示波器慢慢看~一个词"效率低下"
shuiyan
2008-06-16
打赏
举报
回复
其实,用一个双通道示波器抓波形解决问题会最快了。以SCL为触发源,以SDA为追加。
1. 成功通讯的一次波形,从IIC的START开始,到STOP结束。
2. 错误通讯的一次波形,从IIC的START开始,到STOP结束。
3. 两个波形图片进行对比,肯定能看出差异的。
yangb2014#
2008-06-16
打赏
举报
回复
1、循环读某一个寄存器,用示波器看波形;
2、上电不做任何配置,很多寄存器都是有默认值的,看读出来对不对,有什么规律;
slyzhang
2008-06-15
打赏
举报
回复
4、5喽说的对 这些波形需要在示波器下看才能明白到底哪里出问题了。
我测试过几个I2c的片子,一般情况下 I2C 问题归结为以下几种:
1、datasheet 有明确的I2c的波形要求,明确说明不能有任何偏差。
这种情况必须严格按照波形要求对照, 哪怕是3ns的误差都是不对的,建议将pdf 的波形放大几倍后看。
问题是, 他们技术人员明确要求《严格照波形实现》,但IC的本身设计却和这个波形有误差。
我遇到这个情况,前后搞了10几天,崩溃了都不对, 原因是 最后一个读到的数据 不需要发送ACK,而pdf上面明确有一个ACK波形。
原因:
pdf和实际的IC设计存在误差,国内外芯片厂家都经常发生这种问题
2、有些I2C 使用CLK的上升沿触发数据,有的需要在下降沿处理ACK 方向变化,这种也许是我没有明白 这数据线的方向变化到底在CLK低电平变呢 还是在CLK高电平变,(那位明确的话,请指点。) 不同的芯片也许对这个要求不同。
3、对多个I2c 的 芯片挂载在一起没有处理总线仲裁问题,也会导致开始、停止位没有明确实现的问题。
数据访问过程中,CLK线的释放可能会导致其他I2C设备占用资源。
解决办法:
1、优先使用示波器对波形是否正常。特别是开始、起始位、响应位。
2、对照pdf看是否有出入。
3、再不行就找芯片技术支持工程师,一般这里不同的芯片有一些“诀窍”,特别是国内的公司。
sandmangu
2008-06-15
打赏
举报
回复
用示波器抓一下波形吧 这种情况看软件代码意义不大 还是从硬件入手比较容易
shuiyan
2008-06-15
打赏
举报
回复
读出错的这次,每次错的都一样吗?
读代码及调用此函数的代码发一下。
还有,试过用示波器或者逻辑分析仪抓过波形看过吗?其实,只要一个双通道的示波器就行了。
qhsjcyc
2008-06-15
打赏
举报
回复
请各位高人再帮忙解释一个这是怎么回事?
qhsjcyc
2008-06-15
打赏
举报
回复
谢谢楼上的朋友的回复,
我试了读写芯片中供读写测试的区域,那个是正常的,所以i2c读写接口是没问题的,别的地方也没有改动数值。
只是不太明白为什么读出的数据会成这样的规律变化:读一次对的,再读一次就是错的,再读一次又是对的,.......然后成这样规律
载舟之水
2008-06-15
打赏
举报
回复
这很正常,要么就是i2c读写的代码有问题,要么就是这个芯片会自己改动或被别的地方改动了数值。
一般验证的话,可以试试看读那些只读的地方,比如芯片版本号之类的,来验证代码问题。
ASTM E831-25.rar
ASTM E831-25.rar
Long-Horizon-Task-Checkpoint-Quota-Simulator-v1.0-原创源码与文档.zip
原创本地工程工具合集,每个资源均包含独立源码、README、MIT License、原创与授权声明、3项自动化测试、可复现合成示例、离线 JSON、HTML、SVG 报告及 1080×720 真实运行截图。Node.js 18+ 可直接运行,适合开发者进行工程预检、数据校验和证据留档;不包含第三方项目源码、模型权重、官方素材或账号数据。
jdk8888888888888
jdk888888888888888888
Windows Word精灵插件 - 增强辅助软件,支持Office和WPS
代码下载地址: https://pan.quark.cn/s/8236006bf1f9 Word精灵插件:一款用于增强Microsoft Word功能的辅助软件,能够将多种复杂功能转化为插件形式,并在软件状态栏中进行展示,涵盖诸如批注管理、表格处理、内容替换、文档拆分、数学运算、字符提取、批量重命名等多项实用工具。在工作环境中应用该插件能够显著降低工作强度,提升操作效率。Word精灵插件兼容32位与64位的Microsoft Word版本,支持Word 2007、2010、2013以及Word 2016操作系统,但不适用于Word 2003版本。此外,该插件同样支持WPS办公软件。 功能概述: 1、表格自动调整宽度:自动优化文档内所有表格的显示宽度。 2、批量导出批注信息:将文档内所有批注集中导出到Excel工作簿中。 3、表格至Excel多表导出:在将表格导出到Excel时,每个Word表格将独立存放在一个工作表中,Word文档内的表格数量与Excel生成的工作表数量相等,并附有工作表目录。 4、表格至Excel单表导出:将文档内所有表格整合后导出到一个Excel工作表中,多个表格将按顺序排列于同一工作表内。 5、统一图片分辨率:对指定文件夹内的所有图片进行分辨率标准化处理。 6、图片批量缩放:依据设定比例对图片进行放大或缩小,支持按百分比调整。 7、图片批量插入:将图片批量插入到当前文档,可选择图片名称的展示形式,并设定图片的高度。 8、图片格式统一转换:将指定文件夹内的所有图片转换为相同的文件格式。 9、内容批量替换:对文档内容、页眉及页脚执行批量替换操作,例如将数字1替换为字母A,数字2替换为字母B,数字3替换为字母C等。 10、图片批量导出:将文档内所...
嵌入开发(WinCE)
19,524
社区成员
41,565
社区内容
发帖
与我相关
我的任务
嵌入开发(WinCE)
硬件/嵌入开发 嵌入开发(WinCE)
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章