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