a. ATV没有进入power saving mode导致的漏电
目前常见客户客制化做法: 23是全程AVDD 2.8都存在,所以要将power saving全程打开,这样MT5192大概会耗电0.2mA
其他平台只有进入camera的时候存在,所以只要在进入camera的时候打开power saving, 出来的时候关掉就可以了。
在非23c平台还存在一种情况是ATV由LDO供电,matv I2C上拉一直在供电,所以需要将PMU关掉,否则也要漏电,以
MT6253为例:需要修改下面红色部分:
kal_bool matvdrv_shutdown(void)
{
kal_bool ret;
kal_prompt_trace(MOD_MATV, "matvdrv_shutdown() begin\n");
ret=bChipShutdown();
matvdrv_poweroff_seq();
//#if (defined(MT6223P)||defined(MT6223)||defined(__DIRECT_SENSOR_V2_SUPPORT__))
matvdrv_ps_init(1);
//#endif
kal_prompt_trace(MOD_MATV, "matvdrv_shutdown() finished\n");
return ret;
}
void mATV_task_main(task_entry_struct *task_entry_ptr)
{
注释掉下边的宏
//#if (defined(MT6223P)||defined(MT6223)||defined(__DIRECT_SENSOR_V2_SUPPORT__))
matvdrv_ps_init(1);
//#endif
kal_bool matvdrv_poweron_seq(int tvmode)
{
注释掉下边码
#if (defined(MT6235)||defined(MT6235B))
pmu_set_vcam_a_sel(VCAM_A_SEL_2_8);
pmu_set_vcam_a_en(KAL_TRUE);
#elif (defined(MT6253T)||defined(MT6253)||defined(MT6253D))
pmu6253_vcama_sel(VCAMA_SEL_2_8V);
pmu6253_vcama_enable(KAL_TRUE);
#endif
b. 跟ATV退出时,某些ATV相关的GPIO Pin被拉高
这种情况需要先用scope量下,确认下那根pin退出ATV后还是high,暂解可以先将这个pin设为GPIO MODE,然后拉低
,如果要查谁拉到了,需要提供手机连trace32 Debug,才能找到“元凶”,下面是MCLK导致的漏电的一个暂解。
1)在LCD进入睡眠时,即待机时关掉MCLK,这样就能保证MCLK待机时一直为低。
2)在进camera时,要用到MCLK,在power on camera时,将MCLK对应的pin设为模式1。具体的修改如下:
1)在LCD.C中的LCD_EnterSleep_××()里面关掉MCLK,如下面红色标注的code
void LCD_EnterSleep_ILI9325DS(void)
{
GPIO_ModeSetup(58,0); //resolve mclk high for 53
GPIO_WriteIO(0, 58);
#if defined(LQT_SUPPORT)/*Do not remove LQT code segment*/
if(!(lcd_at_mode==LCD_AT_RELEASE_MODE))
{
return;
}
#endif /*defined(LQT_SUPPORT))*/
LCD_set_reg_main(0x0007, 0x0131); // Set D1=0, D0=1
Delayms(10);
……
}
2)在进camera时,将MCLK对应的pin设为模式1,在做如下修改。
void cis_module_power_on(kal_bool on)
{
if(on==KAL_TRUE)
{
#if !(defined(MT6223P)||defined(MT6223))
#if defined(__ATV_SUPPORT__)
matvdrv_ps_init(1);
#endif
#endif
GPIO_ModeSetup(58,1);
//need to reconfig these two pins as CAMRST/CAMPDN when sensor power on
GPIO_ModeSetup(MODULE_RESET_PIN, 1);
GPIO_ModeSetup(MODULE_CMPDN_PIN, 1);
……
}
……
}
目前常见客户客制化做法: 23是全程AVDD 2.8都存在,所以要将power saving全程打开,这样MT5192大概会耗电0.2mA
其他平台只有进入camera的时候存在,所以只要在进入camera的时候打开power saving, 出来的时候关掉就可以了。
在非23c平台还存在一种情况是ATV由LDO供电,matv I2C上拉一直在供电,所以需要将PMU关掉,否则也要漏电,以
MT6253为例:需要修改下面红色部分:
kal_bool matvdrv_shutdown(void)
{
kal_bool ret;
kal_prompt_trace(MOD_MATV, "matvdrv_shutdown() begin\n");
ret=bChipShutdown();
matvdrv_poweroff_seq();
//#if (defined(MT6223P)||defined(MT6223)||defined(__DIRECT_SENSOR_V2_SUPPORT__))
matvdrv_ps_init(1);
//#endif
kal_prompt_trace(MOD_MATV, "matvdrv_shutdown() finished\n");
return ret;
}
void mATV_task_main(task_entry_struct *task_entry_ptr)
{
注释掉下边的宏
//#if (defined(MT6223P)||defined(MT6223)||defined(__DIRECT_SENSOR_V2_SUPPORT__))
matvdrv_ps_init(1);
//#endif
kal_bool matvdrv_poweron_seq(int tvmode)
{
注释掉下边码
#if (defined(MT6235)||defined(MT6235B))
pmu_set_vcam_a_sel(VCAM_A_SEL_2_8);
pmu_set_vcam_a_en(KAL_TRUE);
#elif (defined(MT6253T)||defined(MT6253)||defined(MT6253D))
pmu6253_vcama_sel(VCAMA_SEL_2_8V);
pmu6253_vcama_enable(KAL_TRUE);
#endif
b. 跟ATV退出时,某些ATV相关的GPIO Pin被拉高
这种情况需要先用scope量下,确认下那根pin退出ATV后还是high,暂解可以先将这个pin设为GPIO MODE,然后拉低
,如果要查谁拉到了,需要提供手机连trace32 Debug,才能找到“元凶”,下面是MCLK导致的漏电的一个暂解。
1)在LCD进入睡眠时,即待机时关掉MCLK,这样就能保证MCLK待机时一直为低。
2)在进camera时,要用到MCLK,在power on camera时,将MCLK对应的pin设为模式1。具体的修改如下:
1)在LCD.C中的LCD_EnterSleep_××()里面关掉MCLK,如下面红色标注的code
void LCD_EnterSleep_ILI9325DS(void)
{
GPIO_ModeSetup(58,0); //resolve mclk high for 53
GPIO_WriteIO(0, 58);
#if defined(LQT_SUPPORT)/*Do not remove LQT code segment*/
if(!(lcd_at_mode==LCD_AT_RELEASE_MODE))
{
return;
}
#endif /*defined(LQT_SUPPORT))*/
LCD_set_reg_main(0x0007, 0x0131); // Set D1=0, D0=1
Delayms(10);
……
}
2)在进camera时,将MCLK对应的pin设为模式1,在做如下修改。
void cis_module_power_on(kal_bool on)
{
if(on==KAL_TRUE)
{
#if !(defined(MT6223P)||defined(MT6223))
#if defined(__ATV_SUPPORT__)
matvdrv_ps_init(1);
#endif
#endif
GPIO_ModeSetup(58,1);
//need to reconfig these two pins as CAMRST/CAMPDN when sensor power on
GPIO_ModeSetup(MODULE_RESET_PIN, 1);
GPIO_ModeSetup(MODULE_CMPDN_PIN, 1);
……
}
……
}