找回密码
 注册
搜索
查看: 2536|回复: 18

[讨论] MT6353上为什么I2C从一开机就开始有效了?

[复制链接]
发表于 2010-12-17 14:21:22 | 显示全部楼层 |阅读模式
MTK53平台上, 一开机I2c总线就开始有效了, 一直保持高电平。 导致待机的时候底电偏大,
如何能让他开机时候I2C不使能呢?
我配置GPIO也不管用, 不知道开机时候它在哪里把I2C使能起来了
高手有什么好办法呢ya
发表于 2010-12-21 10:17:02 | 显示全部楼层
其实很简单,有I2C操作时,先VCAM上电,操作完关闭VCAM, SDA / SCL拉低就OK.
说白了就是上拉需要软件控制,而不像直接上拉到VDD
点评回复

使用道具 举报

发表于 2010-12-21 09:27:08 | 显示全部楼层
你可以在 gpio_drv.c 里将 gpio 拉低的!
点评回复

使用道具 举报

发表于 2010-12-20 20:11:34 | 显示全部楼层
呵呵,看明白你说的了,你们硬件怎么会这么接?

  如果你camera的IIC没有跟其他外设共用,还是可以有办法修改的,你现在

的现象就是开机时,初始化IO口时camera的Power引脚为低,但IIC输出为高,

这样就会导致SDA和SCL两根线通过上拉电阻给camera的Power引脚供电,导致

虽然camera在关闭状态,但实际已经被激活了,从而导致的漏电,这种漏电

就不止1个mA那么小了

   
    如果你的cameraIIC没有共用,单独用的话,你可以在开始初始化IO口时

  把他们配置为下拉,不管硬件IIC还是软件IIC,都可以这么配置,这样在你

  开机不启用camera的情况下进入休眠模式,是不会漏电的,因为Power为低,

  SDA和SCL也为低,上拉电阻就无电流通过,也就不会漏电;但打开camera的

  时候就需要先上电Power脚,然后初始化一下SDA和SCL,这样就可以正常使

  用了;另外在你关掉camera的时候,先把camera置为低,然后Power为低,

  这样以后的电流就跟camera这块无关了,仅供参考[em08]
点评回复

使用道具 举报

发表于 2010-12-20 15:37:04 | 显示全部楼层
hobby兄真是大好人[em16][em16][em16]
点评回复

使用道具 举报

 楼主| 发表于 2010-12-20 13:05:29 | 显示全部楼层
Hobby哥又给我讲解了, 太感动了。 你真是我们学习的榜样啊~~
我那个IIC输出的可能用“有效”这个词不太恰当。 我现在的情况是想让他什么都不输出,就如设置成GPIO然后写0。
因为现在这个硬件上做的可能有点问题, 摄像头的IIC的上拉不是用VCC, 而是接到Camera的工作电压上了(当然其他设备不是用这个上拉的)。这样开机的时候Camera的电压脚没有输出, 但是IIC上输出2.8V, 他通过上拉的电阻对Camera的电压脚有漏电了。所以我现在是希望Camera工作之前,IIC这两个PIN脚上电压为0。不知道开机过程中哪里设置这个。
另外, 我现在把设置管脚写0的操作写在待机灭屏的函数里了, 底电是可以下去的。 如果找不到更好的办法, 就只能用这个方法了
点评回复

使用道具 举报

发表于 2010-12-20 10:05:49 | 显示全部楼层
4楼解析的很好!学习了。
点评回复

使用道具 举报

发表于 2010-12-19 18:00:32 | 显示全部楼层
4楼 好人
点评回复

使用道具 举报

发表于 2010-12-19 11:29:59 | 显示全部楼层
四楼解析的不错,值得学习。谢谢!
点评回复

使用道具 举报

发表于 2010-12-18 22:06:25 | 显示全部楼层
4楼的兄弟解析得很好,很有条理[em08]
点评回复

