在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 7802|回复: 12

[原创] I2C 频率不准问题的解决过程

[复制链接]
发表于 2016-3-23 11:39:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 atomdust 于 2016-3-23 11:42 编辑

现象描述:


设计实现一个I2C master,系统时钟为32MHz,支持200k,400k,3.4MHz,测试时发现,当设置I2Cmaster的为高速模式(3.4MHz,实际测量频率只有2.67MHz。代码仿真没有问题,具体解决过程请参考附件。 IIC master频率偏低的问题.docx (101.76 KB, 下载次数: 112 )
发表于 2016-3-23 19:49:42 | 显示全部楼层
不错的经验
发表于 2016-3-23 21:13:20 | 显示全部楼层
没怎么看明白。SCL上升时间太长的话,应该只影响占空比啊,为什么会影响频率呢。想不通。
发表于 2016-3-23 23:03:19 | 显示全部楼层
多谢分享
发表于 2016-3-25 09:08:34 | 显示全部楼层
好经验,可能是硬件问题
楼上说的也是对的,频率应该是不变的,只影响占空比,可能还没稳定就到下降沿了,会导致不稳定,频率应该是没有问题的。不知道你测得为什么会影响频率
发表于 2016-4-11 22:09:40 | 显示全部楼层
好的经验,值得借鉴。
发表于 2016-4-12 16:18:36 | 显示全部楼层
上升下降时间其实并不会影响SCL的频率,应该是楼主的设计存在问题。
I2C master的设计,SCL以及SDA都是在系统时钟32M下产生的,如果32M是精准的,那就是你用于产生SCL高低电平的计数器数值不合理。
另外,从PAD的I端进来的scl_i以及sda_i信号,都需要用32M时钟debounce几个周期以达到滤波目的。
最后,即使SCL上升时间较长,根据I2C协议,在SCL由0变1过程中,SDA应该要求是稳定的,用32M时钟在SCL上跳沿时去抓取的SDA数据也就是稳定的,并不会由于SCL上升时间较长导致通信出错。
 楼主| 发表于 2016-4-25 11:04:49 | 显示全部楼层
本帖最后由 atomdust 于 2016-4-25 14:54 编辑

回复 7# 杰克淡定

代码设计中,为了消除亚稳态,对SCL和SDA都采用打两拍处理,但如果外面不对SCL的下降沿处理,就会出错。
究其原因,可能是因为SCL和SDA的下降沿的斜率相差太大,导致在SCL的下降沿没有采集到正确的SDA,造成内部采样值出错。
发表于 2016-4-25 17:35:35 | 显示全部楼层
回复 8# atomdust

SDA应该在SCL的上升沿去采才是稳定的,不是下降沿……
 楼主| 发表于 2016-4-26 09:19:00 | 显示全部楼层
回复 9# 杰克淡定

恩,我的表述错误,是因为SCL下降沿的倒钩,使得I2C master误以为来了上升沿。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

×

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-28 16:21 , Processed in 0.028823 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表