sc9832e camera 不能拍RAW图

本文详细介绍了在使用Galaxycore gc2033传感器时,正确管理Mipi时钟的重要性。强调了在初始化过程中,必须确保在stream off之后关闭mipiclk,以避免在后续stream on操作中出现mipi状态错误,导致dcam超时等问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

初始化的时候最后一定要把mipi clk关掉

初始化的时候最后一定要把mipi clk关掉

初始化的时候最后一定要把mipi clk关掉

sunhz@R720xd:~/sl8541e/vendor/sprd/modules/libcamera$ git log -p sensor/sensor_drv/classic/Galaxycore/gc2033/sensor_gc2033_mipi_raw.*
commit d0bf735575285ebff7ace504eed14479d6a0508f
Author: sunhouzan <sunhouzan@zhiqicheng.com>
Date:   Tue Oct 23 20:49:09 2018 +0800

    gc2033 can take raw photo
    sensor stream off ,mipi clk 没有关闭导致再stream on的时候mipi状态不对,dcam timeout

diff --git a/sensor/sensor_drv/classic/Galaxycore/gc2033/sensor_gc2033_mipi_raw.c b/sensor/sensor_drv/classic/Galaxycore/gc2033/sensor_gc2033_mipi_raw.c
old mode 100755
new mode 100644
index 14e790e..f5631cd
--- a/sensor/sensor_drv/classic/Galaxycore/gc2033/sensor_gc2033_mipi_raw.c
+++ b/sensor/sensor_drv/classic/Galaxycore/gc2033/sensor_gc2033_mipi_raw.c
@@ -688,6 +688,7 @@ static cmr_int gc2033_drv_stream_on(cmr_handle handle, cmr_uint param)
 #else
        hw_sensor_write_reg(sns_drv_cxt->hw_handle, 0x10, 0x90);
 #endif
+       hw_sensor_write_reg(sns_drv_cxt->hw_handle, 0x15, 0x06);
        hw_sensor_write_reg(sns_drv_cxt->hw_handle, 0xfe, 0x00);
     /*END*/
        /*delay*/
@@ -716,10 +717,11 @@ static cmr_int gc2033_drv_stream_off(cmr_handle handle, cmr_uint param)
        usleep(20 * 1000);
        hw_sensor_write_reg(sns_drv_cxt->hw_handle, 0xfe, 0x03);
 #if defined(GC2033MIPI_2LANE)
-       hw_sensor_write_reg(sns_drv_cxt->hw_handle, 0x10, 0x81);
+       hw_sensor_write_reg(sns_drv_cxt->hw_handle, 0x10, 0x00);
 #else
        hw_sensor_write_reg(sns_drv_cxt->hw_handle, 0x10, 0x80);
 #endif
+       hw_sensor_write_reg(sns_drv_cxt->hw_handle, 0x15, 0x02);
        hw_sensor_write_reg(sns_drv_cxt->hw_handle, 0xfe, 0x00);
        /*END*/
        /*delay*/
diff --git a/sensor/sensor_drv/classic/Galaxycore/gc2033/sensor_gc2033_mipi_raw.h b/sensor/sensor_drv/classic/Galaxycore/gc2033/sensor_gc2033_mipi_raw.h
index 22bbe84..4987bed 100644
--- a/sensor/sensor_drv/classic/Galaxycore/gc2033/sensor_gc2033_mipi_raw.h
+++ b/sensor/sensor_drv/classic/Galaxycore/gc2033/sensor_gc2033_mipi_raw.h
@@ -198,8 +198,8 @@ static const SENSOR_REG_T gc2033_init_setting[] = {
 {0x88,0x73},                                                                                       
 {0x89,0x03},                                                                                       
 {0x90,0x01},                                                                                       
-{0x92,0x05},//2<= y <=6                                                                            
-{0x94,0x05},//2<= x <=6                                                                            
+{0x92,0x04},//2<= y <=6                                                                            
+{0x94,0x04},//2<= x <=6                                                                            
 {0x95,0x04},//crop win height                                                                      
 {0x96,0x38},                                                                                       
 {0x97,0x07},//crop win width                                                                       
@@ -256,11 +256,11 @@ static const SENSOR_REG_T gc2033_init_setting[] = {
 {0x01,0x5f},                                                                                       
 {0x02,0x10},                                                                                       
 {0x03,0x8a},                                                                                       
-{0x10,0x91},                                                                                       
+{0x10,0x81},                                                                                       
 {0x11,0x2b},                                                                                       
 {0x12,0x60},//lwc 1920*5/4                                                                         
 {0x13,0x09},                                                                                       
-{0x15,0x06},                                                                                       
+{0x15,0x02},                                                                                       
 {0x36,0x88},                                                                                       
 {0x21,0x08},                                                                                       
 {0x22,0x02},

一定要把stream on/off 写好,开关mipi 使能输出

                [SENSOR_IOCTL_STREAM_ON].ops = c2390_drv_stream_on,
                [SENSOR_IOCTL_STREAM_OFF].ops = c2390_drv_stream_off,

严格按照sensor datasheet 写入开关mipi clk ,使能输出的时延

--- a/sensor/sensor_drv/classic/SmartSens/sc2363/sensor_sc2363_mipi_raw.c
+++ b/sensor/sensor_drv/classic/SmartSens/sc2363/sensor_sc2363_mipi_raw.c
@@ -629,20 +629,8 @@ static cmr_int sc2363_drv_stream_on(cmr_handle handle, cmr_uint param)
        
        SENSOR_LOGI("E");
 
-       //hw_sensor_write_reg(sns_drv_cxt->hw_handle, 0x3018,0x13);
-       //hw_sensor_write_reg(sns_drv_cxt->hw_handle, 0x3019,0xfc);
-
-       //hw_sensor_write_reg(sns_drv_cxt->hw_handle, 0x4603,0x00);//[0] data_fifo mipi mode
-       //hw_sensor_write_reg(sns_drv_cxt->hw_handle, 0x4837,0x19);//[7:0] pclk period * 2
-       //hw_sensor_write_reg(sns_drv_cxt->hw_handle, 0x4827,0x48);//[7:0] hs_prepare_time[7:0]
-       //hw_sensor_write_reg(sns_drv_cxt->hw_handle, 0x33aa,0x10);//save power
-
        hw_sensor_write_reg(sns_drv_cxt->hw_handle, 0x0100,0x01);
 
-
-       //usleep(10 * 1000);
-
-       
        return SENSOR_SUCCESS;
 }
 
@@ -659,11 +647,6 @@ static cmr_int sc2363_drv_stream_off(cmr_handle handle, cmr_uint param)
     SENSOR_IC_CHECK_HANDLE(handle);
     struct sensor_ic_drv_cxt * sns_drv_cxt = (struct sensor_ic_drv_cxt *)handle;
 
-       //close mipi
-    //hw_sensor_write_reg(sns_drv_cxt->hw_handle, 0x3018,0x1f);
-    //hw_sensor_write_reg(sns_drv_cxt->hw_handle, 0x3019,0xff);
-       //{0x301c,0xb4},
-
     ret = hw_sensor_write_reg(sns_drv_cxt->hw_handle, 0x0100,0x00);
        if(ret)
                SENSOR_LOGI("E error %d",ret);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值