camera 驅動 關於mipi的一些計算

2021-09-24 09:17:05 字數 4054 閱讀 9700

static struct sensor_lib_out_info_t sensor_out_info = ,

/* res 1*/

,/* res 2*/

高通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,

vt_pixel_clk(video timing clk value) – virtual clock value used for calculating shutter time,and used by aec for correcting banding artifacts,代表的就是暴光時間

vt_pixel_clk = line_length_pclk * frame_length_lines * frame rate

平台根據寫入不同的**行來控制幀率,比如在暗處希望犧牲一點幀率,讓gain值更高,就用這個公式來計算,最後計算的 frame_length_lines 寫入相應暫存器;

注意一點的是不同的平台需要乙個最小的blanking time,所以frame_length_lines是要大於真是有效資料行y_output,而且差值一般16對齊;

三星sensor 引數計算

linelengthpixelclock: 你去對應的setting中找下0342 暫存器,看下它後面寫的值是多少,然後轉化成十進位制就可以了。比如我發給你的檔案裡面搜尋到:0342 13a0, 你就把13a0 轉換成十進位制5024 就可以了。

framelengthlines: 這個值對應的暫存器是0340 暫存器, 跟上面的方式一樣。

minhorizontalblanking: 這個值是用linelengthpixelclock - output_width, output_width就是輸出的一行的大小,比如現在你的是4000x3000, 那40000就是output_width.

minverticalblanking: 這個值是用framelengthpixelclock - output_height, output_height就是輸出的一列的大小,對應 4000x3000 的話, 就是3000.

.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

1575

1602

121908

1565

1610

142226

1805

1880

162544

1930

1990

182862

1880

1920

203180

2110

2170

223498

2300

2400

243816

2555

2655

264134

2400

2482

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      測一下這個實際的是多少   

camera驅動電源配置 camera驅動

在手機中,我們常將camera直接稱為sensor。一 sensor的種類 其實這個對於驅動來說基本略知就可以了,處於那種說出來要知道是在說sensor的專業名次這種程度就ok了!一般來說,sensor有兩大類,cmos和ccd。一般來說,ccd的功耗高,拍攝質量高,造價高,他更適合在數位相機或dv...

關於MIPI測試

一,mipi協議相關簡介 1,mipi協議和聯盟 mipi協議,即移動產業處理器介面 mobile industry processor inte ce 簡稱mipi mipi是由諾基亞 arm 意法半導體 德州儀器 英特爾 飛思卡爾等廠商聯盟發起的為移動應用處理器制定的開放標準和乙個規範。隨著客戶...

展訊camera驅動除錯

camera驅動目錄 vendor sprd modules libcamera sensor sensor drv classic galaxycore gc030a kernel drivers misc sprd camera sensor csi2 csi sprd r2p0 csi dri...