摘 要:隨著現(xiàn)代圖像采集技術(shù)的迅速發(fā)展,CMOS圖像傳感器正在得到越來越廣的應(yīng)用。但目前絕大多數(shù)控制器沒有SCCB總線接口,給其應(yīng)用帶來一定的不足。在介紹OmniVision公司的CMOS圖像傳感器中的SCCB總線的規(guī)范及總線構(gòu)成和數(shù)據(jù)傳輸形式特點(diǎn)后,并針對(duì)低成本、低功耗的要求以基于ARM 7內(nèi)核的三星公司的S3C44B0X平臺(tái)上利用通用I/O接口與CMOS圖像傳感器OV7660芯片為例,說明了SCCB總線在嵌入式系統(tǒng)中的軟硬件設(shè)計(jì)實(shí)現(xiàn)方法。
關(guān)鍵詞:CMOS圖像傳感器;S3C44B0;OV7660;SCCB
中圖分類號(hào):TP273文獻(xiàn)標(biāo)識(shí)碼:B
文章編號(hào):1004-373X(2008)22-183-04
Realization andDesign of SCCB Based on S3C44B0 Embedded System
YANG Kan1,SUN Yao1,ZHAN Yanyan2
(1.Automation College,Harbin Engineering University,Harbin,150001,China;
2.Information Engineering College,Shenyang Ligong University,Shenyang,110168,China)
Abstract:With development of the image acquisition technique,CMOS image sensor is applying more and more widely.But the most MCUs have no SCCB bus interface,it offers some insufficiency.This paper introduces the specification of the OmniVision CMOS image sensor′s SCCB and the data form in the bus firstly.It expounds a realization of hardware and software of SCCB by the application which expands I/O port in S3C44B0 embedded system and OV7660 chip in the low cost,low energy request,it has got better effect in the practice application.
Keywords:CMOS image sensor;S3C44B0;OV7660;SCCB
現(xiàn)代圖像采集技術(shù)發(fā)展迅速,各種采集方法已經(jīng)相當(dāng)成熟。隨著CMOS技術(shù)與工藝的發(fā)展,CMOS圖像傳感器不僅在噪聲上得到了有效改善,而且分辨率也已得到了明顯提高,有的CMOS圖像傳感器已經(jīng)達(dá)到千萬(wàn)像素以上。CMOS圖像傳感器由于可以將時(shí)序處理電路和圖像信號(hào)的前端放大與數(shù)字化部分集成于一個(gè)芯片中從而使得COMS圖像傳采集芯片集成度不斷提高,同時(shí)因?yàn)镃MOS圖像傳感器和CCD傳感器相比在的價(jià)格和使用上有明顯的優(yōu)勢(shì),因此其應(yīng)用領(lǐng)域變得更加廣泛,在低端產(chǎn)品的應(yīng)用中有完全替代CCD傳感器。目前的CMOS圖像傳感器芯片大都采用SCCB作為其控制總線,通過它設(shè)計(jì)人員可以很方便地對(duì)芯片中的控制寄存器進(jìn)行訪問編程操作以控制采集圖像的格式和質(zhì)量。然而目前絕大多數(shù)的控制器并沒有對(duì)應(yīng)的SCCB接口,所以需要用普通的I/O口來模擬SCCB接口。
1 SCCB協(xié)議
SCCB協(xié)議是OmniVision公司開發(fā)的串行攝像頭控制總線(Serial Camera Control Bus)[1],它用于對(duì)CMOS圖像傳感器芯片中的寄存器進(jìn)行讀寫。系統(tǒng)上電后需要對(duì)CMOS圖像傳感器進(jìn)行初始化,以確定采集圖像的開窗位置、開窗大小和彩色工作模式等,這些參數(shù)是受OV7660內(nèi)部相應(yīng)寄存器的值控制的,可通過SCCB總線對(duì)其進(jìn)行設(shè)置。
SCCB的接口有SCCE,SIO_C,SIO_D(SCCE是串行總線使能信號(hào),SIO_C是串行總線時(shí)鐘信號(hào),SIO_D是串行總線數(shù)據(jù)信號(hào)線)三條引腳。OV7660芯片上沒有SCCE引腳,但可以現(xiàn)實(shí)單主對(duì)單從方式的通信。SCCB的數(shù)據(jù)傳輸由主器件控制,主器件能夠發(fā)出數(shù)據(jù)傳輸啟動(dòng)信號(hào)、時(shí)鐘信號(hào)以及傳送結(jié)束時(shí)的停止信號(hào)。通常主器件是微處理器,它尋址訪問的設(shè)備都有1個(gè)惟一的地址(ID),使用軟件尋址來識(shí)別總線上的從器件,省去了從器件的片選。因此,只需要2根線(串行時(shí)鐘線SIO_C和串行數(shù)據(jù)線SIO_D),連接結(jié)構(gòu)如圖1所示。組成SCCB的SIO_C和SIO_D必須經(jīng)過上拉電阻RP接到正電源上。
SCCB協(xié)議中定義啟動(dòng)、停止、數(shù)據(jù)傳輸條件如圖2所示:?jiǎn)?dòng)傳輸條件:當(dāng)SIO_C為高電平時(shí),如果SIO_D出現(xiàn)一個(gè)下降沿,則表明SCCB開始傳輸數(shù)據(jù);停止傳輸條件:當(dāng)SIO_C為高電平時(shí),如果SIO_D出現(xiàn)一個(gè)上升沿,則表明SCCB停止傳輸數(shù)據(jù)。除了開始和停止?fàn)顟B(tài),在數(shù)據(jù)傳輸期間,SIO_D上數(shù)據(jù)的傳輸受SIO_C的控制。當(dāng)SIO_C為低電平時(shí),SIO_D上的數(shù)據(jù)有效,SIO_D為穩(wěn)定數(shù)據(jù)狀態(tài),SIO_C每出現(xiàn)1個(gè)正脈沖,將傳送1位數(shù)據(jù),其中2根線的上升和下降時(shí)延、高低電平的維持時(shí)間都有較嚴(yán)格的要求軟件的延時(shí)時(shí)間要根據(jù)CPU速度和GPIO口的速度精確計(jì)算后才能使通訊保持順暢。
SCCB協(xié)議中定義的基本傳輸格式如圖3所示,完整的數(shù)據(jù)傳輸包括2個(gè)或3個(gè)階段。每一階段包中含9位二進(jìn)制數(shù)據(jù),其中高8位為所要傳輸?shù)?位數(shù)據(jù),最低位根據(jù)主器件的數(shù)據(jù)傳輸是讀操作還是寫操作而確定。在進(jìn)行主器件寫操作時(shí),全部階段的最低位均是無關(guān)位(低或高電平均可);讀操作時(shí),第一階段的最低位時(shí)無關(guān)位,第二階段的最低位為NA——主器件驅(qū)動(dòng)為高電平有效。
SCCB協(xié)議定義了2種寫操作,即三相寫操作和兩相寫操作。三相寫操作是往從器件的目的寄存器中寫入數(shù)據(jù)。在三相寫操作中,第一階段寫從器件的8位ID地址和無關(guān)位,第二階段寫從器件內(nèi)的目標(biāo)寄存器的8位地址和無關(guān)位,第三階段寫要求寫入寄存器的8位數(shù)據(jù)和無關(guān)位。兩相寫操作只有三相寫操作的前兩個(gè)階段。兩相寫操作的目的是為了確定讀操作中的從器件地址,這是因?yàn)閮上嘧x操作不能提供所要求讀取的寄存器的地址。
SCCB協(xié)議定義兩相讀操作,它用于讀取從器件目的寄存器中的數(shù)據(jù)。在第一階段中寫從器件讀操作8位IDR和無關(guān)位,在第二階段中讀取寄存器中的8位數(shù)據(jù)和寫NA bit。在兩階段讀循環(huán)操作前,必須有一個(gè)兩相或三相的寫循環(huán)操作,以提供讀操作中的寄存器地址。
2 基于S3C44B0X的SCCB實(shí)現(xiàn)
本設(shè)計(jì)系統(tǒng)由S3C44B0X與OV7660組成,實(shí)現(xiàn)軟件模擬SCCB總線的功能。
2.1 SCCB硬件設(shè)計(jì)方法
S3C44B0X是韓國(guó)三星電子公司研發(fā)的,一款采用不帶MMU的ARM7DMI內(nèi)核的微處理器,可在其上運(yùn)行μCLinux操作系統(tǒng)[2]。它提供高性能、低功耗、低價(jià)格的微處理器解決方案,可用于手持設(shè)備和其他通用設(shè)備。S3C44B0X的系統(tǒng)時(shí)鐘最高可達(dá)到60 MHz,8 kB大小Cache或者是可選的內(nèi)部SRAM,帶自動(dòng)握手的2通道UART,4通道定制器和PLL倍頻器,以及有著豐富的外部資源接口。S3C44B0X提供了71個(gè)通用I/O口,但是并不提供SCCB接口。因此在本次設(shè)計(jì)選用PF口的PF0,PF1分別作為SIO_C和SIO_D接口來模擬SCCB總線。
S3C44B0X采用0.25 μm工藝的CMOS標(biāo)準(zhǔn)宏單元和存儲(chǔ)編譯器,它的低功耗精簡(jiǎn)和出色的全靜態(tài)設(shè)計(jì)特別適用對(duì)成本和功耗敏感的應(yīng)用。同時(shí)S3C44B0X才采用了一種新的總線結(jié)構(gòu),即SAMBAⅢ(三星ARM CPU嵌入式微處理器總線結(jié)構(gòu))。S3C44B0X通過提供全面的、通用的片上外設(shè),大大減少了系統(tǒng)電路中除處理器以外的元器件配置,從而最小化系統(tǒng)的成本。
S3C44B0X的PF口是由PCONF、PDATF和PUPF三個(gè)控制寄存器來控制。當(dāng)PCONF的低4位為0001時(shí),PF0設(shè)置為輸出(“開漏”輸出)口,PF1設(shè)置為輸入口;當(dāng)PCONF的低4位為0101時(shí),PF0和PF1均設(shè)置為輸出(“開漏”輸出)口。當(dāng)PUPF的低2位為00時(shí),PF0HE PF1均設(shè)置為上拉允許;當(dāng)PUPF的低2位為11時(shí),PF0和PF1均設(shè)置為上拉禁止。結(jié)合上述2個(gè)寄存器,通過對(duì)PDATF的低2位的寫操作,可以模擬SCCB。控制系統(tǒng)的硬件框圖如圖4所示。
OV7660是美國(guó)OmniVison公司開發(fā)的CMOS彩色圖像傳感器芯片[3]。它具有30萬(wàn)像素,在攝像手機(jī),數(shù)字照相機(jī)等方面應(yīng)用比較廣泛。該芯片將CMOS光感應(yīng)核與外圍支持電路集成在一起,具有可編程控制與視頻模/數(shù)混合輸出等功能,該芯片運(yùn)用專有的傳感器技術(shù),能夠消除普通的光電干擾,例如噪聲、燈光閃爍等,輸出清晰、穩(wěn)定的彩色圖像。其性能特點(diǎn)有:?jiǎn)涡酒?/5尺寸;1.8 V核電壓,2.8 V I/O電壓; 標(biāo)準(zhǔn)的SCCB接口;開窗功能,局部圖像輸出;視頻信號(hào)輸出:RGB/Raw RGB/YUV/YCbCr;自動(dòng)曝光控制、自動(dòng)白平衡、自動(dòng)增益控制、自動(dòng)亮度控制;圖像質(zhì)量控制,包括顏色飽和度、銳度、伽馬校正等。
通過串行圖像控制總線(SCCB)控制接口,可以對(duì)OV7660芯片內(nèi)部所有的寄存器的值進(jìn)行修改,即可以設(shè)置成全幀、半幀、8位窗口輸出。OV7660可在VGA格式下,通過用戶的設(shè)置,將其圖像品質(zhì)設(shè)置為30幀/s,而且所有的圖像處理功能(包括曝光控制、gamma校正、白電平平衡、彩色飽和度、色調(diào)控制)都可以進(jìn)行設(shè)定,從而完成對(duì)OV7660采集的圖像質(zhì)量和格式控制。OV7660 CMOS圖像傳感器共有165個(gè)寄存器,其中79個(gè)為廠家保留,5個(gè)只讀,包括產(chǎn)品ID、制造商ID等,余下的86個(gè)則可以由用戶根據(jù)需要通過SCCB接口設(shè)置,是可讀可寫的,完成采集圖像格式和質(zhì)量的控制。
2.2 SCCB總線軟件實(shí)現(xiàn)
軟件模擬SCCB就是通過PUPF,PCONF和PDATF三個(gè)寄存器,在PF0,PF1接口上模擬出SCCB總線的狀態(tài)。根據(jù)圖2(c)所示,每一位數(shù)據(jù)的模擬分成數(shù)據(jù)改變、數(shù)據(jù)傳輸、數(shù)據(jù)保持3個(gè)階段,這可以通過寫PDATFA進(jìn)行模擬。寫操作中寫“1”和寫“0”的程序分別如下:
if(data1(0x80>>i))//寫1
{
rPDATF|=0x002;DelayMs(10);
rPDATF|=0x001;DelayMs(10);
rPDATF=0x1fe;DelayMs(5);}
else//寫0
{rPDATF=0x1ff;DelayMs(10);
rPDATF|=0x001;DelayMs(10);
rPDATF=0x1ff;DelayMs(5);}
讀操作中的讀“1”和讀“0”的程序分別如下:
rPDATF=0x1fe;DelayMs(10);
rPDATF|=0x001;DelayMs(10);
if (rPDATF=0x002)
{
data|=0x80>>i;//讀1
rPDATF=0x1fe;DelayMs(5);}
else //讀0
{rPDATF=0x1fe;DelayMs(5);}
在對(duì)最低位(第9位)的處理時(shí),寫操作時(shí)的處理方法如下:
rPDATF=0x1fe;DelayMs(10); //第9位的寫操作
rPDATF|=0x002;DelayMs(10);
rPDATF=0x1fe;DelayMs(5);
讀操作的程序如下:
rPDATF=0x002;DelayMs(10); //第9位的讀操作
rPDATF=0x003;DelayMs(10);
rPDATF=0x1fe;DelayMs(5);
根據(jù)SCCB協(xié)議,可以畫出程序流程圖,如圖5(a)所示的寫操作。即在寫寄存器過程中要先發(fā)送從器件OV7660寫操作地址ID(0X42)和無關(guān)位,然后發(fā)送寫數(shù)據(jù)的目的寄存器地址和無關(guān)位,接著發(fā)送要寫入的數(shù)據(jù)和無關(guān)位。需要指出的是,PF0總是為輸出口;在傳輸無關(guān)位時(shí),PF1口要設(shè)置為輸入口,其他時(shí)候PF1為輸出口。第一次寫操作前,PUPF的高2位設(shè)置為00,使得PF0,PF1口上拉為11,以滿足初次啟動(dòng)的條件。
rPDATF=0x1fe;DelayMs(5);
讀操作的程序如下:
rPDATF=0x002;DelayMs(10); //第9位的讀操作
rPDATF=0x003;DelayMs(10);
rPDATF=0x1fe;DelayMs(5);
根據(jù)SCCB協(xié)議,可以畫出程序流程圖,如圖5(b)所示的寫操作。即在寫寄存器過程中要先發(fā)送從器件OV7660寫操作地址ID(0X42)和無關(guān)位,然后發(fā)送寫數(shù)據(jù)的目的寄存器地址和無關(guān)位,接著發(fā)送要寫入的數(shù)據(jù)和無關(guān)位。需要指出的是,PF0總是為輸出口;在傳輸無關(guān)位時(shí),PF1口要設(shè)置為輸入口,其他時(shí)候PF1為輸出口。第一次寫操作前,PUPF的高2位設(shè)置為00,使得PF0,PF1口上拉為11,以滿足初次啟動(dòng)的條件。
由于采用的是通用I/O接口模擬實(shí)現(xiàn)SCCB總線,在實(shí)際應(yīng)用中,不同系統(tǒng)的負(fù)載特性也不一樣;不同MCU的工作頻率也有差異;由于不同器件的讀、寫周期不同,響應(yīng)時(shí)間、波特率控制都需要考慮,以滿足從器件的特性參數(shù)保證圖像采集系統(tǒng)的正常工作。
在采用三相寫數(shù)據(jù)的方式中,如果給連續(xù)的寄存器些數(shù)據(jù),寫完一個(gè)寄存器后,OV7660會(huì)自動(dòng)把寄存器地址加1,從而三相寫數(shù)據(jù)變成了兩相寫數(shù)據(jù),由于本設(shè)計(jì)中只需要對(duì)有限個(gè)不連續(xù)寄存器的數(shù)據(jù)進(jìn)行更改,所以只對(duì)需要更改數(shù)據(jù)的寄存器進(jìn)行寫數(shù)據(jù)。對(duì)每一個(gè)變化的寄存器,都采用三相寫數(shù)據(jù)的方法。
3 結(jié) 語(yǔ)
本文以S3C44B0X的GPIO接口模擬SCCB總線完成了其對(duì)COMS圖像傳感器OV7660芯片的寄存器控制。使得CMOS圖像傳感器OV7660工作于逐行掃描方式,圖像采集窗口為320×2 400。通過SCCB接口對(duì)OV7660相關(guān)寄存器的設(shè)置:讀OV7660的1C,1D寄存器,判斷芯片是否正常; 設(shè)置0X12寄存器,設(shè)置窗口為320×240,輸出位RGB格式。這樣可以使CMOS圖像傳感器采集的圖像可以根據(jù)使用者的要求改變圖像格式和質(zhì)量。
參考文獻(xiàn)
[1]OmniVision Serial Camera Control Bus(SCCB)Functional Specification.OmniVision Technologies,Version:2.1,2003,2.
[2]佚名.ARMSYS44B0-P嵌入式系統(tǒng)開發(fā)板使用說明.北京:北京航空航天大學(xué)出版社,2006.
[3]OV7660/0V7161 COMS VGA(640×480) CAMERCHIP(datasheep) OmniVision Technologies,Version:1.91,2005,1.
[4]OV7660/OV7161 COMS VGA (640x480) CAMERCHIP (datasheet).OmniVision Technologies,Version:1.91 2005,1.
[5]王士元.C高級(jí)實(shí)用程序設(shè)計(jì).北京:清華大學(xué)出版社,1996.
[6]譚浩強(qiáng).C程序設(shè)計(jì).2版.北京:清華大學(xué)出版社,1999.
[7]馬忠梅.單片機(jī)的C語(yǔ)言應(yīng)用程序設(shè)計(jì).北京:北京航空航天大學(xué)出版社,1997.
[8]錢剛,丁萬(wàn)山.基于ARM及CPLD的紙幣圖像采集系統(tǒng)的設(shè)計(jì).計(jì)算機(jī)測(cè)量與控制,2007,15(5):683-685,697.
[9]王翥,佟曉筠.接觸式圖像傳感器的信號(hào)讀取與補(bǔ)償技術(shù).今日電子,2002(5):14-15.
[10]馬宏偉,張軍平,張建華,等.基于32位嵌入式系統(tǒng)的實(shí)時(shí)圖像采集模塊.電子技術(shù)應(yīng)用,2003,29(4):12-14.
作者簡(jiǎn)介 楊 侃 男,1979年出生,江蘇太倉(cāng)人,碩士研究生。主要研究方向?yàn)閭鞲衅鳒y(cè)控技術(shù),嵌入式系統(tǒng)。
孫 堯 男,1964年出生,天津人,博士生導(dǎo)師,教授。主要研究方向?yàn)閭鞲衅鳒y(cè)控。
詹艷艷 女,1981年出生,遼寧沈陽(yáng)人,助教。主要研究方向?yàn)樾盘?hào)處理。