周瑩,高超,魏永星,張爽
(國家海洋技術(shù)中心天津300112)
眾所周知,在人們迄今所熟知的各種能量形式中,在水中以聲波的傳播性能為最好。聲信號采集及傳輸系統(tǒng)是聲信號處理的基礎(chǔ),是聲吶、聲目標(biāo)定位、聲信號分離、聲信號增強等技術(shù)的重點,其設(shè)計的性能直接影響到這些處理的結(jié)果[1-2]。一般情況下,聲學(xué)信號采集及傳輸系統(tǒng)需在水下長時間工作,所以系統(tǒng)的功耗及傳輸方式在一定程度上決定著整個系統(tǒng)的性能。文中所述的聲學(xué)信號采集系統(tǒng)采用基于嵌入式系統(tǒng)的以太網(wǎng)移植方法,系統(tǒng)上位機通過以太網(wǎng)發(fā)送命令或數(shù)據(jù)給終端,終端收到后啟動A/D轉(zhuǎn)換器執(zhí)行相應(yīng)的動作,最后終端將得到的信息處理后再次通過以太網(wǎng)上傳回上位機。
聲學(xué)信號采集及傳輸系統(tǒng)由聲學(xué)傳感器、信號調(diào)理電路、A/D轉(zhuǎn)換模塊、電源模塊、控制模塊及網(wǎng)絡(luò)傳輸模塊組成,其原理框圖如圖1所示??刂颇K中選用ST公司的STM32F207微控制器作為系統(tǒng)的主控制器[3]。STM32F207內(nèi)嵌ARM32位Cortex-M3 CPU,自適應(yīng)實時加速器可以讓程序在Flash中以最高120 MHz頻率執(zhí)行時,能夠?qū)崿F(xiàn)高達150DMIPS/1.25DMIPS/MHz性能[4-5]??刂破鞑捎?.65~3.6 V的內(nèi)核和I/O管腳供電,具有睡眠、停機和待機模式保證系統(tǒng)低功耗應(yīng)用的要求,具有專用DMA的10/100以太網(wǎng)MAC,支持硬件IEEE 1588v2,豐富的外設(shè)配置,使得系統(tǒng)設(shè)計簡化進一步減少功耗[6-7]。A/D轉(zhuǎn)換模塊中,選用TI公司的模數(shù)轉(zhuǎn)換器ADS1258完成聲學(xué)信號的采集,ADS1258具有24位采樣精度,定通道采樣速率為125 Ks/s,工作電壓在2.7~5.25 V范圍內(nèi)可選,具有精度高、轉(zhuǎn)換速率快、低功耗的特性[8-9]。在本系統(tǒng)中ADS1258工作時采取固定通道輸入模式,通過配置寄存器確定選擇的通道,采集的數(shù)據(jù)在主控制器的控制下通過網(wǎng)絡(luò)傳輸模塊傳輸?shù)缴衔粰C[10]。網(wǎng)絡(luò)傳輸模塊采用SMSC推出的節(jié)能、低功耗10/100以太網(wǎng)絡(luò)物理層收發(fā)器LAN8742,其可提供“局域網(wǎng)喚醒”(Wake on LAN),可讓系統(tǒng)進入低功耗狀態(tài),并在特定的網(wǎng)絡(luò)流量出現(xiàn)時喚醒系統(tǒng),因此可在待機期間節(jié)省資源。
圖1 低功耗聲學(xué)信號采集系統(tǒng)原理框圖
系統(tǒng)中電源的選擇對系統(tǒng)是否能正常工作起到至關(guān)重要的作用,本系統(tǒng)中STM32F207和LAN8742的芯片工作電源要求+3.3 V,ADS1258不僅需要+3.3 V的工作電源還需要+2.5 V和-2.5 V的基準(zhǔn)電源。系統(tǒng)采用凌特公司推出的一款LTC3533高效同步整流降壓-升壓DC/DC轉(zhuǎn)換器,其在恒定開關(guān)頻率可確保低噪聲,將系統(tǒng)輸入電壓轉(zhuǎn)換到+3.3 V。系統(tǒng)采用TPS79925低壓差線性調(diào)節(jié)器將+3.3 V調(diào)節(jié)到+2.5 V,TPS79925具有低噪聲、快起動和極好的線荷載瞬態(tài)響應(yīng),另外采用TPS72325低壓降線性穩(wěn)壓器將+3.3 V調(diào)節(jié)到-2.5 V,此款芯片具有低噪聲、高PSRR負輸出等特點。由于系統(tǒng)中STM32F207、LAN8742與ADS1258的工作電源要分開,因此在電源設(shè)計中分成模擬和數(shù)字兩組獨立的電源。模擬電路與數(shù)字電路分開布局可預(yù)防數(shù)字電路工作在高速脈沖狀態(tài)時,瞬時的涌浪電流對直流電壓產(chǎn)生高頻干擾,從而影響小信號的模擬電路工作。所以在PCB板布線時為使干擾降低,將模擬信號部分和數(shù)字信號部分分開布局,模擬地和數(shù)字地單點共地。系統(tǒng)電源設(shè)計如圖2所示。
圖2 系統(tǒng)電源電路
STM32F207工作需要2個晶振,一個是HSE,采用外部8 MHz頻率的晶振,內(nèi)部PLL倍頻使用,分別與OSC_IN和OSC_OUT引腳連接;另一個LSE時鐘電路,它為系統(tǒng)待機或低功耗時提供精確的時鐘源,LSE電路需要一個32.768KHz頻率的外部時鐘源,具有50%占空比的外部時鐘信號與OSC32_IN和OSC32_OUT引腳相連。
復(fù)位電路的作用是確保在系統(tǒng)上電后不讓STM32F207立刻進入工作狀態(tài),暫時處于上電延時狀態(tài);或者在系統(tǒng)供電電壓不足的時候提供復(fù)位信號。這樣可以讓系統(tǒng)程序重新執(zhí)行,而不會陷入無序執(zhí)行狀態(tài),防止CPU發(fā)出錯誤的指令、執(zhí)行錯誤操作,也可以提高電磁兼容性能。STM32F207芯片的復(fù)位引腳是NRST,設(shè)計中加入電阻和電容,放電回路組成RC復(fù)位電路,系統(tǒng)上電時,電源電壓有瞬間下降,電容迅速充電,形成一定寬度的電源毛刺保證系統(tǒng)可靠復(fù)位。
系統(tǒng)利用STM32F207的通用I/O引腳為ADS1258提供復(fù)位及模數(shù)轉(zhuǎn)換啟動信號;利用片上專有的SPI接口連接ADS1258,兩者間采用四線制(片選信號、時鐘信號、數(shù)據(jù)輸入信號、數(shù)據(jù)輸出信號)通信方式,ADS1258工作在SPI通信從模式下,且始終處于被選中狀態(tài)。STM32F207通過讀寫ADS1258的寄存器配置其工作方式[11-12]。表1為系統(tǒng)對ADS1258工作寄存器的配置詳情。
表1 ADS1258寄存器配置
其中CONFIG0、CONFIG1是狀態(tài)寄存器,MUXSCH代表多路固定通道選擇寄存器。CONFIG0的BIT6=0b,復(fù)位時間為256fCLK;BIT5=1b,系統(tǒng)采用固定通道模式;BIT4=1b,輸入的模擬信號通過共用的外部信號調(diào)理通道傳輸?shù)紸/D轉(zhuǎn)換器。系統(tǒng)通過CONFIG1的BIT1-0[1:0]位選擇A/D的轉(zhuǎn)換速率,BIT1-0[1:0]=11b時轉(zhuǎn)換速率為125000SPS。ADS1258的模數(shù)轉(zhuǎn)換過程如下:STM32F207控制引腳START上的正脈沖啟動一次模數(shù)轉(zhuǎn)換,當(dāng)該次轉(zhuǎn)換結(jié)束時,數(shù)據(jù)準(zhǔn)備好,DRDY引腳輸出低電平信號,提示可以提取采樣數(shù)據(jù)[12]。本系統(tǒng)中,將數(shù)據(jù)準(zhǔn)備好信號(DRDY)作為STM32F207的一個外部中斷源,可通過外部中斷服務(wù)程序來讀取轉(zhuǎn)換結(jié)果。
系統(tǒng)中聲學(xué)傳感器信號是-2.5~+2.5的模擬信號,單通道模擬輸入信號被配置成差分輸入方式以抑制噪聲干擾[13]。系統(tǒng)中的信號調(diào)理電路采用TI公司的運算放大器OPA4340作為跟隨器進行信號輸入阻抗的調(diào)理,提高輸入阻抗,對信號起到緩沖隔離的作用,RC濾波電路還可有效濾除高頻干擾信號,提高信噪比。另外,系統(tǒng)為提高A/D轉(zhuǎn)換精度,在ADS1258外加高精度參考電壓源,當(dāng)參考電壓與AVDD、AVSS一致時,A/D信噪比最高,因此系統(tǒng)采用-2.5 V和+2.5 V為參考電壓。另外,系統(tǒng)外接16 MHz有源晶振為ADS1258提供工作時鐘,確保系統(tǒng)工作的穩(wěn)定性[14]。
系統(tǒng)采用嵌入式實時操作系統(tǒng)uc/os-II,uc/os-II規(guī)模小,實時性和可靠性較好。系統(tǒng)分解為多個相對獨立的任務(wù),降低系統(tǒng)的復(fù)雜度,方便應(yīng)用程序的設(shè)計及擴展,一個任務(wù)是一個線程,可有休眠、就緒、運行、掛起和被中斷狀態(tài),提高系統(tǒng)效率。系統(tǒng)的工作是協(xié)調(diào)多個任務(wù)在單個MCU上“同時”運行。uc/os-II不支持時間片輪轉(zhuǎn)法,多任務(wù)的啟動是通過調(diào)用OSStart()實現(xiàn)的,然后再根據(jù)消息隊列、信號量、內(nèi)存管理和時間管理等系統(tǒng)服務(wù)進行任務(wù)之間的切換。文中針對STM32F207微處理器在集成環(huán)境keil view MDK上進行uc/os-II操作系統(tǒng)的移植。系統(tǒng)移植的改動主要有兩部分,一個是一些頭文件的增減,另外一個是向量表內(nèi)容的修改。系統(tǒng)在OS_CFG.H頭文件中配置uc/os-II的系統(tǒng)功能,根據(jù)系統(tǒng)需求進行任務(wù)剪裁。系統(tǒng)為了使代碼適應(yīng)編譯環(huán)境需要將OS_CPU_A.ASM文件中的部分內(nèi)容作出相應(yīng)改動,內(nèi)容如表2所示。
表2 OS_CPU_A.ASM文件修改內(nèi)容
另外將啟動代碼中所有“PendSV_Handler”修改為“OS_CPU_PendSVHandler”這樣μc/os-II就可以通過STM32F207的中斷進行系統(tǒng)任務(wù)調(diào)度;將“Sys?Tick_Handler”修改為“OS_CPU_SysTickHandler”,使uc/os-II可以用STM32F207中的嘀嗒定時器Sys?Tick作為時間基準(zhǔn),每周期時間向PendSV發(fā)出一個中斷,進行任務(wù)調(diào)度。
網(wǎng)絡(luò)傳輸模塊部分,采用LWIP(Lightweight IP)協(xié)議,它是一套用于嵌入式系統(tǒng)的輕量型TCP/IP協(xié)議棧,將μc/os-II中的相關(guān)函數(shù)封裝,就可滿足LWIP的需求。利用uc/os-II操作系統(tǒng)的函數(shù)完成LWIP中信號量、消息隊列、定時器和線程創(chuàng)建等功能的封裝。LWIP協(xié)議工作中分兩種模式,Server(客戶端)模式和client(服務(wù)端)模式。任務(wù)間數(shù)據(jù)流框圖如圖3所示。
系統(tǒng)初始化完成后,LWIP任務(wù)接收來自上位機的數(shù)據(jù)采集指令;指令被送到消息隊列DataTxCommand中,等待 DataTxTask()任務(wù)進行處理。DataTxTask()接收到數(shù)據(jù)采集指令時,啟動信號采集和緩存模塊,通過套接字接口將數(shù)據(jù)從網(wǎng)絡(luò)接口傳輸?shù)缴衔粰C;接收到停止采集指令時,停止信號采集和網(wǎng)絡(luò)傳輸。
圖3 系統(tǒng)數(shù)據(jù)流框圖
其中CommandRXTask()中創(chuàng)建連接TCP/IP的套接字,接收到來自LWIPTCP/IPTask()的控制指令,調(diào)用函數(shù)Data_Receive()采集數(shù)據(jù),數(shù)據(jù)采集結(jié)束后將數(shù)據(jù)包通過DataTxCommand隊列傳送回CommandRXTask()繼而傳回上位機。任務(wù)中程序流程圖如圖4所示。
根據(jù)系統(tǒng)配置要求ADS1258的轉(zhuǎn)換結(jié)果采用直接讀取模式,STM32F207與ADS1258的SPI接口兼容,根據(jù)數(shù)據(jù)通信時序圖,在前3個SCLK時鐘跳變中,數(shù)據(jù)輸入引腳DIN的電平保持不變,即可從DOUT引腳直接讀取轉(zhuǎn)換結(jié)果[15-16]。ADC轉(zhuǎn)換程序軟件流程圖如圖4所示,在ADC轉(zhuǎn)換程序開始時,首先保持START引腳為低電平,以確保ADS1258是停止?fàn)顟B(tài),然后將片選CS引腳置為高電平,用以復(fù)位SPI接口,復(fù)位結(jié)束后STM32F207將CS置成低電平,通過SPI給ADS1258發(fā)送指令,對相應(yīng)寄存器進行配置,工作模式配置為固定通道輸入模式,配置完寄存器并進行數(shù)據(jù)校驗后控制START引腳啟動ADC轉(zhuǎn)換,數(shù)據(jù)轉(zhuǎn)換結(jié)束后,DRDY引腳輸出為低電平,此時可通過讀取DOUT引腳的值,獲得相應(yīng)通道的ADC轉(zhuǎn)換值。
圖4 網(wǎng)絡(luò)傳輸程序流程圖
圖5 AD轉(zhuǎn)換程序流程圖
系統(tǒng)在消聲水池中完成實測,將聲學(xué)傳感器放入水池中固定水深處,通過上位機發(fā)送采集指令,可選“連續(xù)測量”或“整點測量”,測量數(shù)據(jù)通過網(wǎng)絡(luò)傳回上位機。圖5為系統(tǒng)信號采集結(jié)果值比對,從圖中可見系統(tǒng)轉(zhuǎn)換誤差控制在50 μv以內(nèi),完全滿足系統(tǒng)設(shè)計要求,圖6更是直觀給出了AD采集數(shù)據(jù)前后的比對圖,可見系統(tǒng)采集精度高,工作性能穩(wěn)定。
圖6 ADC轉(zhuǎn)換結(jié)果比對
文中提出了一種通過微處理器STM32F207控制模數(shù)轉(zhuǎn)換芯片ADS1258實現(xiàn)聲學(xué)信號采集并采用LAN8742網(wǎng)絡(luò)控制器進行數(shù)據(jù)傳輸?shù)姆桨福f明了系統(tǒng)硬件電路和軟件設(shè)計的思想和方法,并給出ADC轉(zhuǎn)換結(jié)果的比對。經(jīng)消聲水池實際測試,該采集系統(tǒng)能夠正確采集聲學(xué)信號,性能穩(wěn)定,采集精度滿足系統(tǒng)設(shè)計要求。
圖7 采集數(shù)據(jù)比對圖