使用道具 举报

发表于 2010-12-18 10:16:42 | 显示全部楼层
IIC的状态为高,应该是无效啊,用完IIC之后一般会把sda和scl置为高

  这个可以查看sch图,看用到IIC的外设器件有哪些?

  比如FM、ATV、BT等等,查看这些外设的操作接口,在初始化和配置的时候

  是否是配对的,一般在close和sleep的时候,会关掉IIC的,两个口置为高
  
  外加上拉,是不会漏电的

  另外,如果怀疑IIC漏电,可以查看上拉电阻值,一般是10K,就算高电平

  漏电,2.8V的电压,一条线漏电0.28mA,两条加起来也才0.56mA,如果你

  的漏电电流远远比这个大,比如10mA,那应该不是这两条线漏的电


  还有一个重要原因,就是方向的问题,你是在什么情况下漏电的,比如开机

  休眠就漏电;或者你操作了什么之后才漏电,比如打开FM后,然后退出,

  机器休眠,就会漏电,这就跟FM相关;确定的方向,再查原因应该就easy

  一些了

  
   你的IIC如果从示波器来看,从开机过程到完成,一直都是高的话,说明

   你的IIC是无效的,也就是那些需要靠IIC来完成开机初始化的外设就没有

   初始化,也就不能正常工作,至少有波形,才能确定你的IIC被调用过,

   而不管是对是错,呵呵
点评回复

使用道具 举报

 楼主| 发表于 2010-12-17 19:03:56 | 显示全部楼层
drv_tool里没有拉高, 试了几次感觉是Drv_tool里配置I2C的两个脚改来改去都不起作用。 可能在开机启动过程里有哪个地方把I2C给配置了一下吧。
点评回复

使用道具 举报

发表于 2010-12-17 17:30:49 | 显示全部楼层
你最好先看下是不是在drv_tool里把I2C拉高了
点评回复

使用道具 举报

发表于 2010-12-24 11:29:26 | 显示全部楼层
gpio_drv.c 里将 gpio 拉低的!
点评回复

使用道具 举报

 楼主| 发表于 2011-1-13 15:25:52 | 显示全部楼层
继续谢谢各位了,真是好多有意思的情况啊
[em14]
点评回复

使用道具 举报

发表于 2011-1-13 13:50:06 | 显示全部楼层
LZ和我前段时间碰到的问题是非常像的

硬件硬说我们驱动在退出TV时把SCL  SDA置高导致灌电流!待机功耗大。

我当时坚决认为不是这样的,因为I2C不起作用时,按协议是要BOTH 为高电平的。


我们做了很多实验,包括硬件的,这个就不说了,因为后来确定不是硬件问题

我人为在退出TV的时候,设置SCL SDA为低,刚开始是低了,但是不久马上自动为高电平了

这个时间点就是LCD 进入SLEEP的时候。

然后我就去查LCD进入SLEEP到底做了什么

发现轨迹球的代码没有完全封掉(前一项目的软件小组写代码GPIO直接用数字的,而且轨迹球的代码有部分没有加宏开关,导致虽然宏关闭了,但是轨迹球模块对GPIO的设置还是起作用的,和我们的SCL  SDA脚正好用的是同一些PORT)

但愿对LZ有帮助,不良编程风格害死人啊

添加轨迹球宏后,待机电流马上正常。
点评回复

使用道具 举报

发表于 2012-2-14 12:12:19 | 显示全部楼层
学习了[em06]--
点评回复

使用道具 举报

发表于 2012-3-31 02:16:46 | 显示全部楼层
不一定是IIC这边漏电,有可能是你在对挂在IIC上的设备进行初始化后,没有关闭。很有可能没有将camra关闭造成漏电。
点评回复

使用道具 举报

发表于 2012-4-27 10:30:46 | 显示全部楼层
可以肯定是驱动的问题。
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-12-23 23:31 , Processed in 0.055384 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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