搜索
bottom↓
回复: 18

小弟在此求教一个I2C的问题

[复制链接]

出0入0汤圆

发表于 2013-6-13 19:04:30 | 显示全部楼层 |阅读模式
最近在做一个项目,卡在I2C通讯这边了,希望有人能帮我指点一下。
1、软件模拟I2C;
2、一个主机,两个从机;
3、主机电源是3.3的,从机都为5v
4、主机与从机连接的通信线串接100欧姆电阻
5、其中一个从机有响应,另外一个无响应,确定无响应器件正常。
6、使用逻辑分析仪观察波形正常,就是无ACK返回。
7、使用主机硬件I2C驱动,均正常。

麻烦高手帮我分析下会是什么原因?

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出20入22汤圆

发表于 2013-6-13 19:17:18 | 显示全部楼层
主机的延时不准?

出0入0汤圆

 楼主| 发表于 2013-6-13 19:20:30 | 显示全部楼层
您具体指哪边的延时? 从机速度都设置在400K的  我的模拟时钟也就125K。

出0入0汤圆

 楼主| 发表于 2013-6-13 19:21:14 | 显示全部楼层
gyzzg2030 发表于 2013-6-13 19:17
主机的延时不准?

您具体指哪边的延时? 从机速度都设置在400K的  我的模拟时钟也就125K。

出0入0汤圆

发表于 2013-6-13 19:31:51 | 显示全部楼层
既然硬件的正常,那就用示波器抓下来对比一下好了。

出0入0汤圆

发表于 2013-6-13 19:32:25 | 显示全部楼层
CPU引脚注意要配置为开漏输出模式

出20入22汤圆

发表于 2013-6-13 19:33:49 | 显示全部楼层
主机这边啊,一个从机可以一个不行,可能主机的延时跟一个从机的误差大,而硬件正常说明从机没什么大的误差

出0入0汤圆

 楼主| 发表于 2013-6-13 20:02:20 | 显示全部楼层
channe 发表于 2013-6-13 19:31
既然硬件的正常,那就用示波器抓下来对比一下好了。

对比过了,软件模拟的速度肯定慢点,但是基本的时序都是一样的,也看不出什么问题来。

出0入0汤圆

 楼主| 发表于 2013-6-13 20:03:07 | 显示全部楼层
gyzzg2030 发表于 2013-6-13 19:33
主机这边啊,一个从机可以一个不行,可能主机的延时跟一个从机的误差大,而硬件正常说明从机没什么大的误差 ...

从机都是硬件I2C。

出0入0汤圆

 楼主| 发表于 2013-6-13 20:04:38 | 显示全部楼层
channe 发表于 2013-6-13 19:32
CPU引脚注意要配置为开漏输出模式

这个cpu无法设置管脚状态,属于弱上拉。

出0入0汤圆

发表于 2013-6-13 20:49:12 | 显示全部楼层
本帖最后由 deedeezi 于 2013-6-13 20:53 编辑

楼主你的2个从机是一样的吗?IIC通讯,永远只有1个从机和主机通讯,不和能有2个从机或以上和主机通讯的。。主机发一个地址,对应从机会有响应,其他不是的不会响应。。如果需要和其他器件通讯,只能以一个一个来。。
编辑修改原因:修改错别字

出0入96汤圆

发表于 2013-6-13 21:06:43 | 显示全部楼层
检查一下从机地址是否一样?

出0入0汤圆

发表于 2013-6-13 21:59:27 | 显示全部楼层
模拟I2C的软件包确定正确?

出0入0汤圆

发表于 2013-6-13 22:24:03 | 显示全部楼层
zjw2012 发表于 2013-6-13 20:04
这个cpu无法设置管脚状态,属于弱上拉。

弱上拉可能会导致电平问题,总线电压不够。

出0入0汤圆

 楼主| 发表于 2013-6-15 21:38:39 | 显示全部楼层
deedeezi 发表于 2013-6-13 20:49
楼主你的2个从机是一样的吗?IIC通讯,永远只有1个从机和主机通讯,不和能有2个从机或以上和主机通讯的。。 ...

是的 我是分时操作的。不同地址。

出0入0汤圆

 楼主| 发表于 2013-6-15 21:39:09 | 显示全部楼层
逆流而上 发表于 2013-6-13 21:59
模拟I2C的软件包确定正确?

是正确的 这个确认过

出0入0汤圆

发表于 2013-6-15 21:45:03 | 显示全部楼层
楼主可以单独接这个不正常的来调试,降低速度,I2C理论上可以无限低的速度
此外,要看看你的电路
是否有上拉电阻,电阻取值怎么样
示波器测量,看SCK是否有抖动,或者上升下降时间是否过长

出0入0汤圆

 楼主| 发表于 2013-6-15 21:48:53 | 显示全部楼层
感谢大家的关注,问题查出来了,在此阐明一下问题所在,希望大家以后也注意一下。
首先,无响应的器件无法识别3.3V电平为高电平,后来解决电平问题后,又发现主机在输出1时,无响应从机输出的0无法将主机的1拉到低电平电位,后来将主机输出改为输入(高阻)利用外部上拉将总线拉至1,此时从机可顺利将总线拉低。
总结一下,主机利用IO高阻当作1,输出模式只输出0.问题解决,问题也归结于我没有仔细看从机的电气属性,从机驱低能力弱,电平识别范围窄。
再次感谢大家参与!

出0入0汤圆

 楼主| 发表于 2013-6-15 21:55:07 | 显示全部楼层
xiaobenyi 发表于 2013-6-15 21:45
楼主可以单独接这个不正常的来调试,降低速度,I2C理论上可以无限低的速度
此外,要看看你的电路
是否有上拉电 ...

谢谢,你说的也都是要点,这些我都注意过了,问题以查明,请看楼上自述。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 16:16

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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