- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
熟悉mtk硬件设计的请进,关于GPIO的上拉电阻问题
注:
我的板子上使用了gpio2,3来模拟i2c时序,读基带外围一个i2c接口的片子的ID号总读不出来,I2C时序产生的函数是MTK代码里原有的(custom/audio/xxx/6188.c),只是平台从原6223移到了6228,该文件里也针对28/29等高速平台每个时序操作之间加了dummy 延迟宏,应该时序是没问题,
没有做过这块硬件的同志吗?
来个行家啊~ !
如果你接的模拟I2C接口内部是上拉了电阻,那么你FAIL的原因很有可能是时序问题,可以考虑将I2C速度放慢。
如果你接的模拟I2C接口内部是下拉了电阻,或者是一个上拉一个下拉,这样则不构成I2C的基础条件,因为标准的I2C器件是开漏输出,对于你的主芯片不存在输出的问题,但是如果是输入的话则没有可能获得高电平。解决的方法是外部加上拉电阻。
I2C总线是需要接4.7K上拉电阻的
要检查一下你的GPIO口
I2C电路是开漏极电路,是需要上拉电阻的。
上拉电阻和总线电容构成充放电电路。阻值的大小和你I2C挂的设备多少(电容大小有关)以及速率大小(时序有关)都有关系。
S3C2410 GPIO口模拟,是不是使能我们的上拉电阻就OK了么?
遇到这样一问题是:没有办法确定从即是否收到我发送的数据---从机的IIC地址
因为从机没有做出响应,即将SDA拉低----我想请问下这是什么问原因?
I2C电路是开漏极电路,是需要上拉电阻的。
速度再调慢点(延时加长)
器件地址没写错吧!
芯片SPEC里面讲的GPIO0--GPIO3 列出的上/下拉电阻的min,type,max值,是芯片内部集成的上下拉电阻,如果用内部上拉的GPIO的模拟IIC,可以不用外部再加上拉电阻,如果是下拉的,建议外部上拉4.7K电阻。
上下拉一定要正确,这才是王道。
芯片内部的电阻都是硅氧化的来的,一半精度很低,所以有一个很大的范围。
高精度的电阻可以用激光来微调,不过成本会高很多,对于一般的应用也没有这个必要。
I2C是开漏输出,上拉太大会导致电流驱动不够,信号接受不到或不稳定
一般的i2c的上拉小于20K,4.7K是个比较常用的值