海思Hi3519AV100sensor移植之一-- imx307

本文详细介绍了基于IMX291驱动修改IMX307传感器的方法,包括寄存器设置与初始化序列调整。同时,深入分析了驱动程序结构,如sample_comm_vi.c和sample_comm_isp.c的修改要点,以及如何正确添加和引用新的传感器对象。

1. 驱动修改, 基于imx291的驱动(imx291_sensor_ctl.c )进行修改, 遵循imx307数据手册修改寄存器即可。(因为imx307与imx291型号差距不大,初始化序列可以参考imx291) 

const unsigned short IMX291_SETTING_SHORT[]=
{
    //Tag  standby
    0x0200,0x1,
    0x0204,0x10,
    //Tag AD 12bit
    0x0205,0x1,
    0x0206,0x0,
    //Tag FULL HD1080
    0x0207,0x00,//0x10,
    0x0208,0xA0,//0x10,
    //Tag 30fps
    0x0209,0x02,//IMX185_FRSEL,//0x2,
    //Tag BLACKLEVEL default
    0x020A,0xf0,
    0x020B,0x0,
    0x020C,0x0,
    0x020D,0x0,
    0x020E,0x1,
    0x020F,0x00,//0x1,
    0x0210,0x21,//0x39,
    0x0211,0x0,
    0x0212,0x64,//0x50,
    0x0213,0x0,
    //Tag GAIN
    0x0214,0x0,
    0x0215,0x0,
    0x0216,0x09,//0x8,
    0x0217,0x0,
    //Tag  /VMAX calc refer to 
    0x0218,0x65,//0x46,//0x65,
    0x0219,0x4,//0x5,//0x4,
    0x021A,0x0,

    0x021B,0x00,//IMX185_HMAX_LOW,//0x98,
    //Tag HMAX
    0x021C,0x30,//IMX185_HMAX_HIGH,//0x8,
    0x021D,0x11,//0xff,

    0x021E,0xB2,//0x1,
    0x021F,0x01,//0x0,
    //Tag SHS1
 
CMOS_CHECK_POINTER(pstAeSnsDft); IMX335_SENSOR_GET_CTX(ViPipe, pstSnsState); CMOS_CHECK_POINTER(pstSnsState); if (IMX335_5M_30FPS_12BIT_LINEAR_MODE == pstSnsState->u8ImgMode) { u32Fll = IMX335_VMAX_5M_30FPS_12BIT_LINEAR; U32MaxFps = 30; pstSnsState->u32FLStd = u32Fll*U32MaxFps/DIV_0_TO_1_FLOAT(gu32STimeFps); } else if (IMX335_5M_30FPS_10BIT_WDR_MODE == pstSnsState->u8ImgMode) { u32Fll = IMX335_VMAX_5M_30FPS_10BIT_WDR; U32MaxFps = 30; pstSnsState->u32FLStd = u32Fll*U32MaxFps/DIV_0_TO_1_FLOAT(gu32STimeFps); if (0 != (pstSnsState->u32FLStd % 4)) { pstSnsState->u32FLStd = pstSnsState->u32FLStd - (pstSnsState->u32FLStd % 4) + 4; //Because FSC value an integer multiple of 8 } pstSnsState->u32FLStd = pstSnsState->u32FLStd*2; } else if (IMX335_4M_30FPS_10BIT_WDR_MODE == pstSnsState->u8ImgMode) { u32Fll = IMX335_VMAX_4M_30FPS_10BIT_WDR; U32MaxFps = 30; pstSnsState->u32FLStd = u32Fll*U32MaxFps/DIV_0_TO_1_FLOAT(gu32STimeFps); if (0 != (pstSnsState->u32FLStd % 4)) { pstSnsState->u32FLStd = pstSnsState->u32FLStd - (pstSnsState->u32FLStd % 4) + 4; //Because FSC value an integer multiple of 8 } pstSnsState->u32FLStd = pstSnsState->u32FLStd*2; } else if (IMX335_4M_25FPS_10BIT_WDR_MODE == pstSnsState->u8ImgMode) { u32Fll = IMX335_VMAX_4M_25FPS_10BIT_WDR; U32MaxFps = 25; pstSnsState->u32FLStd = u32Fll*U32MaxFps/DIV_0_TO_1_FLOAT(gu32STimeFps); if (0 != (pstSnsState->u32FLStd % 4)) { pstSnsState->u32FLStd = pstSnsState->u32FLStd - (pstSnsState->u32FLStd % 4) + 4; //Because FSC value an integer multiple of 8 } pstSnsState->u32FLStd = pstSnsState->u32FLStd*2; } else { u32Fll = IMX335_VMAX_5M_30FPS_12BIT_LINEAR; U32MaxFps = 30; pstSnsState->u32FLStd = u32Fll*U32MaxFps/DIV_0_TO_1_FLOAT(gu32STimeFps); } //pstSnsState->u32FLStd = u32Fll;
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值