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