MTK feature phone 待机电流过大调试

【部分内容摘自:http://www.study-bbs.com/thread-44697-1-1.html】

待机电流过大,不光是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,也就是灌电流,同样会漏电。

你可能感兴趣的:(MTK feature phone 待机电流过大调试)