社区
嵌入开发(WinCE)
帖子详情
i2c读问题--两次结果不一样
qhsjcyc
2008-06-15 11:39:09
大家好,我这边有个芯片接在i2c总线上,我用i2c读写接口向从设备某块区域写数据,然后读出,看有没有写进去。
但奇怪的是第一次读出来是对的,再读一次就不对,再读一次又是对的.....。
总个情况就是:
第一次读结果是对的
第二次读结果是错的
第三次读结果是对的
第四次读结果是错的
..............
请问大家这是怎么回事? 有没有人遇到这种情况,帮忙分析一下
...全文
2002
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读写的代码有问题,要么就是这个芯片会自己改动或被别的地方改动了数值。
一般验证的话,可以试试看读那些只读的地方,比如芯片版本号之类的,来验证代码问题。
I2C
驱动(四) --
I2C
-Tools介绍
I2C
-Tools介绍和使用
i2c
_msg浅析
i2c
_msg浅析 在学习
i2c
设备驱动的时候,不经意间发现一个关于结构体
i2c
_msg的
问题
,查阅了两天的资料,发现网上基本说的都差不多,当时不理解,以为别人说的不对,理解之后发现都是对的,只是当时不懂。为了防止有小伙伴和我一样钻牛角尖,白白耽误时间,就大概说一下,当然了,我也是在学习的过程中,难免会有些地方说的不对。
i2c
的
读
写时序讲解 在讲解之前,先大概介绍以下
i2c
的
读
写时序
问题
,当然了,都学到
i2c
了,时序肯定也懂了,我也就不细讲了,主要是需要配合时序图进行后面
i2c
_msg的讲解。
i2c
的
读
I2C
Bit-Bang 程序分析
一、Bit Bang关于 Bit Bang 的解释:Use software to control serial communication at general-purpose I/O pins,简单来讲就是使用软件通过 IO 脚去实现
I2C
的时序从而使用
I2C
协议进行通信。这样做的好处是可以突破硬件上的限制,例如芯片不具有硬件
I2C
模块,或者硬件
I2C
模块损坏,又或者使用硬件 I
Jetson Nano
I2C
读
写寄存器
Jetson Nano
I2C
读
写寄存器1、Nano
I2C
简介2、Nano
I2C
硬件环境搭建3、Nano
I2C
软件环境搭建3.1、安装
I2C
-Tools3.2、
I2C
-Tools使用3.2.1、
i2c
detect3.2.2、
i2c
dump3.2.3、
i2c
set3.2.4、
i2c
get3.2.5、
i2c
transfer4、总结 1、Nano
I2C
简介 写下这篇博文,只为记录下我调试
I2C
的过程及遇到的
问题
,算是笔记,也希望能给博友们提供一些帮助。 2、Nano
I2C
硬件环境搭建 下图是
Linux 设备驱动篇 -
I2c
设备驱动
Linux设备驱动篇之
I2c
设备驱动 fulinux 一、
I2C
驱动体系 虽然
I2C
硬件体系结构和协议都很容易理解,但是Linux
I2C
驱动体系结构却有相当的复杂度,它主要由3部分组成,即
I2C
设备驱动、
I2C
总线驱动和
I2C
核心。 1.
I2C
核心
I2C
核心是
I2c
总线和
I2c
设备驱动的中间枢纽,它以通用的、与平台无关的接口实现了
I2C
中设备与适配器的沟通,提供了
I2C
总线驱动和设
嵌入开发(WinCE)
19,524
社区成员
41,565
社区内容
发帖
与我相关
我的任务
嵌入开发(WinCE)
硬件/嵌入开发 嵌入开发(WinCE)
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章