尚創(chuàng)波,范修宏
(西安奇芯光電科技有限公司,陜西 西安 710119)
隨著光通信行業(yè)的不斷發(fā)展,對(duì)長(zhǎng)距離傳輸?shù)男枨笤郊悠惹校跓o(wú)法短時(shí)間內(nèi)降低傳輸過(guò)程中的傳輸損耗的情況下,各家半導(dǎo)體激光器廠商都不約而同地通過(guò)增大最大發(fā)射光功率的方式來(lái)延長(zhǎng)傳輸距離,就使得光功率計(jì)的探測(cè)范圍要求越來(lái)越高,而在激光器器件的生產(chǎn)過(guò)程中,為了避免熱效應(yīng)導(dǎo)致的激光器發(fā)光Ith點(diǎn)偏移,就需要在極短時(shí)間內(nèi)掃描完整個(gè)激光器器件的PIV曲線(xiàn),因此對(duì)光功率計(jì)的高速采樣就提出了要求,同時(shí)為了準(zhǔn)確描繪出激光器器件的發(fā)光特性,對(duì)光功率計(jì)的精度也提出了要求,而為了提高效率,又對(duì)多通道也提出了要求,因此一款擁有高速、高精度、大范圍[1]、多通道的光功率計(jì)就顯得尤為重要,此設(shè)計(jì)就是基于此目的而提出。
本系統(tǒng)采用ST(意法半導(dǎo)體)公司推出的一款基于高性能ARMCorex-M4 32位RISC內(nèi)核的MCU STM32F405作為主控MCU,工作頻率高達(dá)168MHz,內(nèi)核具有一個(gè)浮點(diǎn)單元(FPU)單精度,支持所有ARM單精度數(shù)據(jù)處理指令和數(shù)據(jù)類(lèi)型,擁有兩條APB總線(xiàn)、三條AHB總線(xiàn)和一個(gè)32位多AHB總線(xiàn)矩陣。
ADS1278是TI推出的8通道24BIT工業(yè)模數(shù)轉(zhuǎn)換器(ADC),內(nèi)部集成多個(gè)獨(dú)立的高斬波穩(wěn)定調(diào)制器和FIR數(shù)字濾波器,可實(shí)現(xiàn)8通道同步采樣,擁有高達(dá)128 kSPS的數(shù)據(jù)傳輸速率,支持高速、高精度采樣模式[2]。
該方案上位機(jī)系統(tǒng)通過(guò)串口實(shí)現(xiàn)對(duì)整個(gè)系統(tǒng)的控制,控制系統(tǒng)以STM32F405作為主控MCU,通過(guò)高速SPI接口與ADS1278通信,讀取所有8通道的ADC采樣數(shù)據(jù),通過(guò)THS4521實(shí)現(xiàn)對(duì)單端信號(hào)的差分轉(zhuǎn)換,以更好地連接ADS1278,該系統(tǒng)提供了多種采樣方式,有高速實(shí)時(shí)采樣模式、累積采樣模式、外部trigger信號(hào)觸發(fā)采樣模式,并可單獨(dú)對(duì)某一通道監(jiān)控功率選擇dBm/Mw單位,并通過(guò)自定義協(xié)議與外部上位機(jī)進(jìn)行數(shù)據(jù)交互。
主要控制模塊:上位機(jī)模塊、串口模塊、MCU主控制模塊、SPI通信模塊、ADC轉(zhuǎn)換模塊、存儲(chǔ)管理模塊、ADS1278控制模塊、外部觸發(fā)信號(hào)采樣模塊、實(shí)時(shí)高速采樣模塊、累積數(shù)量采樣模塊、告警指示模塊等,物理機(jī)構(gòu)如圖1[3]所示。
圖1 物理機(jī)構(gòu)圖
本系統(tǒng)總共有12大子系統(tǒng),分別是:上位機(jī)系統(tǒng)、串口通信系統(tǒng)、初始化設(shè)備模塊系統(tǒng)、初始化內(nèi)存系統(tǒng)、ADC(模數(shù)轉(zhuǎn)換)系統(tǒng)、SPI通信系統(tǒng)、數(shù)據(jù)存儲(chǔ)管理系統(tǒng)、ADS1278控制系統(tǒng)、外部觸發(fā)信號(hào)采樣系統(tǒng)、實(shí)時(shí)高速采樣系統(tǒng)、累積數(shù)量采樣系統(tǒng)、告警指示系統(tǒng)[4]。
上位機(jī)系統(tǒng)用于人機(jī)交互,提供控制接口,下發(fā)控制指令;串口通信系統(tǒng)提供系統(tǒng)的通信功能,此系統(tǒng)為獨(dú)立實(shí)現(xiàn)的系統(tǒng)模塊,有相關(guān)硬件設(shè)備予以支持;ADC轉(zhuǎn)換系統(tǒng)用于監(jiān)控系統(tǒng)內(nèi)核溫度,供電電壓等;SPI通信系統(tǒng)用于實(shí)現(xiàn)MCU與ADS1278之間的通信,ADS1278控制系統(tǒng)用于實(shí)現(xiàn)對(duì)ADS1278采集到的數(shù)據(jù)進(jìn)行濾波、校準(zhǔn)、單位轉(zhuǎn)換等操作;外部觸發(fā)信號(hào)采樣系統(tǒng)用于檢測(cè)外部trigger信號(hào),根據(jù)信號(hào)高低進(jìn)行采樣;實(shí)時(shí)高速采樣系統(tǒng)用于實(shí)時(shí)采樣并上傳至通信系統(tǒng)發(fā)出;累積數(shù)量采樣系統(tǒng)可以根據(jù)上位機(jī)下發(fā)的采樣次數(shù)進(jìn)行累積采樣最后整體上傳至通信系統(tǒng)發(fā)出;告警指示系統(tǒng)用于實(shí)時(shí)監(jiān)控SPI及溫度,供電電壓,以及ADS1278的工作狀態(tài),一旦出現(xiàn)異常即可實(shí)時(shí)發(fā)出告警指示。
硬件電路部分如圖2所示,STM32F405作為主控MCU,采用SPI與ADS1278進(jìn)行通信,讀取相關(guān)監(jiān)控,采用串口與上位機(jī)通信,從而實(shí)現(xiàn)對(duì)整個(gè)底層系統(tǒng)的控制,ADS1278工作于SPI高頻模式,MCU工作于168MHZ最高頻率,以提高數(shù)據(jù)的刷新率。
圖2 硬件電路MCU 控制部分
用于實(shí)現(xiàn)人機(jī)交互,提供控制接口,下發(fā)控制指令,讀取監(jiān)控值,控制UI界面如圖3所示。
圖3 控制UI 界面
用于實(shí)現(xiàn)上位機(jī)系統(tǒng)與控制系統(tǒng)之間的通信,通過(guò)專(zhuān)用的串口芯片實(shí)現(xiàn)數(shù)據(jù)的接受與發(fā)送,從而實(shí)現(xiàn)數(shù)據(jù)轉(zhuǎn)發(fā),此模塊為獨(dú)立的硬件設(shè)備來(lái)實(shí)現(xiàn),如圖4所示。
圖4 串口通信模塊
3.4.1 初始化
(1)設(shè)備初始化。初始化設(shè)備模塊系統(tǒng)用于初始化ADC模塊、串口模塊、外部中斷模塊及定時(shí)器等。
(2)下載初始化。通過(guò)讀取FLASH某一指定地址的值是否為指定值來(lái)判斷是否為燒錄程序后第一次上電;若不是,則初始化存放在FLASH中的8個(gè)通道分別對(duì)應(yīng)的校準(zhǔn)數(shù)據(jù),并將此指定地址的值更新為指定值,若不是,則跳過(guò)初始化,直接使用FLASH中存放的數(shù)據(jù)來(lái)初始化8個(gè)通道分別對(duì)應(yīng)的校準(zhǔn)數(shù)據(jù)等相關(guān)參量。
(3)內(nèi)存系統(tǒng)初始化。將相應(yīng)數(shù)據(jù)放入Flash中對(duì)應(yīng)數(shù)據(jù)段。初始化內(nèi)存系統(tǒng)通過(guò)第一次上電初始化FLASH中的校準(zhǔn)數(shù)據(jù);上電時(shí),用FLASH表中對(duì)應(yīng)地址的數(shù)據(jù)初始化RAM表中的值。
3.4.2 主循環(huán)
當(dāng)系統(tǒng)初始化之后,系統(tǒng)根據(jù)需要對(duì)系統(tǒng)的工作狀態(tài)及數(shù)據(jù)進(jìn)行監(jiān)控,并根據(jù)上位機(jī)下發(fā)的指令去執(zhí)行相應(yīng)的操作,同時(shí)主循環(huán)也執(zhí)行對(duì)下發(fā)命令的解析操作。以下將根據(jù)系統(tǒng)主循環(huán)流程,從實(shí)時(shí)數(shù)據(jù)監(jiān)控、實(shí)時(shí)狀態(tài)監(jiān)控、命令解析、數(shù)據(jù)通信系統(tǒng)以及數(shù)據(jù)標(biāo)定系統(tǒng)五部分詳細(xì)說(shuō)明。
(1)實(shí)時(shí)數(shù)據(jù)監(jiān)控。對(duì)系統(tǒng)內(nèi)核溫度,供電電壓等參量,以及ADS1278的8個(gè)通道的監(jiān)控值量進(jìn)行實(shí)時(shí)數(shù)據(jù)監(jiān)控。
(2)狀態(tài)監(jiān)控。對(duì)內(nèi)核溫度狀態(tài)、ADS1278的工作狀態(tài)、供電狀態(tài)、串口通信狀態(tài)、SPI通信狀態(tài)、FLASH操作異常狀態(tài)進(jìn)行實(shí)時(shí)監(jiān)控。
(3)命令解析。此功能用于對(duì)串口下發(fā)的所有命令進(jìn)行校驗(yàn)、解析、判斷,并根據(jù)命令調(diào)用不同的功能模塊來(lái)執(zhí)行相應(yīng)操作,并將執(zhí)行結(jié)果返回至通信系統(tǒng)。
(4)數(shù)據(jù)通信系統(tǒng)。①串口通信:采用串口與上位機(jī)進(jìn)行通信,上位機(jī)通過(guò)中斷方式對(duì)下位機(jī)進(jìn)行讀寫(xiě)操作,將接收到的命令轉(zhuǎn)發(fā)至命令解析系統(tǒng),將命令解析系統(tǒng)返回的數(shù)據(jù)轉(zhuǎn)發(fā)至上位機(jī);②數(shù)據(jù)的讀取與寫(xiě)入:底層驅(qū)動(dòng)上電時(shí)會(huì)從FLASH中加載出存儲(chǔ)的數(shù)據(jù)并顯示,同時(shí)會(huì)根據(jù)上位機(jī)下發(fā)的操作將需要的數(shù)據(jù)保存至FLASH。
(5)數(shù)據(jù)標(biāo)定系統(tǒng)。本功率計(jì)支持850nm、980nm、1270nm、1300,1310nm、1490nm、1550nm、1577等多種波長(zhǎng)的功率監(jiān)控,因此標(biāo)定時(shí)針對(duì)每個(gè)波長(zhǎng)分別標(biāo)定,同時(shí)為了在較小功率時(shí)也能保證較高的監(jiān)控精度,因此將-40dBm作為分段點(diǎn),大于-40dBm的功率采用線(xiàn)性標(biāo)定,小于-40dBm的功率采用二次曲線(xiàn)標(biāo)定,從而保證了監(jiān)控精度[5]。
3.4.3 部分代碼示例
圖5為底層進(jìn)行8路功率ADC數(shù)據(jù)采集以及標(biāo)定轉(zhuǎn)換的部分代碼。
圖5 部分底層控制代碼
通過(guò)增加衰減器,控制光源輸出功率為5.6dBm左右,并以此為基準(zhǔn),每衰減10dB,記錄一次8個(gè)通道的監(jiān)控?cái)?shù)據(jù),從圖6所示UI界面讀取數(shù)據(jù)并記錄,最終形成表1的數(shù)據(jù)表格。
圖6 測(cè)試效果展示
表1 光源發(fā)光與功率計(jì)測(cè)試結(jié)果對(duì)比
從表1測(cè)試數(shù)據(jù)可以看出,此方案有良好的監(jiān)控精度,經(jīng)過(guò)精確標(biāo)定后,監(jiān)控誤差可控制在0.1dBm以?xún)?nèi)。
本系統(tǒng)通過(guò)高達(dá)168MHz主頻的STM32F405與24Bit最高采樣速率達(dá)128ks/s的ADS1278的組合,能快速、精確地監(jiān)控出高達(dá)8路的光功率[6],且經(jīng)過(guò)詳細(xì)標(biāo)定后,監(jiān)控精度表現(xiàn)良好,經(jīng)過(guò)功能測(cè)試、性能評(píng)測(cè)和負(fù)載測(cè)試等方面的測(cè)試,各項(xiàng)指標(biāo)都完好。整個(gè)系統(tǒng)操作簡(jiǎn)單,占用資源少,已經(jīng)達(dá)到了批量化生產(chǎn)的要求。