转自http://blog.csdn.net/cbk861110/article/details/8496490
今天调试遇到的待机电流过大的问题,借鉴以下的方法
待机电流过大,主要是从各个模块的电流查起,耗电流大的模块有TP,camera,屏,Gsensor等
这次调试RK3026的平台,没调试之前功耗有100多毫安,调试后只有10多毫安,具体的查法,就是将机器休眠,用万用表去查休眠后各个模块的电压,休眠后,理论上模块的电压都关闭了,若是有电压,就可以重点查这块的电压是怎么漏出来的,查对应的代码,看GPIO口有没有控制其,将其休眠时电压拉低,一般是由PMU去管控电压的,查PMU的规格书,看对应的寄存器。
以下部分是转载,方法挺全的
待机电流过大,不光是MTK平台,展讯平台,Master等等都是经常遇到的问题,这不光是驱动工程师要做的,有时也需要跟BB或者MMI的工程师协调,这种现象出现的原因太多了,不能一概而论,但可以有几种
方法尝试:
一、电流表查询法
这种方法主要是在待机状态下,去用仪器查询所有外设是否工作在正常状态,比如一些外设模块在待机状态下是否进入休眠等等;
二、模块查询法
这种就是针对外设模块来查找原因所在了,比如第一次download之后,或者重新开机之后,BT,FM,ATV,G_sensor等这些模块是否都正常进行了初始化操作,这部分主要是check code;
三、现象针对法
这种就是根据待机电流出现的操作流程来查询,比如开机待机电流正常,但是我开关一次FM之后,待机电流就大了10mA,很明显,要check FM这部分;
四、待机代码查找法
分析过滤休眠待机时候还在运行的代码,避免出现定时器和其他代码进程在LCD息屏时还在运行。
五、排除法
硬件:一个一个模块排查,必要时焊下芯片测,包括检查驱动。
软件:版本回溯,二分法排查版本,定位出问题的版本时间和代码修改点。
总之,待机电流过大是个很普遍的现象,而且出现的原因也有很多种不是三言两语讲完的,只能凭一定的方法或者经验和现象去迅速定位吧,呵呵,我个人只是这么想的,期待高手有更完美的讲解我以前在52论坛下过一个“电流法解决手机不开机”问题的文档,贴出来跟大家共享下吧,应该是个高手写的,给那些没有看到过这篇文章的朋友分享下,^_^
备注:Camera模块导致电流过大:
经常MTK6253平台驱动调试会发现待机电流过大问题,一般最小电流偏大到1.6mA左右一般都是摄像头的I2C上拉电阻漏电导致。I2C上拉电阻一端接VCAMA(2.8V,为常开摄像头电源),另一端则接在I2C线上。漏电主要是因为在软件某个地方将I2C线拉低,导致两个上拉电阻两端电平不一样高而漏电,漏电电流可以这样计算(以上拉电阻4.7K为例):2.8V/4.7K*2=1.19mA,加上正常的0.5mA,大概就会偏大到1.6mA左右。
那么可能是软件中两个地方引起,只要修改者两个地方即可。
第一个地方是camera_hw.c文件中将SCCB_SERIAL_CLK_PIN PIO和SCCB_SERIAL_DATA_PIN写0导致,那么只需将其写高即可。这里主要是在刚开机时就会跑此段代码而带导致一开机就电流过大。 #ifndef MC501CB_HW_SCCB
GPIO_ModeSetup( SCCB_SERIAL_CLK_PIN,0 );
GPIO_ModeSetup( SCCB_SERIAL_DATA_PIN,0 );
GPIO_WriteIO( 0, SCCB_SERIAL_CLK_PIN );//将其改为GPIO_WriteIO( 1,SCCB_SERIAL_CLK_PIN );
GPIO_WriteIO( 0, SCCB_SERIAL_DATA_PIN );//将其改为GPIO_WriteIO( 1,SCCB_SERIAL_DATA_PIN );
GPIO_InitIO( 1, SCCB_SERIAL_CLK_PIN );
GPIO_InitIO( 1, SCCB_SERIAL_DATA_PIN );
#endif
复制代码第二个地方是摄像头内部代码如image_sensor_bf3703.c中的BF3703_power_off函数中SET_SCCB_CLK_LOW;SET_SCCB_DATA_LOW;两条命令将I2C线拉低,只需将两条命令屏蔽即可。这里主要是在进入摄像头之后再退出引起的。 void BF3703_power_off(void)
{
cis_module_power_on(KAL_FALSE); // PowerOff CIS Power
UPLL_Disable(UPLL_OWNER_ISP);
#ifndef BF3703_HW_SCCB
SET_SCCB_CLK_LOW;
SET_SCCB_DATA_LOW;
#endif
//deleted by maliping 20101123
} /* power_off_BF3703 */
即使你把camera的电源关掉,如果IIC的两个引脚置为低,这样Vcc还是会通过上拉电阻流向MCU,也就是灌电流,同样会漏电。