王毅磊,高鵬飛,黃 斐,周 鄭,郭漢明
(上海理工大學(xué) 光電信息與計算機(jī)工程學(xué)院,上海 200093)
基于STM32的光譜采集系統(tǒng)設(shè)計
王毅磊,高鵬飛,黃 斐,周 鄭,郭漢明
(上海理工大學(xué) 光電信息與計算機(jī)工程學(xué)院,上海 200093)
針對微型光譜數(shù)據(jù)采集電路的設(shè)計要求,設(shè)計了一種基于STM32的光譜數(shù)據(jù)采集系統(tǒng)。該設(shè)計由單芯片STM32F407內(nèi)部的TIMER、ADC、DMA、RAM組成替代傳統(tǒng)的多芯片設(shè)計,完成對線陣CCD TCD1304DG的驅(qū)動及信號采集,并能夠通過串口與上位機(jī)測試軟件進(jìn)行通信,實時顯示采集光譜。測試結(jié)果表明,該方案具有很好的驅(qū)動CCD工作能力,并具有良好的光譜采集效果、簡單易行、成本低、集成度高等優(yōu)點,還可拓展到其他型號CCD的驅(qū)動,實際應(yīng)用價值高。
光譜采集;STM32;線陣CCD
光譜檢測分析技術(shù)在食品、醫(yī)療、化學(xué)等諸多領(lǐng)域得到廣泛應(yīng)用[1]。隨著光譜檢測應(yīng)用需求進(jìn)一步擴(kuò)展,其核心部件電荷耦合元件(Charge-Coupled Device, CCD),具有光電轉(zhuǎn)換、信息存儲和傳輸?shù)裙δ?,已被廣泛應(yīng)用于眾多檢測領(lǐng)域[2-4],尤其是在光譜檢測方面。在實際應(yīng)用中,線陣CCD驅(qū)動信號一般為復(fù)雜的周期信號,CCD信號采集電路的設(shè)計重點在于對CCD驅(qū)動設(shè)計及對CCD輸出信號的調(diào)理、模數(shù)轉(zhuǎn)換器(A/D轉(zhuǎn)換)、數(shù)據(jù)傳輸和存儲等[5-6]。常見的光譜數(shù)據(jù)采集電路通常由微控制器、時序發(fā)生器、模數(shù)轉(zhuǎn)換器、數(shù)據(jù)存儲器等組成[7-9],涉及芯片較多,電路復(fù)雜,集成度差。為此本系統(tǒng)設(shè)計了基于STM32的光譜數(shù)據(jù)采集系統(tǒng),采用單芯片STM32F407作為時序控制、A/D轉(zhuǎn)換、數(shù)據(jù)傳輸和存儲中心,實現(xiàn)光譜的快速采集。
線陣CCD 采用Toshiba公司的TCD1304DG,具有3 648個像素,需要三路驅(qū)動控制信號ΦM、SH、ICG,其中ΦM為主時鐘脈沖信號,SH是轉(zhuǎn)移柵信號,ICG是積分控制信號[10]。CCD的驅(qū)動電路有嚴(yán)格的工作時序要求,在電荷讀出時,ICG下降沿要比SH上升沿最少提前100 ns,以保證光敏元和模擬移位寄存器完全導(dǎo)通,讓光敏元里面的電荷信號全部進(jìn)入模擬移位寄存器;SH脈沖寬度最少1 000 ns,讓光敏元里面的電荷信號充分轉(zhuǎn)移;ICG上升沿要比SH下降沿延遲最少1 000 ns,以充分接受光敏元里的電荷;ICG上升沿要比ΦM下降沿最多提前20 ns。TCD1304DG有兩種驅(qū)動模式,第一種模式是采用電子快門,第二種模式是不采用電子快門,兩種模式的主要區(qū)別是一個CCD工作周期內(nèi)SH脈沖的個數(shù)及SH脈沖控制光信號的有效采集時間。本設(shè)計要求采用第二種模式,其工作時序如圖1所示。
圖1 CCD工作時序圖
CCD的典型驅(qū)動脈沖為2 MHz,采用STM32F4能夠產(chǎn)生波形較好的驅(qū)動信號[11]。當(dāng)CCD主驅(qū)動時鐘為2 MHz時,其數(shù)據(jù)輸出頻率為500 kHz,而STM32F4內(nèi)部的模數(shù)轉(zhuǎn)換器最高轉(zhuǎn)換頻率可達(dá)36 MHz[12],能夠滿足A/D轉(zhuǎn)換要求。
STM32F407具有集成度高、速度快、可靠性好、硬件電路易于編程實現(xiàn)等特點[12]。如果更改邏輯設(shè)計,不需更改任何硬件電路,只將STM32F407內(nèi)部邏輯重新編程即可。因此適合CCD驅(qū)動電路的設(shè)計、制作、調(diào)試和進(jìn)一步開發(fā)、升級。
2.1 總體設(shè)計方案
系統(tǒng)驅(qū)動電路框圖如圖2所示,STM32F407產(chǎn)生CCD 時序,驅(qū)動CCD工作,CCD輸出經(jīng)信號調(diào)理電路反向、放大后,將CCD輸出的電壓信號變換到0~VREF間的電壓信號,通過A/D對每一個像素進(jìn)行AD轉(zhuǎn)換后存儲到內(nèi)存中。當(dāng)一幀3 648個數(shù)據(jù)全部采集完畢后,通過串口傳給上位機(jī)進(jìn)行數(shù)據(jù)處理,繪制出相對光譜強(qiáng)度分布曲線。
圖2 系統(tǒng)驅(qū)動電路框圖
2.2 CCD驅(qū)動程序設(shè)計
CCD三路驅(qū)動信號同步方式如下[12]:將STM32F407內(nèi)部TIM2配置為主模式,每次發(fā)生更新事件(UEV)時輸出一個周期性觸發(fā)信號,同時將TIM3和TIM4配置為從模式,并使用內(nèi)部觸發(fā),然后將從模式控制器設(shè)為外部時鐘模式,最后使能相關(guān)定時器即可做到同步。
CCD三路驅(qū)動信號產(chǎn)生方式如下:將主定時器TIM2時鐘頻率設(shè)置為84 MHz的內(nèi)置模式,配置TIM2預(yù)裝載值(ARR)分頻出8.4 MHz的工作頻率,然后通過TIM2觸發(fā)從定時器TIM3和TIM4,通過配置TIM4通道1的ARR和捕獲/比較值(CCR)產(chǎn)生占空比為50%的2.1 MHz PWM波,通過配置TIM3通道1與通道2的ARR和CCR產(chǎn)生占空比26/14 592的525 kHz和10/14 592的525 kHz的PWM波。通過示波器觀察產(chǎn)生的驅(qū)動時序波形如圖3所示,該波形為每個周期內(nèi)SH、ICG、ΦM的對應(yīng)關(guān)系。
圖3 TCD1304DG驅(qū)動時序圖
2.3 CCD輸出信號調(diào)理電路設(shè)計
由于CCD的飽和輸出壓降約為600 mV,而CCD輸出中又含有固有噪聲和隨機(jī)噪聲,因此,為了提高信噪比和信號靈敏度,在A/D轉(zhuǎn)換前,需要對CCD輸出信號進(jìn)行調(diào)理[13]。在電路設(shè)計中,選用4片低功率、低失真度、高效率運算放大器對CCD信號進(jìn)行反向、放大、緩沖處理,將CCD輸出的電壓信號變換到0-VREF間的電壓信號,如圖4中(a)~圖4(c)所示。
反相電路原理圖如圖4(a)所示,U1為穩(wěn)壓芯片,輸出為VREF,電路輸出VOUT與輸入VIN的關(guān)系如式(1)所示
(1)
其中,R3為可變電阻,通過上式可知,在無光的情況下,VIN為最大值,此時可通過調(diào)節(jié)R3阻值的大小使得VOUT輸出電壓幅值為零。隨著光信號的增強(qiáng),VIN值變小,VOUT值變大,從而達(dá)到反相的目的。
放大電路原理圖如圖4(b)所示,R2為可變電阻,調(diào)節(jié)R2的阻值大小可改變放大電路的放大倍數(shù),從而改變測量電路的靈敏度。其輸出與輸入的關(guān)系如式(2)所示
(2)
電壓緩沖電路原理圖如圖4(c)所示,作為與前后級電路間的緩沖器,避免后級電路對CCD 信號輸出和前級電路對A/D轉(zhuǎn)換造成干擾,輸出與輸入信號相等。
圖4 CCD信號調(diào)理
2.4 CCD輸出信號A/D轉(zhuǎn)換和DMA傳輸
其中Margalet物種豐富度指數(shù)計算公式:D=(S-1)/lnN。其中,S為群落中的物種總數(shù),N為觀察到的全部物種的個體總數(shù)。
調(diào)理后的CCD輸出信號還需要ADC轉(zhuǎn)換成數(shù)字信號才能被STM32F407處理,選用STM32F407內(nèi)部12位高速ADC完成模數(shù)轉(zhuǎn)換工作。ADC最大轉(zhuǎn)換速率為2.4 MHz,而TCD1304DG最大輸出525 kHz,完全可以滿足采集速度的要求。經(jīng)過信號調(diào)理電路輸出的信號電壓范圍為0~3.3 V,因此選擇ADC參考電壓VREF+=3.3 V。ADC的輸出如式(3)所示
(3)
根據(jù)上式可知,ADC的輸出與輸入信號的幅值成正比,與VREF的幅值大小成反比,其準(zhǔn)確性與VREF電壓參考芯片的輸出精度和噪聲水平相關(guān)。為使所選擇的ADC有較好的輸出結(jié)果,需要重點考慮基準(zhǔn)電壓源和模擬輸入信號與ADC接口的前端。所以選擇TI公司的輸出3.3 V、精度高達(dá)0.2%的串聯(lián)基準(zhǔn)REF3033作為基準(zhǔn)電壓源,并在ADC前端放置一個低阻抗緩沖器,減少前級對A/D轉(zhuǎn)換干擾。
為保證CCD輸出的每個像素都能被正確采集,采用直接內(nèi)存訪問(Directional Memory Access, DMA)原理設(shè)計了一種數(shù)據(jù)傳輸系統(tǒng)[14]。DMA傳輸?shù)幕咎攸c是不經(jīng)過CPU,直接實現(xiàn)存儲器與外設(shè)之間的數(shù)據(jù)傳輸,不僅提高了CPU的利用率,而且實現(xiàn)了數(shù)據(jù)的快速傳輸。在使能ADC規(guī)則通道外部上升沿觸發(fā)單次轉(zhuǎn)換和轉(zhuǎn)換完成后的DMA請求后,每當(dāng)CCD采集的電荷要向外轉(zhuǎn)移時,ADC會在ICG上升沿前被ADC控制轉(zhuǎn)換信號觸發(fā),準(zhǔn)備對輸出信號進(jìn)行轉(zhuǎn)換。在每完成ADC規(guī)則通道組中的一次轉(zhuǎn)換后,都會生成一個DMA請求,DMA控制器接受到ADC發(fā)出的DMA請求后,DMA2數(shù)據(jù)流0通道2會將轉(zhuǎn)換結(jié)果從ADC數(shù)據(jù)寄存器實時地傳輸?shù)絻?nèi)存中。
2.5 串口通信設(shè)計
采用STM32F407內(nèi)部串口與上位機(jī)進(jìn)行數(shù)據(jù)通信[15]。STM32F407通過串口接收到上位機(jī)開始采集的指令后,產(chǎn)生CCD所需的時序和A /D控制信號。STM32F407接收到ADC控制信號后,使能ADC和DMA,并將ADC轉(zhuǎn)換后的電壓值轉(zhuǎn)化成光強(qiáng)值。完成CCD數(shù)據(jù)采集、轉(zhuǎn)換和存儲后,STM32F407使用內(nèi)部的串口將采集到的數(shù)據(jù)傳輸至上位機(jī)進(jìn)行處理,上位機(jī)通過相關(guān)算法對數(shù)據(jù)進(jìn)行處理、顯示。
為了驗證設(shè)計方案的正確性,可通過上位機(jī)軟件繪制CCD采集到的相對光譜強(qiáng)度分布曲線來判斷。當(dāng)CCD飽和時,經(jīng)12位ADC轉(zhuǎn)換后輸出光譜強(qiáng)度應(yīng)約為4 096;當(dāng)CCD無光照時,考慮CCD暗電流等干擾輸出光譜強(qiáng)度應(yīng)約為100。測試方法如下:在一片白紙上貼數(shù)條不透光的黑膠帶,并且每條膠帶的寬度遞減,將CCD垂直于膠帶扣在白紙上,均勻移動CCD,采集光譜數(shù)據(jù),通過上位機(jī)實時顯示采集到的光譜。
圖5是CCD信號采集實物圖,通過上位機(jī)可測得,在光照飽和狀態(tài)下CCD輸出光譜強(qiáng)度約在4 000,在無光狀態(tài)下CCD輸出光譜強(qiáng)度約在100。
圖5 CCD信號采集實物圖
圖6是CCD通過白紙透光部分和遮光部分采集到的光譜數(shù)據(jù),圖中橫坐標(biāo)為CCD像元數(shù)值,縱坐標(biāo)為相對光譜強(qiáng)度。圖中的凹陷部分是CCD經(jīng)過遮光區(qū)域的像素未采集到光信號形成的,凸起部分是CCD經(jīng)過透光區(qū)域的像素采集到光信號形成的,這與本設(shè)計的預(yù)期符合。但遮光區(qū)域邊緣漏光,造成系統(tǒng)采集的光譜在遮光邊緣處譜線緩慢的上升或下降。
通過實驗可知,所設(shè)計的光譜采集系統(tǒng)能夠良好的完成光譜采集,總體性能較好,上位機(jī)能夠正確顯示采集到的CCD光譜,噪聲在允許的范圍內(nèi),在不同的工作環(huán)境下,系統(tǒng)性能穩(wěn)定。由此可見,采用單芯片STM32F407完成時序控制、A/D轉(zhuǎn)換、數(shù)據(jù)傳輸和存儲的方案是可行的,而且簡單易行、成本低。本設(shè)計具有一定的擴(kuò)展性,在數(shù)據(jù)傳輸方面,不僅可以使用STM32F407內(nèi)部串口與上位機(jī)進(jìn)行數(shù)據(jù)通迅,也可以采用內(nèi)部的CAN、USB2.0通迅接口與上位機(jī)進(jìn)行數(shù)據(jù)傳輸,以滿足不同用戶的需求。此外,還可以針對不同型號的CCD編寫不同的驅(qū)動時序,驅(qū)動其他型號CCD工作。
[1] 李銳,代本才,趙永德,等.光譜法在分子間非共價相互作用中的應(yīng)用及進(jìn)展[J].光譜學(xué)與光譜析,2009,29(1):240-243.
[2] 王慶友.圖像傳感器應(yīng)用技術(shù)[M].北京:電子工業(yè)出版社,2003.
[3] 徐宏宇,趙行,孫彥超,等.基于STM32的光功率實時監(jiān)測系統(tǒng)設(shè)計[J].電子科技,2014,27(12):85-89.
[4] 郭偉,楊牧,王青獅,等.基于面陣CCD的鋼板幾何尺寸測量系統(tǒng)[J].電子科技,2013,26(7):47-50.
[5] 梁忠望.線陣CCD數(shù)據(jù)采集電路研究[D].湖南:湖南大學(xué),2010.
[6] 張俊.光譜數(shù)據(jù)采集與處理技術(shù)研究[D].天津:天津理工大學(xué),2014.
[7] 李剛,王焱,李海蘭,等.基于CPLD的線陣CCD光譜檢測數(shù)據(jù)采集系統(tǒng)的研究[J].光譜學(xué)與光析,2007,27(10):1905-1909.
[8] 竇建華,王英,李長凱,等.基于CPLD和DSP的線陣CCD數(shù)據(jù)采集系統(tǒng)設(shè)計[J].合肥工業(yè)大學(xué)學(xué)報:自然科學(xué)版,2010,33(5):690-693.
[9] 董杰,苗長云,楊彥利,等.基于FPGA和ARM的線陣CCD信號采集器的設(shè)計[J]. 儀表技術(shù)與傳感器,2015 (5):20-23.
[10] Toshiba.TCD1304DG data sheets[M].Japan:Toshiba,2004.
[11] 李寧.基于MDK的STM32處理器開發(fā)應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2008.
[12] ST.STM32F4xx data sheet[M].Switzerland:ST Microelectronics,2013.
[13] 唐嘉銘,朱金福.基于AD8334的光聲信號調(diào)理電路設(shè)計與噪聲分析[J].福建師范大學(xué)學(xué)報,2014,30(5):49-54.
[14] 張?zhí)?基于STM32單片機(jī)DMA機(jī)制的多通道數(shù)據(jù)采集[J].黑龍江科技信息,2013,10(30):27-27.
[15] 周陽,周美嬌.基于C#的串口通信系統(tǒng)的研究與設(shè)計[J].電子測量技術(shù),2015,38(7):135-140.
Design of the Spectrum Acquisition System Based on STM32
WANG Yilei, GAO Pengfei, HUANG Fei, ZHOU Zheng, GUO Hanming
(School of Optical-Electrical and Computer Engineering, University of Shanghai for Science and Technology, Shanghai 20093, China)
According to the design requirements of micro-spectrometer data acquisition circuit, a spectral data acquisition system based on STM32 is proposed. The internal TIMER, ADC, DMA, RAM of single-chip STM32F407 instead of the traditional multi-chip design are employed for a linear CCD TCD1304DG drive and the signal acquisition. Communication with the test software of host computer is achieved via the serial port to display the acquired spectrum in real time. The test results show that the CCD can be driven to acquire good spectra data. This project not only has the advantages of simple design, low cost and high integration, but also has a good practical value.
spectrum acquisition; STM32; linear CCD
2016- 04- 05
國家自然科學(xué)基金資助項目(61178079);上海市教育委員會科研創(chuàng)新基金資助項目(13SG47)
王毅磊(1991-),男,碩士研究生。研究方向:光電檢測,嵌入式應(yīng)用等。
10.16180/j.cnki.issn1007-7820.2017.02.001
TN873;TH744
A
1007-7820(2017)02-001-04