camera 驱动 关于mipi的一些计算

static struct sensor_lib_out_info_t sensor_out_info[] = {
    /*RES 0*/
  {
    .x_output = 3264,
    .y_output = 2448,
    .line_length_pclk = 1932,
    .frame_length_lines = 2482,
    .vt_pixel_clk = 144000000,
    .op_pixel_clk = 254400000,
    .binning_factor = 1,
    .max_fps = 30.0,
    .min_fps = 7.5,
    .mode = SENSOR_DEFAULT_MODE,
  },
    /* RES 1*/
  {
    .x_output = 640,
    .y_output = 480,
    .line_length_pclk = 1932,
    .frame_length_lines = 7446,
    .vt_pixel_clk = 144000000,
    .op_pixel_clk = 254400000,
    .binning_factor = 1,
    .max_fps = 10.0,
    .min_fps = 7.5,
    .mode = SENSOR_HFR_MODE,
  },
  /* RES 2*/
  {
    .x_output = 1632,
    .y_output = 1224,
    .line_length_pclk = 1932,
    .frame_length_lines = 2482,
    .vt_pixel_clk = 144000000,
    .op_pixel_clk = 254400000,
    .binning_factor = 1,
    .max_fps = 30.0,
    .min_fps = 7.5,
    .mode = SENSOR_DEFAULT_MODE,
  }

};

高通camera 驱动里面的数组sensor_out_info,一共有3组size。分别是RES0 RES1 RES2

    .x_output = 3264,   这里的x和y是sensor实际输出的宽和高
    .y_output = 2448,
    .line_length_pclk = 1932,
    .frame_length_lines = 2482,
    .vt_pixel_clk = 144000000,
    .op_pixel_clk = 254400000,  这个的解释是VFE 时钟,表示每秒 VFE 处理的数据量(in pixel),就是一个表示处理数据快慢的单位,如果是全尺寸的话,那么就要配置的大一些。如果是小尺寸的话,就没必要配置很大。
    .binning_factor = 1,
    .max_fps = 30.0,
    .min_fps = 7.5,
    .mode = SENSOR_DEFAULT_MODE,

---------------------------------------------------------------------

.op_pixel_clk = 254400000,    这个是camera mipi的clock,我们这里配置的是254.4MHz,单位一定要注意,有一次FAE把这个值误写,造成camera功耗增大,功耗测试了很久才发现是这个地方写错了,真的是坑死人。

camera 驱动 关于mipi的一些计算_第1张图片

上面是高通官方文档,对这个参数有明确的规定,我们这颗sensor假如是4lane的,并且是10bpp,这里有一个计算方法,以full size为例,

  .x_output = 3264,   这里的x和y是sensor实际输出的宽和高
    .y_output = 2448,
    .line_length_pclk = 1932,
    .frame_length_lines = 2482,
    .vt_pixel_clk = 144000000,
    .op_pixel_clk = 254400000,    重点看这个东东
    .binning_factor = 1,
    .max_fps = 30.0,
    .min_fps = 7.5,
    .mode = SENSOR_DEFAULT_MODE,

total data = op_pixel_clk * 10;

each lane data = ( op_piexl_clk * 10)  / 4 ;

以3264x2448这一组size为例;

total data = 254.4 * 10 = 2554;注意这里平台限制的是2660;

each lane data = (254.4 / 4)  * 10 = 636;   

total data = each lane data * 4; 如果是4lane的话

---------------------------------------------------------------------

这个op_pixel_clk会影响功耗,注意这个配置不能和天线初一同一个频段,或者说这个频率的倍数不能落到天线的频段里面去,否则就会对天线干扰。

接下讲解怎样判断camera设置的clock有没有对天线造成干扰?

首先天线那边会有很多频段,有wifi的,打电话的频段等等。怎样才算是camera的clock没有对天线造成干扰呢?

如果camera配置的op_pixel_clk基频或者是倍频没有落在天线的任意一个频段内,那么就是没有干扰的。这中间要经过一个计算。

计算方法是这样子的:比如说,我们的op_pixel_clk配置的是254.4,那么each lane data就是(254.4 * 10) / 4 = 636,接下来对636这个值除2,这个值就是硬件工程师测量出来的那个值,这个值的倍频不能落在下面的区间内,1  2 3 4 5 6 7 8 9 等等倍数,下面列出天线的所有频段。

869-894M
925-960M
1575-1602M
1565-1610M
1805-1880M
1930-1990M
1880-1920M
2110-2170M
2300-2400M
2555-2655M
2400-2482M

---------------------------------------------------------------------------------------

下面再列出计算方法

1 159   302 Mbps  
2 318   32 588  
4 636        
6 954     869 894
8 1272     925 960
10 1590     1575 1602
12 1908     1565 1610
14 2226     1805 1880
16 2544     1930 1990
18 2862     1880 1920
20 3180     2110 2170
22 3498     2300 2400
24 3816     2555 2655
26 4134     2400 2482
28 4452        
30 4770        
32 5088        
34 5406        
36 5724        

 

可以看出954和1590这2个倍频落在了区间内,其他的都没有。这个op_pixel_clk的配置要和FAE进行确认,对那个size的哪些寄存器进行修改,都是要经过计算的。

三星:全尺寸配的是   280    算出来   (280/4)*10 = 700     700/2 = 350      实际测试的是350MHZ
           小尺寸配的是   259.2   算出来     (259.2/4)*10 = 648    648/2 = 324  实际测试出来的是325MHZ   
   
 ov:  全尺寸配的是   283.2    算出来   (283.2/4)*10 = 708     708/2 = 354      实际测试的是354MHZ
           小尺寸配的是   259.2   算出来     (259.2/4)*10 = 648    648/2 = 324      测一下这个实际的是多少   

 

 

 

你可能感兴趣的:(camera 驱动 关于mipi的一些计算)