一種應(yīng)用于ARM7的CMOS圖像采集系統(tǒng)
Samsung公司的S3C4510B是基于以太網(wǎng)系統(tǒng)高性價(jià)比的16/32位RISC微控制器,內(nèi)含一個(gè)由ARM公司設(shè)計(jì)的16/32位 ARM7TDMI RISC處理器核,ARM7TDMI為低功耗、高性能的16/32核,它具有0.9MIPS/MHz的三級(jí)流水線結(jié)構(gòu),支持32位ARM指令集和16位 Thumb指令集,有著功能豐富的片內(nèi)外圍功能模塊,可掛載大容量的存儲(chǔ)器,最適合用于對(duì)價(jià)格及功耗敏感的應(yīng)用場(chǎng)合。 CMOS(Complementary Metal Oxide Semiconfuctor),即“互補(bǔ)金屬氧化物半導(dǎo)體”。它是計(jì)算機(jī)系統(tǒng)內(nèi)一種重要的芯片,將它加工也可以作為圖像采集系統(tǒng)中的感光傳感器。隨著 CMOS技術(shù)的發(fā)展及市場(chǎng)需求的增加,這種圖像傳感器得以迅速發(fā)展,它具有高度集成化、低成本、低功耗、單一工作電壓、局部像素可編程、隨機(jī)讀取等優(yōu)點(diǎn),適用于超微型數(shù)碼相機(jī)、攝像機(jī)、安防監(jiān)控、汽車防盜、機(jī)器視覺(jué)、指紋識(shí)別、手機(jī)等圖像領(lǐng)域。本文介紹的是由美國(guó)OmniVision公司生產(chǎn)的 OV7640彩色CMOS圖像傳感器,它采用獨(dú)特的傳感器專利工藝技術(shù)和先進(jìn)的算法(algorithms)解決了先前CMOS感光器件固定圖像噪聲(FPN)的限制。由這兩種芯片組成的系統(tǒng)有較強(qiáng)的實(shí)際應(yīng)用價(jià)值。
1 系統(tǒng)的基本硬件組成
整個(gè)圖像采集系統(tǒng)主要有CMOS圖像傳感芯片OV7640、三星4510B控制器(板載64M存儲(chǔ)器)、晶振電路、電源幾部分組成。
OV7640是高度集成的彩色攝像芯片,可帶1/4”鏡頭,支持多種格式,內(nèi)設(shè)的SCCB(Serial Camera Control Bus)串行控制總線接口,提供簡(jiǎn)單控制方式,通過(guò)該接口,我們可以對(duì)OV7640芯片內(nèi)部所有寄存器值進(jìn)行修改,從而完成對(duì)OV7640的控制。另外,OV7640內(nèi)置了640×480分辨率的鏡像陣列,A/D轉(zhuǎn)換器,并支持外部水平、垂直同步輸入格式,外部微控制器和RAM界面、數(shù)字視頻輸出、增益控制、黑白平和白平衡等在內(nèi)的控制寄存器功能模塊。
S3C4510B是一款不帶MMU的ARM7微處理器,可在其上運(yùn)行uCLinux操作系統(tǒng)。它的系統(tǒng)時(shí)鐘最高可達(dá)60MHz,有著豐富的外部資源接口,系統(tǒng)板載了64M的存儲(chǔ)器,可直接利用板載的存儲(chǔ)器進(jìn)行圖像數(shù)據(jù)的暫存,以最大限度的簡(jiǎn)化系統(tǒng)。
系統(tǒng)的時(shí)鐘頻率由一顆24MHz的有源晶振提供,系統(tǒng)電源為5V,S3C4510B需要1.8V和3.3V的電壓,OV7640需要2.5V和3.3V的電壓輸入,可通過(guò)電平轉(zhuǎn)換芯片LM1117進(jìn)行轉(zhuǎn)換得到所需要的電壓。
2 硬件設(shè)計(jì)的思路和要點(diǎn)
系統(tǒng)功能是應(yīng)用4510B芯片的GPIO口對(duì)OV7640圖像數(shù)據(jù)進(jìn)行采集,然后進(jìn)行相應(yīng)的處理和識(shí)別。OV7640包含有8位數(shù)據(jù)D0-D7、同步信號(hào)VSYNC、HREF、PCLK,這些信號(hào)需要送給CPU以讀取圖像數(shù)據(jù)和保證同步;另一方面,由于OV7640默認(rèn)幀頻為30Hz,在此幀頻下的圖像數(shù)據(jù)輸出為30Hz*307.2K=9.216Mbytes/s,QVGA方式的數(shù)據(jù)率為30Hz*76.8K=2.3Mbytes/s,在不考慮同步的情況下已遠(yuǎn)遠(yuǎn)超過(guò)I/O口的響應(yīng)速度,因此必須重新設(shè)置以降低幀頻。因此,在本系統(tǒng)中對(duì)OV7640的訪問(wèn)有三個(gè):第一是設(shè)置地址號(hào)為0x11的幀頻控制器CLKRC以降低幀頻,第二是設(shè)置地址號(hào)為0x14的控制器COMC以設(shè)置像素為320*240,最后是設(shè)置地址號(hào)為0x28的COMH以設(shè)置掃描格式。從信號(hào)的使用角度來(lái)說(shuō),需要用到OV7640的8位數(shù)據(jù)線D0-D7(雙向),同步信號(hào)VSYNC、HREF、PCLK(單向,供控制器讀),SCCB總線SIO_C(單向)、SIO_D(雙向)。
由于4510B板上IO口資源相當(dāng)豐富,8位并行數(shù)據(jù)線和控制線都可以接在IO口上,設(shè)置好輸入輸出關(guān)系,通過(guò)軟件模擬SCCB總線實(shí)現(xiàn)控制器對(duì) OV7640的控制。連接采用4510為主機(jī),OV7640為從機(jī)的方式。在設(shè)置完幀頻以后就可以根據(jù)同步信號(hào)對(duì)一幀一幀的圖像進(jìn)行采集了。系統(tǒng)連接圖如圖1所示。
3 圖像采集的工作過(guò)程
1)通過(guò)SCCB總線設(shè)置OV7640的幀頻
系統(tǒng)上電后需要對(duì)CMOS圖像傳感器進(jìn)行初始化,以確定采集圖像的開(kāi)窗位置、開(kāi)窗大小和黑白工作模式等。這些參數(shù)是受OV7640內(nèi)部相應(yīng)寄存器的值控制的,可通過(guò)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))三條引腳。OV7640芯片上沒(méi)有SCCE引腳,但也可實(shí)現(xiàn)單主對(duì)單從方式的通訊,控制總線規(guī)定的條件如下:當(dāng) SIO_C為高電平時(shí),如SIO_D產(chǎn)生一個(gè)下降沿表明數(shù)據(jù)傳輸?shù)拈_(kāi)始,如SIO_D產(chǎn)生一個(gè)上升沿表明數(shù)據(jù)傳輸?shù)慕Y(jié)束;為了避免傳送無(wú)用的信息位,分別在傳輸開(kāi)始之前、傳輸結(jié)束之后將SIO_D設(shè)置為高電平。在數(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)一正脈沖,將傳送一位數(shù)據(jù)。其中兩根線的上升和下降時(shí)延、高低電平的維持時(shí)間都有較嚴(yán)格的要求,軟件的延時(shí)時(shí)間要根據(jù)CPU速度和GPIO口的速度精確的計(jì)算后才能使通訊保持順暢。如圖2所示:
[!--empirenews.page--]
配置的具體方法如下:采用三相寫(xiě)數(shù)據(jù)的方式,即在寫(xiě)寄存器過(guò)程中要先發(fā)送OV7640的ID地址,然后發(fā)送數(shù)據(jù)的目的寄存器地址,接著為要寫(xiě)的數(shù)據(jù)。如果給連續(xù)的寄存器寫(xiě)數(shù)據(jù),寫(xiě)完一個(gè)寄存器后,OV7640會(huì)自動(dòng)把寄存器地址加1,程序可繼續(xù)向下寫(xiě),而不需要再次輸入地址,從而三相寫(xiě)數(shù)據(jù)變?yōu)榱藘上鄬?xiě)數(shù)據(jù),由于本系統(tǒng)中只需要對(duì)有限個(gè)不連續(xù)寄存器的數(shù)據(jù)進(jìn)行更改,如果采用對(duì)全部寄存器都加以配置這一方法的話,會(huì)浪費(fèi)很多時(shí)間和資源,所以我們只對(duì)需要更改數(shù)據(jù)的寄存器進(jìn)行寫(xiě)數(shù)據(jù)。對(duì)于每一個(gè)變化的寄存器,都采用三相寫(xiě)數(shù)據(jù)的方法。三相寫(xiě)數(shù)據(jù)的傳輸周期如圖3所示。
2) 圖像數(shù)據(jù)的采集
系統(tǒng)配置完畢后,將進(jìn)行圖像數(shù)據(jù)的采集。在采集圖像的過(guò)程中,最主要的是判別一幀圖像數(shù)據(jù)的開(kāi)始和結(jié)束時(shí)刻。在仔細(xì)研究了OV7640輸出同步信號(hào)(VSYNC是垂直同步信號(hào)、HREF是水平同步信號(hào)、PCLK是輸出數(shù)據(jù)同步信號(hào))的基礎(chǔ)上,用C語(yǔ)言實(shí)現(xiàn)了采集過(guò)程起始點(diǎn)的精確控制。圖4表示了圖像采集期間三個(gè)同步信號(hào)的時(shí)序關(guān)系示意圖。
VSYNC的上升沿表示一幀新的圖像的到來(lái),下降沿表示一幀圖像數(shù)據(jù)采集的開(kāi)始(CMOS圖像傳感器是按列采集圖像的)。HREF是水平同步信號(hào),其上升沿表示一列圖像數(shù)據(jù)的開(kāi)始。PCLK是輸出數(shù)據(jù)同步信號(hào)。當(dāng)HREF為高電平期間,才能開(kāi)始有效的數(shù)據(jù)采集,PCLK下降沿的到來(lái)表明數(shù)據(jù)的產(chǎn)生,PCLK每出現(xiàn)一個(gè)下降沿傳輸一位數(shù)據(jù)。HREF為高電平期間共傳輸640位數(shù)據(jù)。在一幀圖像中,即VSYNC為低電平期間,HREF出現(xiàn)480次高電平。當(dāng)下一個(gè)VSYNC信號(hào)的上升沿到來(lái)時(shí),就表明分辨率640*480的圖像采集過(guò)程結(jié)束。
4. 軟件編程設(shè)計(jì)
本文的軟件設(shè)計(jì)是運(yùn)行于uCLinux環(huán)境下的標(biāo)準(zhǔn)C程序。軟件設(shè)計(jì)的主要步驟是,在系統(tǒng)加電時(shí),對(duì)系統(tǒng)進(jìn)行初始化,包括S3C4510B的初始化和SCCB的配置,配置完后,當(dāng)接受到開(kāi)始采集信號(hào)后,根據(jù)同步信號(hào)的狀態(tài)判斷是否開(kāi)始采集數(shù)據(jù),采集完一幀圖像后將數(shù)據(jù)存入FLASH中。由于篇幅有限,下面給出了采集部分的程序代碼:
[!--empirenews.page--]
void collect()
{
int pixel_count = 0;
int line_count = 0;
int i,j;
IOPMOD = IOPMOD & 0x00000000; /*設(shè)置IO口為輸入*/
while (!VSYNC); /*等待新的一幀開(kāi)始*/
for (line_count=0; line_count<480; line_count++)
{
while (!HREF); /*等待新的一列開(kāi)始*/
for (pixel_count=0; pixel_count<640; pixel_count++)
{
while (PCLK); /*等待一個(gè)新的象素點(diǎn)*/
buf[line_count][pixel_count] = PIXEL;
while (!PCLK); /*等待這個(gè)象素點(diǎn)傳輸完畢*/
}
while (HREF); /*等待這一列傳輸完畢*/
}
while (VSYNC); /*等待這一幀傳輸完畢*/
}
5.結(jié)束語(yǔ)
用ARM控制OV7640的數(shù)據(jù)采集系統(tǒng)性能良好,這種信號(hào)采集方法適合應(yīng)用在對(duì)速率要求不高,追求高性價(jià)比的場(chǎng)合,以最簡(jiǎn)單的方式構(gòu)建自主式系統(tǒng)。本系統(tǒng)已實(shí)現(xiàn)了SCCB總線的寫(xiě)功能,讀功能需要一個(gè)更嚴(yán)格的時(shí)序,由于S3C4510B的I/O口速度較慢難以實(shí)現(xiàn)。另外,S3C4510B的時(shí)鐘頻率只有50MHz左右,信號(hào)的同步是個(gè)難題,可以考慮在接收端再加上一個(gè)時(shí)鐘電路以實(shí)現(xiàn)嚴(yán)格的信號(hào)同步。
總而言之,本系統(tǒng)具有兩大特點(diǎn):一是開(kāi)放性,由于采用的是通用的uCLinux操作系統(tǒng),使用標(biāo)準(zhǔn)的C程序即可,然后通過(guò)以太網(wǎng)接口便可實(shí)現(xiàn)遠(yuǎn)程連接功能以改變目標(biāo)任務(wù)。二是自主性,該系統(tǒng)自成體系,可以實(shí)現(xiàn)自啟動(dòng),具有某些方面的識(shí)別能力和較高的性價(jià)比。
參考文獻(xiàn):
1. OmnVision Corp Public OV7640 Datasheet, 27 October 2003
2. OmnVision Corp, Serial Camera Controls Function Specification, 26 February 2003
3. 鄒思軼.Linux嵌入式設(shè)計(jì)與應(yīng)用.清華大學(xué)出版社,2002年1月第1版
4. 段峰,王耀南,雷曉峰,吳立釗,譚文。機(jī)器視覺(jué)技術(shù)及其應(yīng)用綜述,自動(dòng)化博覽,2002年1月
5. 刁修民,多分辨率圖像實(shí)時(shí)采集系統(tǒng)的FPGA邏輯設(shè)計(jì),電子技術(shù)應(yīng)用2003(3)
6. 陳志輝,I2C總線在MCS51系列單片機(jī)數(shù)據(jù)采集系統(tǒng)中的實(shí)現(xiàn),微計(jì)算機(jī)信息2005年第1期No.36