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
---------------------------------------------------------------------------------------
下面再列出计算方法
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 测一下这个实际的是多少