《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > S3C2440的camera接口特性及WinCE 下的驅動
S3C2440的camera接口特性及WinCE 下的驅動
中電網
摘要: 分析S3C2440的camera接口特性,介紹當攝像設備為CCD攝像頭時,在WinCE 5.0/6.O操作系統環境下開發camera驅動的方法。該方法彌補了目前國內在WinCE 5.0/6.0操作系統環境下CCD攝像頭無法連接到S3C2440的camera接口的缺陷
Abstract:
Key words :

S3C2440是應用十分廣泛且適用于嵌入式系統的一款嵌入式處理器。winCE 5.0/6.O是微軟公司開發的一款專用于嵌入式系統的實時操作系統。其模塊化設計使開發人員可以根據需求定制設備。目前,國內大部分OEM商都提供了對S3C2440的camera接口在WinCE5.O/6.0下的驅動支持。遺憾的是,目前國內OEM商提供的驅動僅限于對幾款微型攝像頭(如ov9650等)的驅動支持。當用戶采用CCD攝像頭作為圖像采集的前端設備時,原來的驅動已經不能使用了,而CCD攝像頭因其優越的性能,在監控領域扮演著主力軍角色。本文從分析S3C2440的camera接口特性出發,詳細介紹當攝像設備為CCD攝像頭時,在WinCE 5.O/6.0操作系統環境下開發camera驅動的形式、方法和主要的驅動代碼。

1 camera接口特性

S3C2440處理器有一個專用的camera接口(CAMIF),該接口支持ITU-R BT.601/656 YCbCr 8位數據格式視頻數據輸入,最大輸入視頻圖像大小為4 09* 096像素。視頻輸入后分兩個通道逐幀保存圖像數據,一個為預覽通道(即P通道),另一個為編解碼通道(即C通道)。兩個通道均通過DMA方式將一幀圖像保存到系統內存SDRAM中,在系統內存*開辟了4組幀圖像緩沖,從而保證了用戶應用程序在讀取幀圖像數據時不影響另一幀圖像數據寫入。其特性如下:

◆支持ITU-R BT.601/656 YCbCr 8位數據格式視頻數據輸入,并可調整Y、Cb、Cr三個信號的順序,以適應不同的視頻信號源;

◆具有DZI功能,相當于數碼變焦;

◆C通道輸出圖像最大為4 09* 096像素;

◆P通道輸出圖像最大為640×480像素;

◆P通道輸出圖像格式可配置為RGBl6或GRB24;

◆C通道輸出圖像格式可配置為YCbCr 4:2:2或YCbCr 4:2:0:

◆輸出圖像可X方向鏡像翻轉、Y方向鏡像翻轉,或180°旋轉;

◆DMA數據傳輸,4組幀圖像緩沖,2個對應的中斷處理,保證視頻實時采集;

◆2個通道不同圖像數據格式輸出,便于用戶程序開發。

CAMIF對外接口信號定義如下:

CAMPCLK輸入的視頻像素同步時鐘。

CAMVSYNC輸入的視頻幀同步時鐘。

CAMHREF輸入的視頻行同步時鐘。

CAMDATA[7:0] 輸入的視頻8位數據。

CAMCLKOUT輸出的時鐘,用于外接的沒有獨立時鐘的camera芯片的主時鐘。當外接的camera芯片有獨立的時鐘時,該信號可不用。

CAMRESET輸出的軟件復位信號,可對外接的camera芯片進行復位。

信號的時序圖如圖1所示。

使用CAMIF時,必須對CAMIF相關寄存器進行正確配置,下面介紹主要寄存器的配置原理。

CAMRCFMT 選擇輸入視頻信號源格式寄存器

①選擇輸入視頻信號源為ITU-R BT.601 YCbCr 8位數據格式,或ITU-R BT.656 YCbCr 8位數據格式。

②選擇輸入視頻信號源水平像素大小和垂直像素大小,一定要和外接的camera設備分辨率一致。

③選擇輸入視頻信號Ycbcr信號順序,一定要和外接camera信號的實際順序一致。

CIWDOFST 從輸入信號中截取中心部分的圖像寄存器

