楊才生,吳狀肥,萬(wàn)國(guó)義
(上汽通用五菱汽車股份有限公司,廣西 柳州 545007)
關(guān)鍵字:STM32F407;OV2640;嵌入式系統(tǒng)
隨著計(jì)算機(jī)技術(shù)的發(fā)展,嵌入式系統(tǒng)越來(lái)越多應(yīng)用在各種微型控制系統(tǒng)中,如智能駕駛系統(tǒng)、機(jī)器人視覺系統(tǒng)、場(chǎng)景監(jiān)控系統(tǒng)等,這些系統(tǒng)中大量使用攝像頭,雖然市面上有很多攝像頭可直接使用,但是具有個(gè)性化的攝像頭還是需要用戶自己設(shè)計(jì)和研究,比如要求攝像頭嵌入到控制系統(tǒng)中、要求具有視頻捕捉功能、要求具有圖像識(shí)別、對(duì)象跟蹤功能等。在智能駕駛系統(tǒng)中中的圖像采集與處理技術(shù),在汽車主動(dòng)安全領(lǐng)域具有非常重要的意義。
一套完善的圖像采集系統(tǒng)由硬件和軟件兩個(gè)部分組成,其中硬件部分主要包括微控制器、攝像頭、圖像存儲(chǔ)設(shè)備等,軟件部分主要用來(lái)驅(qū)動(dòng)攝像頭,并實(shí)現(xiàn)圖像的傳輸、存儲(chǔ)與處理等任務(wù)。
(1)電源電路
電源電路用于給視覺系統(tǒng)提供功率需求,本設(shè)計(jì)要求電源模塊能將24V車載電源轉(zhuǎn)化成+5V和+3.3V兩個(gè)級(jí)別,其中+5V給攝像頭等模塊供電,+3.3V給MCU供電。圖1是24V轉(zhuǎn)+5V的電路原理圖:
圖1 24伏轉(zhuǎn)5伏電源電路
圖1中,MURB1620CT用于防止電源反接,SMAJ36A通過吸收浪涌沖擊實(shí)現(xiàn)對(duì)電路中的元器件的保護(hù),LM2575S型調(diào)壓器可輸出高達(dá)3A的穩(wěn)定電流,從而為攝像頭等外設(shè)的工作提供了保證。
為了使STM32型微控制器正常運(yùn)行,需要給其提供3.3V穩(wěn)定的電壓,圖2所示為采用REG1117-3.3型集成三端穩(wěn)壓器實(shí)現(xiàn)+5V到+3.3V的轉(zhuǎn)換:
圖2 5伏轉(zhuǎn)3.3伏電壓
作為常用的降壓型穩(wěn)壓器,REG1117-3.3可將 4.8~10V的輸入電壓穩(wěn)定在+3.3V,且保證輸出電流高達(dá) 800mA,完全滿足圖像采集系統(tǒng)微處理器的功耗需求。
(2)復(fù)位電路
STM32F407是低電平復(fù)位的,所設(shè)計(jì)的復(fù)位電路如圖3所示,其中R13和C23構(gòu)成了上電復(fù)位電路:
圖3 復(fù)位電路
(3)JTAG調(diào)試接口
圖4 JTAG調(diào)試接口
通過JTAG調(diào)試接口既可對(duì)STM32F407內(nèi)部數(shù)據(jù)進(jìn)行監(jiān)測(cè),又可實(shí)現(xiàn) ISP(In-System Programmer,在系統(tǒng)編程),便于對(duì)微控制器的FLASH等器件進(jìn)行編程。圖4所示為本設(shè)計(jì)所采用的20引腳JTAG調(diào)試接口。
STM32F407自帶數(shù)字同步并行攝像頭(DCMI)接口,該接口能夠接收外部8~14位CMOS攝像頭模塊發(fā)出的像素?cái)?shù)據(jù)流。STM32F407為OV2640型攝像頭模塊提供的接口如圖5所示:
圖5
在該接口中使用了微控制器的如下引腳資源:
DCMI(D[0:7]):用于接 OV2640型攝像頭模塊的數(shù)據(jù)輸出引腳;
DCMI_HSYNC:用于接OV2640型攝像頭模塊的水平同步信號(hào)引腳;
DCMI_VSYNC:用于接OV2640型攝像頭模塊的垂直同步信號(hào)引腳;
DCMI_PIXCLK:用于接 OV2640型攝像頭模塊的像素時(shí)鐘信號(hào)引腳。
STM32F407自帶的標(biāo)準(zhǔn)的SD卡接口使用4位SDIO接口驅(qū)動(dòng),最高通信速度可達(dá) 48Mhz(分頻器旁路時(shí)), 最高每秒可傳輸數(shù)據(jù) 24M字節(jié),完全滿足圖像傳輸速度的要求,SD卡的接口電路如圖6所示:
圖6 SD卡接口電路
OV2640的初始化
OV2640型攝像頭模塊的初始化包括以下幾個(gè)方面的配置和操作:
(1)選擇控制對(duì)象為圖像傳感器,通過向 RA_DLMT寄存器寫入0x01實(shí)現(xiàn);
(2)軟復(fù)位OV2640,通過COM7寄存器寫入0x80實(shí)現(xiàn);
(3)設(shè)置圖像參數(shù),包括:輸出模式,白平衡,亮度,對(duì)比度,特效,分辨率等。
圖像格式控制
由于YUV422格式的圖像直接讀取其像素的Y分量即可獲得該像素的灰度信息,因此驅(qū)動(dòng) OV2640時(shí)優(yōu)先考慮YUV422格式圖像數(shù)據(jù)的輸出。OV2640輸出YUV422格式圖像數(shù)據(jù)需要依次通過以下配置實(shí)現(xiàn):
(1)通過向RA_DLMT寄存器寫0x00選擇控制對(duì)象為攝像頭模塊內(nèi)置DSP。
(2)通過 IMAGE_MODE寄存器切換攝像頭模塊的數(shù)據(jù)輸出格式。
(3)通過CTRL0寄存器控制攝像頭模塊的使能。
圖像傳感器采集到的像素?cái)?shù)據(jù)緩存在 32位數(shù)據(jù)寄存器DCMI_DR中,然后通過DMA傳輸至外部存儲(chǔ)設(shè)備。STM32F407的直接存儲(chǔ)器訪問DMA可以在無(wú)需任何CPU操作的情況下通過DMA快速移動(dòng)數(shù)據(jù)實(shí)現(xiàn)外設(shè)與存儲(chǔ)器之間的高速數(shù)據(jù)傳輸,這樣節(jié)省的CPU資源可供其它操作使用。
在本設(shè)計(jì)中,DCMI每次觸發(fā)DMA請(qǐng)求時(shí)DMA仲裁器根據(jù)當(dāng)前請(qǐng)求的優(yōu)先級(jí)啟動(dòng)圖像數(shù)據(jù)流從 DCMI_DR到FIFO的傳輸。當(dāng)圖像數(shù)據(jù)量達(dá)到FIFO的閾值時(shí),F(xiàn)IFO中緩存的圖像數(shù)據(jù)被轉(zhuǎn)移至外部SRAM中。當(dāng)數(shù)據(jù)流項(xiàng)數(shù)寄存器達(dá)到零時(shí)DCMI請(qǐng)求DMA終止當(dāng)前的數(shù)據(jù)傳輸事務(wù)。
為了實(shí)現(xiàn)大量圖像數(shù)據(jù)的存儲(chǔ),圖像緩沖區(qū)中的像素?cái)?shù)據(jù)要被及時(shí)轉(zhuǎn)移至SD卡中,使用SD卡進(jìn)行圖像存儲(chǔ)主要通過以下函數(shù)來(lái)實(shí)現(xiàn):
//寫SD卡
//buf:寫數(shù)據(jù)緩存區(qū)
//sector:扇區(qū)地址
//cnt:扇區(qū)個(gè)數(shù)
//返回值,錯(cuò)誤狀態(tài),0,正常,其它,錯(cuò)誤
u8 SD_WriteDisk(u8*buf,u32 sector,u8 cnt)
{
u8 sta=SD_OK;
u8 n;
long long lsector=sector;
lsector<<=9;
if((u32)buf%4!=0)
{
for(n=0;n { memcpy(SDIO_DATA_BUFFER,buf,512); sta=SD_WriteBlock(SDIO_DATA_BUFFER,lsector+512*n,512); buf+=512; } }else { if(cnt==1)sta=SD_WriteBlock(buf,lsector,512); else sta=SD_WriteMultiBlocks(buf,lsector,512,cnt); } return sta; } 本文基于STM32F407型微處理器和OV2640型攝像頭加SD卡的設(shè)計(jì)方案不僅成本低廉,而且功能齊全,整體效果較好,硬件平臺(tái)設(shè)備較為成熟。在軟件方面,程序流程嚴(yán)謹(jǐn),邏輯嚴(yán)密,而且驅(qū)動(dòng)程序較為完善,各個(gè)模塊之間不存在耦合性,系統(tǒng)運(yùn)行穩(wěn) 定、可靠。4 結(jié)束語(yǔ)