關(guān) 閉

新聞中心

EEPW首頁(yè) > 工控自動(dòng)化 > 設(shè)計(jì)應(yīng)用 > S3C2440的camera接口特性及WinCE 下的驅(qū)動(dòng)

S3C2440的camera接口特性及WinCE 下的驅(qū)動(dòng)

作者: 時(shí)間:2010-09-10 來(lái)源:網(wǎng)絡(luò) 收藏

注意:C通道和P通道應(yīng)分別分配。分配成功后,應(yīng)將4組YCbCr信號(hào)的起始地址與分配給C通道的DMA緩沖區(qū)地址關(guān)聯(lián)起來(lái),將4組RGB信號(hào)的起始地址與分配給P通道的DMA緩沖區(qū)地址關(guān)聯(lián)起來(lái)。格式不同時(shí),關(guān)聯(lián)的空間大小是不同的。如果C通道格式為YCbCr4:2:2,圖像寬度為CoDstWidtlh,圖像高度為CoDstHeight,分配的DMA地址為CoFrameBuffer,則二者的關(guān)聯(lián)關(guān)系為:

10e.jpg

這樣分配的目的是,保證每一組YCbCr信號(hào)的地址空間是連續(xù)的,便于用戶程序開發(fā)。
如果P通道格式為RGBl6,圖像寬度為PrDstWidth,圖像高度為PrDstHeight,分配的DMA地址為PrFrame Buffer,則二者的關(guān)聯(lián)關(guān)系為:

10f.jpg

如果P通道格式為RGB24,圖像寬度為PrDstWidth,圖像高度為PrDstHeight,分配的DMA地址為PrFrame Buffer,則二者的關(guān)聯(lián)關(guān)系為:

10g.jpg
2.3 配置CAMIF相關(guān)寄存器
①把輸入視頻信號(hào)寬度配置為720像素,高度配置為288像素;
②把輸入視頻信號(hào)格式配置為BT.656 YCbcr 4:2:2格式;
③把輸入視頻信號(hào)順序配置為CbYCr;
④根據(jù)用戶的LCD顯示終端的分辨率配置P通道的圖像寬度、高度像素和格式;
⑤根據(jù)用戶對(duì)圖像的處理需求來(lái)配置C通道的圖像寬度、高度像素和格式;
⑥配置C通道的縮放系數(shù);
⑦配置P通道的縮放系數(shù);
⑧把C通道的DMA地址配置給4組起始地址寄存器;
⑨把P通道的DMA地址配置給4組起始地址寄存器。
2.4 創(chuàng)建流式驅(qū)動(dòng)函數(shù)
下的硬件驅(qū)動(dòng)程序大多采用流式驅(qū)動(dòng)來(lái)開發(fā),因?yàn)樗幸粋€(gè)一致的函數(shù)供用戶調(diào)用。此處,把函數(shù)命名為:CAM_Close()、CAM_Deinit()、CAM_Init()、CAM IOControl()、CAM()pen()、CAM PowerDown()、CAM_PowerUp()、CAM_Read()、CAM_Seek()和CAM-_Write()。
(1)CAM_Init()函數(shù)
該函數(shù)在驅(qū)動(dòng)程序每次被設(shè)備管理器加載時(shí)調(diào)用。其實(shí)現(xiàn)的功能如下:
配置SAA7113,分配C通道、P通道的DMA內(nèi)存空間,根據(jù)輸入信號(hào)源屬性和輸出圖像、預(yù)覽圖像屬性配置CAMIF寄存器。
創(chuàng)建一個(gè)事件CameraEvent,使用內(nèi)核函數(shù)InterruptInitialize(SYSINIR_CAM,CameraEvent,NULL,O)把該事件與的邏輯中斷號(hào)SYSINIR_CAM關(guān)聯(lián)起來(lái),即當(dāng)中斷發(fā)生時(shí)激活該事件。
創(chuàng)建一個(gè)中斷服務(wù)線程。在該線程內(nèi)用WaitForSintgleObjcet(CameraEvent,INFINITE)函數(shù)阻塞線程,并等待CameraEvent激活。把預(yù)覽視頻圖像的功能放到CameraEyent激活之后完成,即把P通道緩沖區(qū)的內(nèi)容拷貝到顯示終端。最后,用InterruptDone(SYSINIR_CAM)函數(shù)結(jié)束本次中斷處理。
(2)CAM_IOControl()函數(shù)
可以說(shuō),該函數(shù)才真正是用戶程序與驅(qū)動(dòng)程序聯(lián)系的主要通道,用戶程序?qū)?a class="contentlabel" href="http://www.butianyuan.cn/news/listbylabel/label/camera">camera接口的控制及數(shù)據(jù)采集均是通過該函數(shù)完成的。其主要功能有:
①打開/關(guān)閉P通道或C通道輸出。
②修改配置參數(shù)。
③控制輸出圖像的放大或縮小。
④如果需要RGB數(shù)據(jù),則讀取P通道緩沖區(qū)內(nèi)容;
如果需要YCbCr數(shù)據(jù),則讀取C通道緩沖區(qū)內(nèi)容。注意,讀取之前要根據(jù)狀態(tài)寄存器CICOSTATUS或CIPRSTATUS的當(dāng)前狀態(tài),確定訪問哪一組緩沖區(qū)。
(3)CAM_Deinit()函數(shù)
當(dāng)卸載本驅(qū)動(dòng)時(shí),該函數(shù)負(fù)責(zé)釋放分配的內(nèi)存空間和資源。
(4)CAM_Open()函數(shù)
該函數(shù)內(nèi)部并沒有具體的功能代碼,只是當(dāng)用戶程序使用CreateFile(TEXT(“CAMl:”),GENERIC_READ|GENERIC WRITE,O,NULL,OP-EN_EXISTING,O,O)函數(shù)打開camera驅(qū)動(dòng)時(shí)調(diào)用該函數(shù),并返回一個(gè)文件句柄?;谠摼浔脩舨拍苓M(jìn)行后續(xù)操作。
(5)CAM_Close()函數(shù)
該函數(shù)內(nèi)部并沒有具體的功能代碼,只有當(dāng)用戶程序使用CloseFile(hfile)函數(shù)關(guān)閉camera驅(qū)動(dòng)時(shí)才調(diào)用該函數(shù),并釋放之前返回的文件句柄。其他接口函數(shù)沒用賦予其具體功能。

結(jié)語(yǔ)
按照上述方法開發(fā)的驅(qū)動(dòng)代碼,連同其他驅(qū)動(dòng)已在PB5.O環(huán)境下編譯通過,生成的內(nèi)核文件在原硬件平臺(tái)下成功運(yùn)行,P通道視頻圖像流暢,C通道圖像質(zhì)量較高。該方法彌補(bǔ)了目前國(guó)內(nèi)在 5.O/6.O操作系統(tǒng)環(huán)境下CCD攝像頭無(wú)法連接到的camera接口的缺陷,為工程技術(shù)人員設(shè)計(jì)嵌入式圖像采集系統(tǒng)時(shí)提供了一種有效手段。


上一頁(yè) 1 2 3 下一頁(yè)

關(guān)鍵詞: S3C2440 camera WinCE 接口

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