原理是:從輸入信號中截取中心部分的圖像輸出到大小不變的輸出圖像緩沖中,從而實現對圖像的放大或縮小。

①配置該寄存器允許縮放或不允許縮放。

②X方向圖像放大或縮小控制,原理是截切掉左部和右部的圖像像素數。

③Y方向圖像放大或縮小控制,原理是截切掉上部和下部的圖像像素數。

CIGCTRL 全局控制寄存器

通過該寄存器對外接的camera進行復位,即控制CAMRESET信號的電平高低。

CICOTRGFMT C通道輸出圖像格式及大小配置寄存器

①可將C通道輸出圖像格式配置為YCbCr 4:2:2或YCbCr 4:2:0格式。

②可設置C通道輸出圖像X方向像素數。

③可設置C通道輸出圖像Y方向像素數。

④可設置C通道輸出圖像X方向鏡像。

⑤可設置C通道輸出圖像Y方向鏡像。

⑥可設置C通道輸出圖像180°旋轉。

CIPRTRGFMT P通道輸出圖像大小配置寄存器

①可設置P通道輸出圖像X方向像素數。

②可設置P通道輸出圖像Y方向像素數。

③可設置P通道輸出圖像X方向鏡像。

④可設置P通道輸出圖像Y方向鏡像。

⑤可設置P通道輸出圖像180°旋轉。

CICOSTATUS和CIPRSTATUS 狀態寄存器

CICOSTATUS反映C通道數據的寫入狀態,即4組緩沖的哪一組;CIPRSTATUS反映P通道數據的寫入狀態,即4組緩沖的哪一組。用戶程序采集圖像數據時,應根據狀態寄存器當前狀態,決定從哪一組讀出數據。

此外,CICOYSAl~CICOYSA4分別為C通道第1~4幀Y信號數據緩沖起始地址寄存器;CICOCBSAl~CICOCBSA4分別為C通道第1~4幀Cb信號數據緩沖起始地址寄存器;CICOCRSAl~CICOCRSA4分別為C通道第1~4幀Cr信號數據緩沖起始地址寄存器;CIPRCLRSAl~CIPRCLRSA4分別為P通道第1~4幀RGB信號數據緩沖起始地址寄存器。

2 WinCE下的驅動開發

目前,我國市場上的CCD攝像頭只有模擬視頻輸出接口,顯然它不能和S3C2440的camera接口直接連接,硬件上需要增加一塊解碼芯片。解碼芯片把CCD的模擬信號解碼為BT.601/656 YUV4:2:2格式信號,這個信號和CAMIF信號是匹配的,因此解碼芯片輸出就可以直接連接到S3C2440的camera接口。典型的解碼芯片為SAA7113,接口電路如圖2所示。

如果想簡化硬件電路和驅動代碼,也可以根據需求向生產商定制CCD攝像頭,要求生產商生產的CCD攝像頭直接按照ITU-R BT.601/656格式輸出視頻信號。具有這種接口的CCD攝像頭就可以直接和S3C2440的camera接口連接,接口電路如圖3所示。

兩種情況的驅動代碼開發過程基本上是相同的。區別是:前者需要S3C2440通過I2C總線對解碼芯片SAA7113的相關寄存器進行配置,而后者則不需要。下面以前者為例介紹驅動的開發方法。

2.1 配置解碼芯片SAA7113

SAA7113是NXP公司推出的視頻解碼系列芯片,在很多視頻產品(如電視卡、MPEG2、MPEG4)中都有應用。SAA7113的主要作用是把輸入模擬視頻信號解碼成標準的BT.656 YUV4:2:2數字信號,相當于一種A/D器件。它兼容全球各種視頻標準,在我國應用時必須根據我國視頻標準來配置內部寄存器。

對SAA7113配置需要通過I2C總線進行,分配S3C2440的GPIO的E15模擬I2C的SDA線,E14模擬I2C的SCL線。OEM商提供的原驅動是針對手機攝像頭ov9650開發的,二者的配置原理和過程是相同的,但配置內容不同,輸出圖像的格式也不同。ov9650輸出的圖像是逐行掃描的,SAA7 113輸出的圖像則是隔行掃描的。由圖1可知,CAMIF是逐幀輸入的,所以必須把SAA3117的場同步信號VS作為CAMIF的幀同步信號CAMSYNC,輸出圖像是逐場保存的。配置內容為:

