コード例 #1
0
ファイル: ov7725.c プロジェクト: ypwhs/smartFish
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;
}
コード例 #2
0
ファイル: ov7725.c プロジェクト: ypwhs/smartFish
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;
}
コード例 #3
0
ファイル: main.c プロジェクト: guzhaoyuan/smartCar
void OV7620_Reset(void)
{
    SCCB_WriteSingleRegister(HW_I2C0, OV7620_I2C_CHIP_ADDR, 0x12, 0x80);
}