This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DM368+IMX122图像一片黑恢复不了



大家好:

   我现在用DM368配 IMX122 Sensor,接口是SPI。 白天图像都正常,效果很好。但是当晚上室内关灯的时候, drv\usermod\src\imgs_IMX122 目录下的 drv_imgs_IMX122_2_3MP.c  这个文件的

int DRV_imgsSetAgain(int again, int setRegDirect)
{
     /*
       0 dB to 24 dB nalog Gain 24 dB (step pitch 0.3 dB)
       24.3 dB to 42 dB nalog Gain 24 dB + Digital Gain 0.3 to 18 dB (step pitch 0.3 dB)
       */
    float gain_times;
    double gain_db;
    unsigned int gain_reg;

    if (again <= 1000) again = 1000;
    if (again >= 125000) again = 125000;

    gain_times = again / 1000.0;
    gain_db = 20.0 * log10(gain_times);
    gain_reg = (unsigned char) (gain_db / 0.3 + 0.5);    //for 0.3db/step
    imx122_setgio(0x021E,(gain_reg&0xff));

//#ifdef AEWB_DEBUG
    OSA_printf("gain value:%d,again:%d,gain_db:%f,gain_times:%f\n",gain_reg,again,gain_db,gain_times);
//#endif 

    return 0;
}, 一旦当 gain_reg 大于 18 的时候, 图像就一片黑, 然后开灯, 发现图像还是黑, 无法恢复。 看IMX122的datasheet, 这个寄存是0X1E, gain_reg最大值可以设置到140, 对应的db 是42db,  可是我这边发现当gain_reg 大于80 的时候,图像永久黑屏,但是我们图像上的OSD 时间还在继续跑。   

请问,这个是什么问题呢? 是否AE算法越界?

谢谢

  • 跟一下这行  imx122_setgio(0x021E,(gain_reg&0xff)); 

    有可能里面发生了什么变化

  • 抓一下raw看看是否亮度足够

  • kooking:

       你好,void imx122_setgio(unsigned short addr, unsigned short reg)
    {}   这个函数中IMX122_SPI_DRIVER_MODE 我用的宏定义为1, 那么就是SPI读写模式,不是GIO模拟SPI模式。    我跟了下,当我用镜头盖子把镜头盖住的时候, again增益增加到 125000, 这个时候打印如下

     regset[0] = 2;
     regset[1]) = 30;

     regset[2] = 140;

    这个没问题啊。

    增益写140进去后,DB为41.93的时候,图像一片黑,这个时候AE算法 alg_aewb_control2.c()这个函数中,不停地调用EX = 30000, AG=125000, DG=8091, init=1;   请问这个是怎么回事呢?

    谢谢

  • hi Eason Wang:

       我用ITT抓出来的 raw图片,用工具看, 也是一片黑的,请问这个是怎么回事呢? 我的IMX122的板子晶振用的是外部晶振37.125Mhz,   DM368本身会给SENSOR 一个CLK0 (24MHZ), 这根线被我给屏蔽了(那根线的电阻被我们拆了,断开24M的干扰), 我本来计划用DM368提供的24MHZ晶振源, 可以节省外部晶振, 但是发现IMX122的datasheet 里面没有PLL的详细介绍,只好用外置37.125MHZ晶振。

    谢谢

  • Eason Wang:

       你们那里是否可以用DM368+IMX122测试下, 镜头前用盖子盖住,增益到12500 的时候,图像是否黑屏,拿掉盖子后,图像还是黑屏,无法恢复。

    谢谢啊

  • 我暫無122板子。

    你可以讀一下122上面的曝光相關寄存器和增益相關寄存器看是不是就是曝光量不夠。

  • Hi  Eason Wang:

       好的,你的意思是看SENSOR的 SHUT和GAIN 是否联动起来,谢谢,我测试下看看. 另外跟SPI驱动的参数是否会有关系,例如

    static uint8_t mode = 8; //steven 2014-2-25   16;
    static uint8_t bits = 8;
    static uint32_t speed = 12000000;
    static uint16_t delay = 0;

    这些参数。

       另外在void imx122_setgio(unsigned short addr, unsigned short reg)
    {} 函数中,    regset[0] = spi_chipid;
        regset[1] = page_addr;
        regset[2] = imx122_value;       其中 page_addr 就是 IMX122的寄存器地址, imx122_value 是写入该寄存器的数值。  但是我不明白的是  regset[0] = spi_chipid; 这个参数到底什么意思呢? 为啥SONY的那个InitRegTable(); 的配置里面drv_imgs_IMX122_REG.h ,    spi_chipid; 有些是2, 有些是3.   是2的时候, 就是例如 imx122_setgio(0x0200,0x30); //cancel standy mode  , 但有些是 0x03**, 0x**. 这个2,3 是什么差别?

        备注下:我们的板子默认用的是第2个SPI, DM36X 共有5个SPI

    谢谢

  • 你的测试有结果了吗,我还是觉得和spi的配置有一定关系