①復位SAA3117。

②模擬通道選擇。

③配置亮度、色度、對比度、自動增益控制量。

④將RTSl引腳配置為場同步信號VS,將RTSO信號配置為行同步信號HREF,信號極性應分別與圖1中CAMVSYNC和CAMHREF信號極性一致。

⑤配置圖像寬度為720像素。

⑥配置幀圖像高度為576像素,一幀圖像分奇偶兩場分時輸出,每場圖像高度為288像素。

⑦配置數據格式為BT.656 YCbCr 4:2:2 8位格式輸出。注意,數據口的信號順序為CB0 Y0 CR0 Y1 CBlY2…CR359 Y719。

⑧時鐘采用24.576 MHz的獨立時鐘,此時LLC的頻率為27 MHz,場頻為50Hz,幀頻為25 Hz。

2.2 為CAMlF分配DMA內存空間

因為S3C2440從camera接口采集到的視頻數據是以DMA機制寫到內存的,所以必須為C通道和P通道分別分配邏輯內存(即DMA緩沖區)。Win CE有兩種分配DMA緩沖區的方法:使用CEDDK函數和使用winCE內核函數。建議使用CEDDK函數:

注意:C通道和P通道應分別分配。分配成功后,應將4組YCbCr信號的起始地址與分配給C通道的DMA緩沖區地址關聯起來,將4組RGB信號的起始地址與分配給P通道的DMA緩沖區地址關聯起來。格式不同時,關聯的空間大小是不同的。如果C通道格式為YCbCr4:2:2,圖像寬度為CoDstWidtlh,圖像高度為CoDstHeight,分配的DMA地址為CoFrameBuffer,則二者的關聯關系為:

這樣分配的目的是,保證每一組YCbCr信號的地址空間是連續的,便于用戶程序開發。

如果P通道格式為RGBl6,圖像寬度為PrDstWidth,圖像高度為PrDstHeight,分配的DMA地址為PrFrame. Buffer,則二者的關聯關系為:

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

2.3 配置CAMIF相關寄存器

①把輸入視頻信號寬度配置為720像素,高度配置為288像素;

②把輸入視頻信號格式配置為BT.656 YCbcr 4:2:2格式;

③把輸入視頻信號順序配置為CbYCr;

④根據用戶的LCD顯示終端的分辨率配置P通道的圖像寬度、高度像素和格式;

⑤根據用戶對圖像的處理需求來配置C通道的圖像寬度、高度像素和格式;

⑥配置C通道的縮放系數;

⑦配置P通道的縮放系數;

⑧把C通道的DMA地址配置給4組起始地址寄存器;

⑨把P通道的DMA地址配置給4組起始地址寄存器。

2.4 創建camera流式驅動接口函數

WinCE下的硬件驅動程序大多采用流式驅動來開發,因為它有一個一致的接口函數供用戶調用。此處,把接口函數命名為:CAM_Close()、CAM_Deinit()、CAM_Init()、CAM IOControl()、CAM()pen()、CAM PowerDown()、CAM_PowerUp()、CAM_Read()、CAM_Seek()和CAM-_Write()。

(1)CAM_Init()函數

該函數在驅動程序每次被設備管理器加載時調用。其實現的功能如下:

配置SAA7113,分配C通道、P通道的DMA內存空間,根據輸入信號源屬性和輸出圖像、預覽圖像屬性配置CAMIF寄存器。

創建一個事件CameraEvent,使用WinCE內核函數InterruptInitialize(SYSINIR_CAM,CameraEvent,NULL,O)把該事件與camera的邏輯中斷號SYSINIR_CAM關聯起來,即當中斷發生時激活該事件。

創建一個中斷服務線程。在該線程內用WaitForSintgleObjcet(CameraEvent,INFINITE)函數阻塞線程,并等待CameraEvent激活。把預覽視頻圖像的功能放到CameraEyent激活之后完成,即把P通道緩沖區的內容拷貝到顯示終端。最后,用InterruptDone(SYSINIR_CAM)函數結束本次中斷處理。

(2)CAM_IOControl()函數

