本文轉載自:http://blog.csdn.net/u012075739/article/details/44672435
MIPI攝像頭常見於手機、平板中,支持500萬像素以上高清分辨率。它的全稱為“MobileIndustryProcessorInterface”,分為MIPIDSI和MIPICSI,分別對應於視頻顯示和視頻輸入標准。目前,MIPI攝像頭在其他嵌入式產品中,比如行車記錄儀、執法儀、高清微型相機、網絡監控相機等得到廣泛應用,因此我們以OMAP4處理器為例,談談MIPI攝像頭如何與ARM處理器連接。
OMAP4支持MIPICSI2版本,其中4460支持兩路視頻輸入,為了進行接口和軟件驗證,我們先在OMAP4開發板PandaboardES上設計了攝像頭模塊,如下圖:

攝像頭模塊是通過Pandabaord的J17引腳焊接上去的,為了更好地理解CSI2接口,我們先看看PandabaordES的J17定義了哪些引腳:

可以看到J17中包含了5組差分信號,即(CSI21_DX0,CSI21_DY0),(CSI21_DX1,CSI21_DY1),(CSI21_DX2,CSI21_DY2),(CSI21_DX3,CSI21_DY3),(CSI21_DX4,CSI21_DY4)。這五組信號來自於OMAP4的CSI2-A接口,如下圖所示:

上圖摘自於omap4的手冊。可以看出,OMAP4430其實有兩路CSI2接口,即CSI2A和CSI2B,說明其可以接兩個攝像頭,這已經是手機或者平板應用的基本要求了。CSI2A接口擁有五組差分接口(csi2a_dxi,csi2a_dyi,i=0~4),分別對應J17引腳的(CSI21_DXi,CSI21_DYi,i=0~4)。一組差分信號稱為Lane,每個Lane可以通過軟件配置為DataLane和ClockLane,而且差分信號的極性也可以軟件配置。當然最常規的用法是將(dx0,dy0)用於傳輸clock信息。CSI2A可以有4個DataLane和1個ClockLane,而CSI2B則只能有1個DataLane和1個ClockLane,DataLane越多,其能傳輸的速度越高,也就是更傳輸更高分辨率的圖片。DataLane個數與傳輸速度的關系是這樣的:
datalane個數 | 極限速度 | 對應圖像傳輸幀率 |
OneDatalane | 1000Mbps | 1280*720@30fps |
TwoDatalane | 2x1000Mbps | 1280*720@60fps |
ThreeDatalane | 3x1000Mbps | 1280*720@90fps |
從這個表格中可以看到,MIPI采用差分線傳輸,速度還是很快的,比並行傳輸要快很多。在使用兩組datalane的情況下,就可以做到720p@30fps了。如果要提高圖像的分辨率,在使用同樣多datalane的情況下,就要降低幀率了。
我們為pandaboard研發的攝像頭模塊采用ov5640傳感器,它支持兩組datalane,以下是它所支持的傳輸格式:
format | resolution | framerate |
5Mpixel | 2592x1944 | 15fps |
1280x960 | 1280x960 | 45fps |
1080p | 1920x1080 | 30fps |
720p | 1280x720 | 60fps |
VGA | 640x480 | 90fps |
QVGA | 320x240 | 120fps |
ov5640擁有2組datalane,還有1組clocklane,因此可以如下方式連接ov5640和omap4.

其中(MC_P,MC_N)為ov5640的用於傳輸時鍾的引腳,(MD0_P,MD0_N),(MD1_P,MD1_N)為用於傳輸數據的引腳。除了要連接好ov5640的差分信號外,還要給ov5640輸入時鍾信號,這個時鍾信號可以來自於晶振,也可以來自於omap4。我們選擇一個用一個晶振產生24M的時鍾信號,具體如何連接這里不再敘述。
接下來我們順便講講OV5640的I2C控制信號。另外我們注意到OV5640有SIOC和SIOD。那么這I2C控制信號是干什么的?一個很明顯的用途就是來設置OV5640的圖像輸出格式,比如是輸出RGB格式還是YUV格式。這是通過寄存器來設置的。
其實OV5640作為視覺傳感芯片,其有很多寄存器來控制圖像的拍攝參數,比如增益控制、曝光控制等,這些參數一般設置為默認值即可,但如果用戶想再特定環境下獲得更好的圖像質量,可以設定這些參數來達到最佳效果。比如在晚上開啟夜視模式(把每幀曝光時間調長),或者在室內開啟工頻抑制,在日光燈下圖像不閃爍(通過設置曝光時間為光周期信號整數倍),可以達到更加靈活的使用效果。運行於omap4的拍照軟件可以運行一個類似於光照檢測的算法來來設定這些參數,從而達到一個最佳效果,這個就得看軟件算法的功力了。
另外,OV5640內部還有一個ISP(ImageSignalProcessor),能夠做簡單的一些圖像處理算法,比如Gamma校正,圖像縮放等,但相對於OMAP4430的強大的ISP而言,而其功能還是小巫見大巫了,所以推薦直接使用OMAP4430的ISP功能。