1. MIPI攝像頭簡介
MIPI (Mobile Industry Processor Interface):ARM, Nokia, ST ,TI等公司在2003年成立的一個聯(lián)盟所定的接口。目的是把手機等移動設備內部的接口如:攝像頭、顯示屏接口、射頻/基帶接口等標準化,從而減少手機等移動設備設計的復雜程度和增加設計靈活性。
工作組(Work Group):MIPI聯(lián)盟下有許多的工作組,不同的工作組負責定義對應設備的標準。其中包括有:Camera工作組、Display工作組、高速多端鏈接工作組等十幾個工作組。
MIPI CSI-2接口是由MIPI聯(lián)盟下的Camera工作組指定的CSI(Camera Serial Interface)的第2版接口標準。硬件層面:最大支持4個虛擬通道(Lane)傳輸數(shù)據(jù),1個Lane在硬件上體現(xiàn)就是一對差分信號線(見下方原理圖),每個Lane的最大通訊速率為2.0Gbps。軟件層面:MIPI CSI-2協(xié)議棧主要由應用層、協(xié)議層、物理層組成,其中協(xié)議層又可以分為:像素/字節(jié)組包/解包層、底層協(xié)議層、通道管理層。
1.2 硬件接口資源介紹
EASY EAI Orin-Nano開發(fā)板具有2路MIPI CSI-2接口。每路引出了4個Lane。位置定義如下所示。
EASY EAI Orin-Nano默認搭配IMX415單目攝像頭。同時配有一根0.5mm間距的40pin FPC反向線。
反向線:兩端的藍色標識不在同一側面。
同向線:兩端的藍色標識處于同一側面。
1.3 接線說明
* 接線必須在斷電時進行操作。
* 采用反向線連接IMX415攝像頭與Cmaera1接口。(注意:用錯線會燒壞攝像頭或者核心板,因此在接線時務必要小心。)
* 接線端子卡扣與FPC線的藍色塑料標識必須位于同一側。如下圖所示。
1.4 查看設備情況
可以通過dmesg命令,檢查MIPI-CSI2接口模塊是否正常工作。
dmesg | grep "csi2-.phy"
攝像頭正常掛載的情況如下所示。可以看到:
在dcphy0接口上有一個sensor型號為:imx415的攝像頭,MIPI-CSI2地址為:4-0036;
在dphy0接口上有一個sensor型號為:imx415的攝像頭,MIPI-CSI2地址為:5-0036。
當沒能出現(xiàn)目標camera節(jié)點時,就需要檢查FPC排線是否正常連接,請檢查排線的連接是否與“1.3接線說明”一致。
1.5 尋找可用的設備節(jié)點
rockchip平臺,一個MIPI-CSI接口會對應20多個video節(jié)點(設備樹定了就會生成這么多個),如下圖所示。
注意:但CSI0并不一定是對應著video0~24,這個要根據(jù)設備樹的實際情況對應生成。
而且MIPI-CSI camera對應的節(jié)點,會在修改內核設備樹的時候固定下來(即:內核配好了MIPI-CSI Camera個數(shù),無論MIPI-CSI攝像頭是否有接上,它的video節(jié)點情況都是不會根據(jù)MIPI-CSI Camera的接入情況而【動態(tài)】改變)。
因此,用戶需要找到這些節(jié)點所對應的描述信息是什么。Linux的v4l2框架會把這些節(jié)點的描述信息統(tǒng)一放在/sys/class/video4linux/目錄下,如下圖所示。
隨便進入一個描述,如video22。
通過cat命令,可以用查看這個name的內容是什么。rockchip芯片定義:如果這個name是mainpath或者selfpath。則這個“video22”就是可用節(jié)點。
在終端任意目錄執(zhí)行下面這條命令,可以快速掃描所有的節(jié)點的“name”描述。
grep "mainpath" /sys/class/video4linux/video*/name

因此,/dev/video22和/dev/video23都是MIPI-CSI0的可用節(jié)點。
2. 快速上手
2.1 例程源碼下載
到【百度網(wǎng)盤】上下載相關的單例程序:
鏈接:https://pan.baidu.com/s/1RXHMGpmGSEfFy0rb1VkXSg?pwd=1234
提取碼: 1234
比如在windows環(huán)境中,就把單例程序下載到:此電腦D:BaiduNetdisk (無規(guī)定,用戶可自主選擇),如下圖所示。
然后把例程【復制粘貼】到nfs掛載目錄中。(不清楚目錄如何構建的,可以參考《入門指南/開發(fā)環(huán)境準備/nfs服務搭建與掛載》)
2.2 例程編譯&運行
通過adb shell進入開發(fā)板環(huán)境,執(zhí)行下方命令定位到demo目錄,并且執(zhí)行編譯操作。
cd /home/orin-nano/Desktop/nfs/02_camera/ ./build.sh