可以說,該函數才真正是用戶程序與驅動程序聯系的主要通道,用戶程序對camera接口的控制及數據采集均是通過該函數完成的。其主要功能有:

①打開/關閉P通道或C通道輸出。

②修改配置參數。

③控制輸出圖像的放大或縮小。

④如果需要RGB數據,則讀取P通道緩沖區內容;

如果需要YCbCr數據,則讀取C通道緩沖區內容。注意,讀取之前要根據狀態寄存器CICOSTATUS或CIPRSTATUS的當前狀態,確定訪問哪一組緩沖區。

(3)CAM_Deinit()函數

當卸載本驅動時,該函數負責釋放分配的內存空間和資源。

(4)CAM_Open()函數

該函數內部并沒有具體的功能代碼,只是當用戶程序使用CreateFile(TEXT(“CAMl:”),GENERIC_READ|GENERIC WRITE,O,NULL,OP-EN_EXISTING,O,O)函數打開camera驅動時調用該函數,并返回一個文件句柄。基于該句柄用戶才能進行后續操作。

(5)CAM_Close()函數

該函數內部并沒有具體的功能代碼,只有當用戶程序使用CloseFile(hfile)函數關閉camera驅動時才調用該函數,并釋放之前返回的文件句柄。其他接口函數沒用賦予其具體功能。

結語

