Young87

SmartCat's Blog

So happy to code my life!

游戏开发交流QQ群号60398951

当前位置:首页 >跨站数据

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功耗增大,功耗测试了很久才发现是这个地方写错了,真的是坑死人。

上面是高通官方文档,对这个参数有明确的规定,我们这颗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

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

下面再列出计算方法

1159 302Mbps 
2318 32588 
4636    
6954  869894
81272  925960
101590  15751602
121908  15651610
142226  18051880
162544  19301990
182862  18801920
203180  21102170
223498  23002400
243816  25552655
264134  24002482
284452    
304770    
325088    
345406    
365724    

 

可以看出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      测一下这个实际的是多少   

 

 

 

除特别声明,本站所有文章均为原创,如需转载请以超级链接形式注明出处:SmartCat's Blog

上一篇: 利用cv2和PyQt5实现类似视频格式工厂的小项目

下一篇: ElementUI学习笔记,已完结!!!

精华推荐