基于WINCE6.0+S3C2443的camera驱动
********************************LoongEmbedded************************
作者:LoongEmbedded(kandi)
時間:2011.02.13
類別:WINCE 驅(qū)動開發(fā)
********************************LoongEmbedded************************
?
?
備注:camera sensor:OV7950,LCD:分辨率480*272,解碼器:TVP5150
?
1.? Camera驅(qū)動的架構(gòu)
先是攝像頭傳感器OV7950抓取并輸出CMOS的NTSC模擬信號到視頻解碼器TVP5150A,然后TVP5150A對輸入的NTSC視頻數(shù)據(jù)解碼,解碼之后輸出ITU-R BT.656數(shù)字視頻信號給S3C2443的camera接口,接著是camera接口的P或C通道的DMA把視頻數(shù)據(jù)復(fù)制到指定的內(nèi)存處,最后是camera驅(qū)動從這指定的內(nèi)存處取出視頻數(shù)據(jù)并且拷貝到LCD顯示的buffer中,這樣就可以看到攝像頭獲取的圖像了。
圖1
?
2.? camera電路設(shè)計部分
圖2
CPU和TVP5150的硬件連接關(guān)系
IICSCL???? --------->GPE14
IICSDA???? --------->GPE15
CAMDATA0?? --------->GPJ0
CAMDATA1?? --------->GPJ1
CAMDATA2?? --------->GPJ2
CAMDATA3?? --------->GPJ3
CAMDATA4?? --------->GPJ4
CAMDATA5?? --------->GPJ5
CAMDATA6?? --------->GPJ6
CAMDATA7?? --------->GPJ7
CAMPCLK??? --------->GPJ8
CAMVSYNC?? --------->GPJ9
CAMHREF??? --------->GPJ10
VIDEO_PDN? --------->GPL8
CAMRESET?? --------->GPJ12
?
3.? TVP5150
3.1 TVP5150A的主要描述
?
TVP5150是TI公司的一種可編程視頻輸入處理芯片,采用CMOS工藝。內(nèi)部包含兩路模擬處理通道,能實現(xiàn)抗混疊濾波、9位A/D轉(zhuǎn)換、自動箝位、自動增益控制(AGC)、時鐘發(fā)生(CGC)、多制式解碼、亮度,對比度,飽和度控制(BCS)和多標(biāo)準(zhǔn)VBI數(shù)據(jù)解碼等功能。
它可以接收2路復(fù)合視頻信號(CVBS)或1路S-Video信號,TVP5150將輸入的模擬視頻信號解碼為符合ITU-R BT656標(biāo)準(zhǔn)的8位4:2:2數(shù)字YCbCr信號(同步信號內(nèi)嵌于數(shù)據(jù)流中串行輸出,這樣情況下可以不使用TVP5150的VSYNC和HSYNC信號),也可以輸出8位4:2:2的ITU-R BT.601信號(同步信號分離,單獨引腳與數(shù)據(jù)流并行輸出,這樣情況需要使用VSYNC和HSYNC信號來同步視頻數(shù)據(jù)的輸出,輸出到camera interface)。
?
TVP5150輸出格式有兩種:8-bit 4:2:2格式和8-bit ITU-R BT.656格式。
兩種格式的區(qū)別:8-bit 4:2:2格式需要輸出行、場同步信號,數(shù)據(jù)總線上只有圖像數(shù)據(jù);ITU-R BT.656格式不需要輸出行、場同步信號,該格式的行、場起始與結(jié)束都是通過嵌入到圖像數(shù)據(jù)中的標(biāo)志碼來指示的,因此該格式又稱為嵌入同步方式。
?
3.2 TVP5150主要引腳的描述
AIP1A
模擬信號輸入端,可作為composite(混合)視頻信號的輸入端,在此設(shè)計中就是用這個引腳來接受OV7950輸出的NTSC模擬視頻信號;也可以作為S-video(單一視頻信號)的luma(亮度)信號端。
?
AIP1B
模擬信號輸入端,可作為composite(混合)視頻信號的輸入端,在此設(shè)計中沒用此引腳用于模擬信號的輸入;也可以作為S-video(單一視頻信號)的chroma(色度)信號端。
?
AVID
有效視頻數(shù)據(jù)指示信號(Active video indicator), AVID低電平時輸出數(shù)據(jù)無效,高電平有效。這樣就提供了一種控制TVP5150輸出視頻數(shù)據(jù)帶寬的方法。通過寄存器設(shè)置,控制AVID的開始和結(jié)束時機,同時對VBLK信號起始時機進行控制,那么就能從一幀圖像中截取某些部分輸出,如下圖所示。
圖3
此設(shè)計中沒有用到AVID這個引腳,但建議使用。
?
FID/GLCO
FID為奇偶場指示信號(odd/even field indicator)或垂直鎖定指示(vertical lock indicator),在場同步信號(VSYNC)下降沿跳變;GLCO為genlock control,串行輸出PLL的信息。
?
HSYNC
水平(也即行)同步信號,在TVP5150輸出的格式是8-bit 4:2:2格式時,會用到這個同步信號。
?
VSYNC
垂直(也即幀)同步信號,在TVP5150輸出的格式是8-bit 4:2:2格式時,會用到這個同步信號。
?
PCLK/SCLK
系統(tǒng)時鐘,是像素時鐘頻率的一倍或者2倍。可以通過對TVP5150的0F寄存器的第0位來選擇,見下圖所示:
圖4
下圖是0F寄存器的相關(guān)描述
圖5
其中PCLK/SCLK腳時鐘信號可對應(yīng)輸出13.5 MHz和27 MHz兩種頻率。
?
PDN
Power-down引腳,低電平有效,也就是說在TVP5150正常工作的模式下,必須保證PDN這個引腳為高電平,一般由CPU的某一個GPIO口來控制這個引腳。
?
RESETB
復(fù)位引腳,低電平有效,只有在PDN=1的時候才能有效使用RESETB的功能,因為PDN=1的時候硬件關(guān)閉了TVP5150模塊。當(dāng)RESETB引腳被拉低的時候,會復(fù)位TVP5150所有寄存器并且重啟TVP5150內(nèi)部處理器,RESETB和PDN引腳一般是結(jié)合使用,如下所示:
圖6
?
SCL
I2C串行時鐘引腳,在讀寫TVP5150的寄存器的值的時候是基于此時鐘來讀寫的。
?
SDA
I2C串行數(shù)據(jù)引腳,用于讀寫TVP5150的寄存器的值。
?
YOUT[6:0]
符合ITU-R BT.656標(biāo)準(zhǔn)的熟悉信號及YCbCr 4:2:2信號輸出引腳。
?
YOUT7/I2CSEL
YOUT7:ITU-R BT.656標(biāo)準(zhǔn)的熟悉信號及YCbCr 4:2:2信號輸出的最高位。
I2CSEL:I2C從地址選擇端,可以通過連接上拉或下拉電阻來獲得所需要的從地址,當(dāng)I2CSEL=1時,I2C從地址是0xBA,當(dāng)I2CSEL=0時,I2C從地址是0xB8。TVP5150是作為從I2C總線的從設(shè)備存在的,這也是由TVP5150的設(shè)計決定的,但如何去理解TVP5150作為從設(shè)備呢,因為我們是通過I2C總線來讀寫TVP5150寄存器的值的,而這些動作都是有CPU來發(fā)起,通過I2總線來讀寫的,所以TVP5150是作為I2C系統(tǒng)的從設(shè)備存在的。
?
3.3 TVP5150作為I2C系統(tǒng)從設(shè)備地址的確定
I2CSEL=1時的設(shè)計圖如下:
圖7
?
I2CSEL=0時的設(shè)計圖如下
圖8
確定了從地址之后,就要確定相應(yīng)的讀寫地址,可以根據(jù)下面兩個表來確定:
寫地址的確定
?
圖9
讀地址的確定
?
圖10
?
4.? S3C2443的camera接口
本設(shè)計中,TVP5150輸出的是ITU-R BT.656格式的視頻信號,也就是說我們輸入ITU-R BT.656格式的視頻數(shù)據(jù)給camera接口。
?
4.1 camera接口的功能框圖
圖11
本設(shè)計主要是用到P通道,所以后面將主要描述P通道的工作。
?
4.2 Camera接口支持的兩種視頻數(shù)據(jù)
圖12
?
?
5.? WINCE+s3c2443下camera驅(qū)動
下面就結(jié)合代碼來分析camera驅(qū)動的工作內(nèi)容以是如何實現(xiàn)的
5.1動態(tài)內(nèi)存的分配
圖13
其中Preview_Mem_Size大小的定義如下
#define Preview_Mem_Size??? (720*288*2*4)
為什么是這個表達式呢,因為TVP5150輸出的是ITU-R BT.656格式的數(shù)字視頻流,所以其視頻數(shù)據(jù)的分辨率是720*288,那為什么還要*2呢?因為我們的LCD驅(qū)動的RGB格式是16位的,而16位是2個字節(jié),所以要*2,那么720*288*2就是進來camera接口的一個視頻幀的字節(jié)大小。*2之后為什么還要*4呢?這有camera接口部分對視頻幀對應(yīng)的內(nèi)存機制有關(guān),見camera接口的相關(guān)描述
圖14
是因為幀內(nèi)存是由4個ping-pong內(nèi)存組成,每個在這里大小是720*288*2個字節(jié)。
?
5.2 動態(tài)申請camera中斷的邏輯中斷號
圖15
5.3 初始化camera的I2C讀寫接口
圖16
?
5.4camera接口的初始化
圖17
5.5 camera接口的復(fù)位
圖18
結(jié)合下圖可以更好理解上面的代碼
圖19
?
5.6 Camera接口的工作時鐘
我們先來看camera接口對其時鐘的描述
圖20
下圖是對camera接口提供時鐘源及camera接口為external camera processor提供時鐘源的代碼
圖21
?
?
5.7 復(fù)位TVP5150
圖22
下圖是CIGCTRL寄存器相關(guān)位的描述
圖23
下面就是通過CAMRESET引腳來控制TVP5150模塊的復(fù)位
圖24
?
5.8 通過I2C驅(qū)動提供的讀寫函數(shù)讀寫TVP5150的相關(guān)寄存器
圖25
下圖是需要寫TVP5150模塊的寄存器的集合
圖26
5.9 初始化camera接口的寄存器
圖27
下圖是圖像縮放示例
圖28
圖29
圖30
圖31
圖32
?
?
S3C2440的camera接口特性及WinCE 下的驅(qū)動
http://www.21ic.com/app/computer/201009/65366_2.htm
?
?
wince5.0下Camera驅(qū)動程序分析
http://bluefish.blog.51cto.com/214870/58112
?
camera驅(qū)動移植總結(jié)
http://www.linuxview.net/show.php?id=155
?
TVP5150的低功耗視頻解碼模塊
http://www.jdzj.com/diangong/article/2009-9-7/12471-1.htm
?
?
ITU-R BT.601 /BT.656數(shù)字視頻標(biāo)準(zhǔn)
http://apps.hi.baidu.com/share/detail/18599810
?
?
總結(jié)
以上是生活随笔為你收集整理的基于WINCE6.0+S3C2443的camera驱动的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: WINCE5.0添加Alphablend
- 下一篇: WINCE5.0+S3C2440支持大容