按照上述方法開發的驅動代碼,連同其他驅動已在PB5.O環境下編譯通過,生成的內核文件在原硬件平臺下成功運行,P通道視頻圖像流暢,C通道圖像質量較高。該方法彌補了目前國內在WinCE 5.O/6.O操作系統環境下CCD攝像頭無法連接到S3C2440的camera接口的缺陷,為工程技術人員設計嵌入式圖像采集系統時提供了一種有效手段。

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
久久成人18免费网站| 欧美中日韩免费视频| 亚洲欧美日韩在线观看a三区| 精品91在线| 国产曰批免费观看久久久| 国产精品一区在线观看| 国产精品久久久久影院色老大 | 精品成人国产| 国语自产在线不卡| 国产一区二区三区四区在线观看| 国产精品一区二区三区四区| 国产精品美女久久久浪潮软件| 欧美视频亚洲视频| 欧美色另类天堂2015| 欧美日韩另类在线| 欧美日韩你懂的| 欧美小视频在线观看| 欧美丝袜一区二区三区| 欧美三级网页| 国产精品成人aaaaa网站 | 国产在线精品成人一区二区三区| 国产视频在线观看一区二区三区| 国产女主播一区二区| 国产视频综合在线| 精品成人一区二区三区| 亚洲第一级黄色片| 91久久在线视频| 亚洲麻豆国产自偷在线| 99成人在线| 亚洲欧美国产不卡| 欧美呦呦网站| 亚洲国产精品专区久久| 亚洲欧洲日本专区| 亚洲图片欧洲图片日韩av| 亚洲无线观看| 午夜一级在线看亚洲| 久久精品免费播放| 久热精品视频在线| 欧美高清视频一区二区三区在线观看| 欧美另类专区| 国产精品一区二区三区成人| 国内精品国产成人| 亚洲国语精品自产拍在线观看| 亚洲美女电影在线| 亚洲欧美日韩在线| 91久久中文| 午夜国产精品视频| 久久亚洲一区二区| 欧美日韩ab| 国产日韩在线一区二区三区| 亚洲电影免费观看高清完整版在线观看 | 亚洲尤物在线视频观看| 久久国产精品第一页| 欧美99久久| 国产精品久久久久一区二区三区| 国模大胆一区二区三区| 日韩视频在线免费| 久久精品国产久精国产思思| 日韩亚洲精品电影| 久久福利资源站| 欧美日韩不卡一区| 国产在线不卡视频| 99在线精品视频| 亚洲国产一区二区在线| 亚洲欧美中文另类| 欧美~级网站不卡| 国产精品老女人精品视频| 亚洲高清久久| 欧美一区二区日韩一区二区| 亚洲免费观看| 久久久噜噜噜久久久| 欧美视频中文一区二区三区在线观看| 国内精品久久久久影院薰衣草| 日韩一区二区精品| 亚洲国产高清一区| 午夜精品福利一区二区蜜股av| 欧美阿v一级看视频| 国产日韩亚洲欧美精品| 亚洲美女精品久久| 亚洲精品乱码久久久久久日本蜜臀| 欧美在线视频在线播放完整版免费观看 | 一色屋精品视频在线观看网站| 这里只有精品丝袜| 亚洲毛片一区| 老妇喷水一区二区三区| 国产精品视频一区二区高潮| 日韩网站在线观看| 最新国产成人在线观看| 久久精品亚洲国产奇米99| 国产精品高潮粉嫩av| 亚洲激情不卡| 亚洲国产成人av在线| 先锋影院在线亚洲| 欧美日韩精品二区第二页| 在线成人中文字幕| 欧美中文字幕精品| 久久国产精品久久国产精品| 国产精品白丝av嫩草影院| 亚洲精品日韩欧美| 亚洲人久久久| 欧美成人免费小视频| 一色屋精品视频在线看| 久久国产精品高清| 久久精品亚洲热| 国产小视频国产精品| 亚洲性人人天天夜夜摸| 亚洲小说区图片区| 欧美揉bbbbb揉bbbbb| 亚洲精品视频啊美女在线直播| 亚洲麻豆av| 欧美黄色一区二区| 亚洲国产精品成人综合色在线婷婷| 欧美中在线观看| 久久久夜夜夜| 国模一区二区三区| 久久精品国产亚洲aⅴ| 久久久久高清| 国内久久婷婷综合| 欧美在线视频在线播放完整版免费观看 | 久久久中精品2020中文| 国产精品美女主播| 亚洲一区二区毛片| 亚洲欧美综合网| 国产伦精品一区二区三区免费| 亚洲欧美日韩视频一区| 欧美一级在线视频| 国产日韩精品一区二区浪潮av| 午夜在线一区| 久久久亚洲欧洲日产国码αv| 国语自产精品视频在线看| 亚洲大片精品永久免费| 欧美成人一区二区| 亚洲精品乱码久久久久久黑人 | 99精品久久免费看蜜臀剧情介绍| 在线亚洲一区观看| 国产精品久久久久久久午夜| 亚洲一区在线免费| 久久国产66| 伊人狠狠色j香婷婷综合| 亚洲日本免费| 欧美日韩精品欧美日韩精品一| 一区二区动漫| 久久成人精品一区二区三区| 国产视频在线观看一区二区| 亚洲国产99精品国自产| 欧美激情综合五月色丁香| 99视频+国产日韩欧美| 性感少妇一区| 经典三级久久| av成人免费在线观看| 国产精品萝li| 久久精品1区| 欧美精品情趣视频| 亚洲一区欧美| 免费在线成人| 一区二区三区高清不卡| 久久精品国产免费看久久精品| 在线观看久久av| 亚洲网址在线| 国外视频精品毛片| 一本大道久久a久久综合婷婷| 国产精品丝袜久久久久久app| 久久精品天堂| 欧美日韩综合精品| 欧美综合国产| 欧美日韩视频在线第一区| 亚洲欧美中文字幕| 欧美精品18| 午夜在线视频观看日韩17c| 欧美fxxxxxx另类| 亚洲在线第一页| 欧美黄色免费网站| 午夜精品视频| 欧美日韩人人澡狠狠躁视频| 亚洲宅男天堂在线观看无病毒| 美女精品一区| 亚洲在线日韩| 欧美另类videos死尸| 久久成人综合视频| 欧美午夜在线视频| 亚洲精品免费电影| 国产曰批免费观看久久久| 亚洲小说欧美另类婷婷| 一区二区在线看| 欧美一区日本一区韩国一区| 亚洲黄色有码视频| 久久久久国内| 在线综合亚洲| 欧美精品一区二区蜜臀亚洲| 亚洲欧美日韩精品在线| 欧美日韩裸体免费视频| 亚洲成色777777在线观看影院 | 国产免费一区二区三区香蕉精| 亚洲人体1000| 国产一区999| 午夜精品电影| 9久re热视频在线精品| 美女视频黄 久久| 欧美一区2区三区4区公司二百| 欧美色偷偷大香|