主题 : 摄像头驱动调试问题 复制链接 | 浏览器收藏 | 打印
级别: 侠客
UID: 57992
精华: 0
发帖: 60
金钱: 300 两
威望: 60 点
综合积分: 120 分
注册时间: 2011-11-01
最后登录: 2015-04-13
楼主  发表于: 2012-11-14 08:47

 摄像头驱动调试问题

请教各位!
在OV9650驱动中寄存器初始化的结构体是
typedef struct s3c_fimc_i2c_value {
    u8 subaddr;
    u8 value;
} OV965X_t;
驱动中通过i2c_transfer将i2c_msg数据传入
int s3c_fimc_i2c_write(struct i2c_client *client, u8 i2c_data[], u8 length)
{
    u8 buf[length];
    u8 i;
    struct i2c_msg msg = {client->addr, 0, length, buf};

    for ( i=0; i<length; i++ ) {
        buf = i2c_data;
    }
    return i2c_transfer(client->adapter, &msg, 1) == 1 ? 0 : -EIO;
}
而我现在调试的摄像头是16位地址和16位数据的。
typedef struct s3c_fimc_i2c_value {
    u8 subaddr1;
    u8 subaddr2;
    u8 value1;
    u8 value2;
} mt2031_t;
同样的方式将初始化数组传入,芯片没有工作,判断是寄存器初始化没有写入,
驱动中是如何区分我是写的8位地址还是16位地址?