編譯成功后,相關的demo會生成在Release目錄下。
執(zhí)行下方命令以運行demo,如下所示。
sudo ./Release/test-mipiCam 22 ##需要root權限
注:輸入?yún)?shù)22為MIPI-CSI0所對應的video索引,本固件camera1~2默認對應video索引分別為:22、31(若用戶按需對設備樹進行過修改,這些索引將會有所變化)
執(zhí)行效果如下所示。
然后把/tmp/photo拷貝到當前目錄下的Release內
cp /tmp/photo ./Release/
再通過組合鍵【Ctrl+Shift+T】創(chuàng)建一個新窗口,定位到nfs服務器的對應位置。
最后使用mplayer工具播放圖片,命令如下所示。
mplayer -demuxer rawvideo -rawvideo w=1920:h=1080:format=bgr24 ./Release/photo -loop 0

例程默認分辨率為1920x1080,故w和h的參數(shù)對應填入1920和1080。當出現(xiàn)圖片異常時,說明分辨率等不太對應于手頭的攝像頭,所以需要調整mipicamera_init()的分辨率,例如640x480。
3. MIPI攝像頭測試案例
示例代碼路徑為:02_camera/test-mipiCam/main.c。MIPI Camera API的測試案例代碼邏輯流程如下所示:
3.1 源碼說明
int main() { int ret = 0; if(1 == argc){ printf("nerr: Missing parameter!n"); printf("================= [usage] ==================n"); printf("example:n"); printf("t%s 22/31?>n", argv[0]); printf("--------------------------------------------n"); return 0; } char *pbuf = NULL; int ret = 0; int skip = 0; FILE *fp = NULL; ret = mipicamera_init(CAMERA_INDEX, CAMERA_WIDTH, CAMERA_HEIGHT, 0); if (ret) { printf("error: %s, %dn", __func__, __LINE__); goto exit3; } pbuf = (char *)malloc(IMAGE_SIZE); if (!pbuf) { printf("error: %s, %dn", __func__, __LINE__); ret = -1; goto exit2; } //跳過前10幀 skip = 10; while(skip--) { ret = mipicamera_getframe(CAMERA_INDEX, pbuf); if (ret) { printf("error: %s, %dn", __func__, __LINE__); goto exit1; } } /* tips: 可以在Ubuntu下用mplayer播放錄制圖像 * adb pull /tmp/photo * mplayer -demuxer rawvideo -rawvideo w=1920:h=1080:format=bgr24 photo -loop 0 */ fp = fopen("/tmp/photo", "w"); if (!fp) { printf("error: %s, %dn", __func__, __LINE__); ret = -1; goto exit2; } fwrite(pbuf, 1, IMAGE_SIZE, fp); fclose(fp); exit1: free(pbuf); pbuf = NULL; exit2: mipicamera_exit(CAMERA_INDEX); exit3: return ret; }
其中mipicamera_init(),mipicamera_getframe(),mipicamera_exit()是對v4l2接口調用的易用化封裝。具體實現(xiàn)于02_camera/commonApi/mipi_camera.c。
審核編輯 黃宇
-
攝像頭
+關注
關注
61文章
5024瀏覽量
101525 -
開發(fā)板
+關注
關注
25文章
5992瀏覽量
109982 -
MIPI
+關注
關注
11文章
338瀏覽量
50419 -
rk3576
+關注
關注
1文章
209瀏覽量
1227
發(fā)布評論請先 登錄
如何通過RK3576配置MIPI-CSI攝像頭的不同輸出格式
【米爾RK3576開發(fā)板評測】帶你初步了解米爾RK3576這塊開發(fā)板
【米爾RK3576開發(fā)板評測】+項目名稱【米爾RK3576開發(fā)板評測】一個視頻和你共同認識一下米爾RK3576開發(fā)板
米爾瑞芯微RK3576實測輕松搞定三屏八攝像頭
12路1080P高清視頻流,米爾RK3576 開發(fā)板賦能車載360環(huán)視
【作品合集】米爾RK3576開發(fā)板測評
360環(huán)視硬件平臺為什么推薦使用米爾RK3576開發(fā)板?
基于RK3576開發(fā)板的MIPI-DSI使用

基于RK3576開發(fā)板的網(wǎng)絡攝像頭方案

評論