int ov7725_probe(uint8_t i2c_instance) { int i,j; int r; uint8_t dummy; for(i = 0; i < ARRAY_SIZE(ov7725_addr); i++) { if(!SCCB_ReadSingleRegister(i2c_instance, ov7725_addr[i], OV7725_VER, &dummy)) { /* found device */ //OV7725_TRACE("device found addr:0x%X\r\n", ov7725_addr[i]); /* reset */ SCCB_WriteSingleRegister(i2c_instance, ov7725_addr[i], OV7725_COM7, 0x80); /* inject default register value */ for(j = 0; j < ARRAY_SIZE(reg_tbl); j++) { DelayMs(1); r = SCCB_WriteSingleRegister(i2c_instance, ov7725_addr[i], reg_tbl[j].addr, reg_tbl[j].val); if(r) { OV7725_TRACE("device[addr:0x%X]regiser[addr:0x%X] write error!\r\n", ov7725_addr[i], reg_tbl[j].addr); } } h_ov7725.addr = ov7725_addr[i]; h_ov7725.i2c_instance = i2c_instance; h_ov7725.h_size = 80; h_ov7725.v_size = 60; return 0; } } OV7725_TRACE("no sccb device found!\r\n"); return 1; }
int ov7725_set_image_size(ov7725_size size) { switch(size) { case H_80_W_60: h_ov7725.h_size = 80; h_ov7725.v_size = 60; SCCB_WriteSingleRegister(h_ov7725.i2c_instance, h_ov7725.addr, OV7725_HOutSize, 0x14); SCCB_WriteSingleRegister(h_ov7725.i2c_instance, h_ov7725.addr, OV7725_VOutSize, 0x1E); break; case H_120_W_160: h_ov7725.h_size = 160; h_ov7725.v_size = 120; SCCB_WriteSingleRegister(h_ov7725.i2c_instance, h_ov7725.addr, OV7725_HOutSize, 0x28); SCCB_WriteSingleRegister(h_ov7725.i2c_instance, h_ov7725.addr, OV7725_VOutSize, 0x3C); break; case H_180_W_240: h_ov7725.h_size = 240; h_ov7725.v_size = 180; SCCB_WriteSingleRegister(h_ov7725.i2c_instance, h_ov7725.addr, OV7725_HOutSize, 0x3C); SCCB_WriteSingleRegister(h_ov7725.i2c_instance, h_ov7725.addr, OV7725_VOutSize, 0x5A); break; case H_240_W_320: h_ov7725.h_size = 320; h_ov7725.v_size = 240; SCCB_WriteSingleRegister(h_ov7725.i2c_instance, h_ov7725.addr, OV7725_HOutSize, 0x50); SCCB_WriteSingleRegister(h_ov7725.i2c_instance, h_ov7725.addr, OV7725_VOutSize, 0x78); break; default: OV7725_TRACE("wrong param in func:ov7725_set_image_size\r\n"); break; } return 0; }
void OV7620_Reset(void) { SCCB_WriteSingleRegister(HW_I2C0, OV7620_I2C_CHIP_ADDR, 0x12, 0x80); }