,,,
(北京航空航天大學(xué) 電子信息工程學(xué)院,北京 100083)
電子技術(shù)的發(fā)展對數(shù)據(jù)采集系統(tǒng)(模/數(shù)轉(zhuǎn)換)的速率提出了越來越高的要求[1],但在嵌入式系統(tǒng)中,系統(tǒng)成本、復(fù)雜度和開發(fā)周期同樣需要考慮。本文在針對航空測距設(shè)備DME(Distance Measuring Equipment)的脈沖信號測量的系統(tǒng)中,為滿足該系統(tǒng)對模/數(shù)轉(zhuǎn)換部分40 Msps采樣率的要求,使用STM32F407的DCMI接口驅(qū)動AD9224模/數(shù)轉(zhuǎn)換器,經(jīng)驗(yàn)證達(dá)到系統(tǒng)要求。在通常情況下,對采樣速率達(dá)到40 Msps的數(shù)據(jù)采集系統(tǒng)中,需要使用FPGA驅(qū)動高速ADC,再進(jìn)行后續(xù)的數(shù)據(jù)處理工作。如果該系統(tǒng)還有其他要求,則可能還需要增加MCU,形成了ADC-FPGA-MCU的復(fù)雜系統(tǒng)架構(gòu)。另一種方案是使用FIFO作為ADC和MCU數(shù)據(jù)傳輸?shù)臉蛄?,形成ADC-FIFO-MCU的系統(tǒng)架構(gòu),而在本系統(tǒng)結(jié)構(gòu)中,由MCU直接驅(qū)動ADC,形成ADC-MCU的系統(tǒng)架構(gòu)。憑借STM32F4的超高性價(jià)比以及適于快速編程的庫函數(shù),在完成系統(tǒng)要求的前提下,測量系統(tǒng)的成本、復(fù)雜度和開發(fā)周期都會大大降低。
STM32F407是ST公司推出的基于ARM Cortex-M4內(nèi)核的微控制器。片上具有DCMI接口,這是一個(gè)同步并行接口,能夠接收外部8位、10位、12位或14位CMOS攝像頭模塊發(fā)出的高速數(shù)據(jù)流,時(shí)鐘速度高達(dá)54 MHz[2]。
DCMI物理接口由PIXCLK、HSYNC、VSYNC、DATA[0∶13] 四部分組成。數(shù)據(jù)與PIXCLK保持同步,并根據(jù)像素時(shí)鐘的極性在像素時(shí)鐘上升沿/下降沿發(fā)生變化。HSYNC信號指示行的開始/結(jié)束,VSYNC信號指示幀的開始/結(jié)束。DCMI接口時(shí)序圖如圖1所示。
圖1 DCMI接口時(shí)序圖
AD9224的數(shù)據(jù)輸出接口由時(shí)鐘信號和12位數(shù)據(jù)信號組成,時(shí)鐘信號由外部輸入,作為一種流水線型ADC,AD9224有3個(gè)周期的數(shù)據(jù)延遲,在第4個(gè)時(shí)鐘周期的下降沿輸出第一個(gè)時(shí)鐘周期數(shù)據(jù)(見圖2)[4]。
圖2 AD9224數(shù)據(jù)輸出接口時(shí)序圖
DCMI為驅(qū)動數(shù)字?jǐn)z像頭而設(shè)計(jì),但由于其本質(zhì)上屬于并行接口,通過在軟硬件上模擬DCMI接口協(xié)議,可以使得MCU通過DCMI獲取并行輸出ADC的數(shù)據(jù)。具體需滿足以下幾點(diǎn):
① 提供外部時(shí)鐘信號給DCMI和ADC時(shí)鐘引腳。
DCMI和ADC需要外部時(shí)鐘輸入,因此需提供外部時(shí)鐘信號,DCMI最高時(shí)鐘為54 MHz,AD9224時(shí)鐘最高為40 MHz,為同時(shí)使DCMI接口和AD9224正常工作,外部時(shí)鐘輸入最大不得超過40 MHz(如果采用更高采樣率的ADC,則接口速度最高可達(dá)54 MHz)。
② HSYNC、VSYNC連接到STM32F407的其他I/O口,通過軟件控制HSYNC、VSYNC引腳的電平,進(jìn)而模擬DCMI協(xié)議,完成數(shù)據(jù)的正常采集。
③ 配置DMA,將DCMI采集的數(shù)據(jù)直接存儲到SRAM中。
按照上述可行性分析給出的方案,設(shè)計(jì)的電路圖如圖3所示。
圖3 硬件設(shè)計(jì)原理圖
參考AD9224的數(shù)據(jù)手冊[5],系統(tǒng)模擬電路部分設(shè)計(jì)如圖3左半部分所示:基準(zhǔn)源REF192為AD9224提供了電壓基準(zhǔn)。外部待采樣電壓信號通過OPA300進(jìn)入ADC模擬輸入端口。
系統(tǒng)數(shù)字電路部分如圖3右半部分所示:AD9224的數(shù)字接口BIT11~BIT0,分別與STM32F407的DCMI接口中D0~D11相連,將轉(zhuǎn)換后的數(shù)據(jù)傳遞給MCU。AD9224時(shí)鐘輸入(CLK引腳)與DCMI的時(shí)鐘輸入(PIXCLK引腳映射到STM32F407的PA6)相連,并由外部時(shí)鐘驅(qū)動(也可由STM32F407的MCO引腳輸出的時(shí)鐘信號驅(qū)動)。HSYNC(PA4)、VSYNC(PB7)與PA5相連,在軟件中控制該I/O接口電平,從而用DCMI協(xié)議匹配AD9224的工作時(shí)序,讀取數(shù)據(jù)。
根據(jù)《STM32F4參考手冊》[6],軟件模擬DCMI協(xié)議接收AD9224的數(shù)據(jù)需要完成以下工作:①配置DCMI相關(guān)參數(shù),硬件同步模式,使用 HSYNC/VSYNC 信號設(shè)置HSYNC/VSYNC極性。②配置DCMI,通過DMA直接將數(shù)據(jù)寫入內(nèi)存。③配置DMA中斷。④在DMA中斷中,打印輸出A/D轉(zhuǎn)換的數(shù)據(jù)。
本程序的軟件流程圖如圖4所示。除此以外,為使讀者快速理解本文所述軟件編程的實(shí)現(xiàn)方法,已將測試程序的代碼上傳到GitHub(https://github.com/cychenbuaa/Driving-AD922x-with-DCMI)讀者可根據(jù)需要自行查閱。
圖4 軟件流程圖