|
楼主 |
发表于 2007-10-16 20:04:18
|
显示全部楼层
谢谢楼上的。
我觉得pwrdn应该是正确的,init_ov76x0的第一个函数cis_module_power_on是这样的:
void cis_module_power_on(kal_bool on)
{
if(on==KAL_TRUE)
{
sccb_setDelay(0x200);
sccb_config(SCCB_SW_8BIT, OV76X0_WRITE_ID, OV76X0_READ_ID, NULL);
GPIO_ModeSetup(MODULE_CMPDN_PIN, 0);
GPIO_InitIO(1, MODULE_CMPDN_PIN);
GPIO_WriteIO(0, MODULE_CMPDN_PIN);
pmic_vibrator_sel(VIBRATOR_1_8V);
pmic_vibrator_enable(KAL_TRUE);
//pmic_vasw_sel(VIBRATOR_2_8V);
pmic_vasw_enable(KAL_TRUE);
}
else
{
sccb_setDelay(0x200);
sccb_config(SCCB_SW_8BIT, OV76X0_WRITE_ID, OV76X0_READ_ID, NULL);
// Sensor Power off
pmic_vibrator_sel(VIBRATOR_1_8V);
pmic_vibrator_enable(KAL_TRUE);
pmic_vasw_enable(KAL_TRUE);
// CMOS Sensor Power Down Signal Output
GPIO_ModeSetup(MODULE_CMPDN_PIN, 0);
GPIO_ModeSetup(MODULE_RESET_PIN, 0);
GPIO_InitIO(1, MODULE_CMPDN_PIN);
GPIO_InitIO(1, MODULE_RESET_PIN);
GPIO_WriteIO(1, MODULE_CMPDN_PIN);
GPIO_WriteIO(0, MODULE_RESET_PIN);
// SCCB Low
GPIO_ModeSetup(SCCB_SERIAL_CLK_PIN,0);
GPIO_ModeSetup(SCCB_SERIAL_DATA_PIN,0);
GPIO_InitIO(1, (char)SCCB_SERIAL_CLK_PIN);
GPIO_InitIO(1, (char)SCCB_SERIAL_DATA_PIN);
GPIO_WriteIO(0, (char)SCCB_SERIAL_CLK_PIN);
GPIO_WriteIO(0, (char)SCCB_SERIAL_DATA_PIN);
}
}
这里的上电动作就只是把pwrdn引脚设为0,即pwrdn无效,进入normal模式。
因为DVDD,DOVDD,AVDD三个电压已经在gpio_drv.c预先设为一开机就供上,就算没有进入camera拍照菜单,这几个电压也都是存在的。
现在I2C仍然无法读到sensor id,折腾了一天没有结果,I2C的电路似乎也没有问题,SDA,SCL都接了3.9K的上拉,示波器看I2C的也有波形。还有哪里可能有问题呢? 大家请不吝赐教啊。 |
|