周瑩,高超,魏永星,張爽
(國家海洋技術中心天津300112)
眾所周知,在人們迄今所熟知的各種能量形式中,在水中以聲波的傳播性能為最好。聲信號采集及傳輸系統是聲信號處理的基礎,是聲吶、聲目標定位、聲信號分離、聲信號增強等技術的重點,其設計的性能直接影響到這些處理的結果[1-2]。一般情況下,聲學信號采集及傳輸系統需在水下長時間工作,所以系統的功耗及傳輸方式在一定程度上決定著整個系統的性能。文中所述的聲學信號采集系統采用基于嵌入式系統的以太網移植方法,系統上位機通過以太網發送命令或數據給終端,終端收到后啟動A/D轉換器執行相應的動作,最后終端將得到的信息處理后再次通過以太網上傳回上位機。
聲學信號采集及傳輸系統由聲學傳感器、信號調理電路、A/D轉換模塊、電源模塊、控制模塊及網絡傳輸模塊組成,其原理框圖如圖1所示。控制模塊中選用ST公司的STM32F207微控制器作為系統的主控制器[3]。STM32F207內嵌ARM32位Cortex-M3 CPU,自適應實時加速器可以讓程序在Flash中以最高120 MHz頻率執行時,能夠實現高達150DMIPS/1.25DMIPS/MHz性能[4-5]。控制器采用1.65~3.6 V的內核和I/O管腳供電,具有睡眠、停機和待機模式保證系統低功耗應用的要求,具有專用DMA的10/100以太網MAC,支持硬件IEEE 1588v2,豐富的外設配置,使得系統設計簡化進一步減少功耗[6-7]。A/D轉換模塊中,選用TI公司的模數轉換器ADS1258完成聲學信號的采集,ADS1258具有24位采樣精度,定通道采樣速率為125 Ks/s,工作電壓在2.7~5.25 V范圍內可選,具有精度高、轉換速率快、低功耗的特性[8-9]。在本系統中ADS1258工作時采取固定通道輸入模式,通過配置寄存器確定選擇的通道,采集的數據在主控制器的控制下通過網絡傳輸模塊傳輸到上位機[10]。網絡傳輸模塊采用SMSC推出的節能、低功耗10/100以太網絡物理層收發器LAN8742,其可提供“局域網喚醒”(Wake on LAN),可讓系統進入低功耗狀態,并在特定的網絡流量出現時喚醒系統,因此可在待機期間節省資源。

圖1 低功耗聲學信號采集系統原理框圖
系統中電源的選擇對系統是否能正常工作起到至關重要的作用,本系統中STM32F207和LAN8742的芯片工作電源要求+3.3 V,ADS1258不僅需要+3.3 V的工作電源還需要+2.5 V和-2.5 V的基準電源。系統采用凌特公司推出的一款LTC3533高效同步整流降壓-升壓DC/DC轉換器,其在恒定開關頻率可確保低噪聲,將系統輸入電壓轉換到+3.3 V。系統采用TPS79925低壓差線性調節器將+3.3 V調節到+2.5 V,TPS79925具有低噪聲、快起動和極好的線荷載瞬態響應,另外采用TPS72325低壓降線性穩壓器將+3.3 V調節到-2.5 V,此款芯片具有低噪聲、高PSRR負輸出等特點。由于系統中STM32F207、LAN8742與ADS1258的工作電源要分開,因此在電源設計中分成模擬和數字兩組獨立的電源。模擬電路與數字電路分開布局可預防數字電路工作在高速脈沖狀態時,瞬時的涌浪電流對直流電壓產生高頻干擾,從而影響小信號的模擬電路工作。所以在PCB板布線時為使干擾降低,將模擬信號部分和數字信號部分分開布局,模擬地和數字地單點共地。系統電源設計如圖2所示。

圖2 系統電源電路
STM32F207工作需要2個晶振,一個是HSE,采用外部8 MHz頻率的晶振,內部PLL倍頻使用,分別與OSC_IN和OSC_OUT引腳連接;另一個LSE時鐘電路,它為系統待機或低功耗時提供精確的時鐘源,LSE電路需要一個32.768KHz頻率的外部時鐘源,具有50%占空比的外部時鐘信號與OSC32_IN和OSC32_OUT引腳相連。
復位電路的作用是確保在系統上電后不讓STM32F207立刻進入工作狀態,暫時處于上電延時狀態;或者在系統供電電壓不足的時候提供復位信號。這樣可以讓系統程序重新執行,而不會陷入無序執行狀態,防止CPU發出錯誤的指令、執行錯誤操作,也可以提高電磁兼容性能。STM32F207芯片的復位引腳是NRST,設計中加入電阻和電容,放電回路組成RC復位電路,系統上電時,電源電壓有瞬間下降,電容迅速充電,形成一定寬度的電源毛刺保證系統可靠復位。
系統利用STM32F207的通用I/O引腳為ADS1258提供復位及模數轉換啟動信號;利用片上專有的SPI接口連接ADS1258,兩者間采用四線制(片選信號、時鐘信號、數據輸入信號、數據輸出信號)通信方式,ADS1258工作在SPI通信從模式下,且始終處于被選中狀態。STM32F207通過讀寫ADS1258的寄存器配置其工作方式[11-12]。表1為系統對ADS1258工作寄存器的配置詳情。

表1 ADS1258寄存器配置
其中CONFIG0、CONFIG1是狀態寄存器,MUXSCH代表多路固定通道選擇寄存器。CONFIG0的BIT6=0b,復位時間為256fCLK;BIT5=1b,系統采用固定通道模式;BIT4=1b,輸入的模擬信號通過共用的外部信號調理通道傳輸到A/D轉換器。系統通過CONFIG1的BIT1-0[1:0]位選擇A/D的轉換速率,BIT1-0[1:0]=11b時轉換速率為125000SPS。ADS1258的模數轉換過程如下:STM32F207控制引腳START上的正脈沖啟動一次模數轉換,當該次轉換結束時,數據準備好,DRDY引腳輸出低電平信號,提示可以提取采樣數據[12]。本系統中,將數據準備好信號(DRDY)作為STM32F207的一個外部中斷源,可通過外部中斷服務程序來讀取轉換結果。
系統中聲學傳感器信號是-2.5~+2.5的模擬信號,單通道模擬輸入信號被配置成差分輸入方式以抑制噪聲干擾[13]。系統中的信號調理電路采用TI公司的運算放大器OPA4340作為跟隨器進行信號輸入阻抗的調理,提高輸入阻抗,對信號起到緩沖隔離的作用,RC濾波電路還可有效濾除高頻干擾信號,提高信噪比。另外,系統為提高A/D轉換精度,在ADS1258外加高精度參考電壓源,當參考電壓與AVDD、AVSS一致時,A/D信噪比最高,因此系統采用-2.5 V和+2.5 V為參考電壓。另外,系統外接16 MHz有源晶振為ADS1258提供工作時鐘,確保系統工作的穩定性[14]。
系統采用嵌入式實時操作系統uc/os-II,uc/os-II規模小,實時性和可靠性較好。系統分解為多個相對獨立的任務,降低系統的復雜度,方便應用程序的設計及擴展,一個任務是一個線程,可有休眠、就緒、運行、掛起和被中斷狀態,提高系統效率。系統的工作是協調多個任務在單個MCU上“同時”運行。uc/os-II不支持時間片輪轉法,多任務的啟動是通過調用OSStart()實現的,然后再根據消息隊列、信號量、內存管理和時間管理等系統服務進行任務之間的切換。文中針對STM32F207微處理器在集成環境keil view MDK上進行uc/os-II操作系統的移植。系統移植的改動主要有兩部分,一個是一些頭文件的增減,另外一個是向量表內容的修改。系統在OS_CFG.H頭文件中配置uc/os-II的系統功能,根據系統需求進行任務剪裁。系統為了使代碼適應編譯環境需要將OS_CPU_A.ASM文件中的部分內容作出相應改動,內容如表2所示。

表2 OS_CPU_A.ASM文件修改內容
另外將啟動代碼中所有“PendSV_Handler”修改為“OS_CPU_PendSVHandler”這樣μc/os-II就可以通過STM32F207的中斷進行系統任務調度;將“Sys?Tick_Handler”修改為“OS_CPU_SysTickHandler”,使uc/os-II可以用STM32F207中的嘀嗒定時器Sys?Tick作為時間基準,每周期時間向PendSV發出一個中斷,進行任務調度。
網絡傳輸模塊部分,采用LWIP(Lightweight IP)協議,它是一套用于嵌入式系統的輕量型TCP/IP協議棧,將μc/os-II中的相關函數封裝,就可滿足LWIP的需求。利用uc/os-II操作系統的函數完成LWIP中信號量、消息隊列、定時器和線程創建等功能的封裝。LWIP協議工作中分兩種模式,Server(客戶端)模式和client(服務端)模式。任務間數據流框圖如圖3所示。
系統初始化完成后,LWIP任務接收來自上位機的數據采集指令;指令被送到消息隊列DataTxCommand中,等待 DataTxTask()任務進行處理。DataTxTask()接收到數據采集指令時,啟動信號采集和緩存模塊,通過套接字接口將數據從網絡接口傳輸到上位機;接收到停止采集指令時,停止信號采集和網絡傳輸。

圖3 系統數據流框圖
其中CommandRXTask()中創建連接TCP/IP的套接字,接收到來自LWIPTCP/IPTask()的控制指令,調用函數Data_Receive()采集數據,數據采集結束后將數據包通過DataTxCommand隊列傳送回CommandRXTask()繼而傳回上位機。任務中程序流程圖如圖4所示。
根據系統配置要求ADS1258的轉換結果采用直接讀取模式,STM32F207與ADS1258的SPI接口兼容,根據數據通信時序圖,在前3個SCLK時鐘跳變中,數據輸入引腳DIN的電平保持不變,即可從DOUT引腳直接讀取轉換結果[15-16]。ADC轉換程序軟件流程圖如圖4所示,在ADC轉換程序開始時,首先保持START引腳為低電平,以確保ADS1258是停止狀態,然后將片選CS引腳置為高電平,用以復位SPI接口,復位結束后STM32F207將CS置成低電平,通過SPI給ADS1258發送指令,對相應寄存器進行配置,工作模式配置為固定通道輸入模式,配置完寄存器并進行數據校驗后控制START引腳啟動ADC轉換,數據轉換結束后,DRDY引腳輸出為低電平,此時可通過讀取DOUT引腳的值,獲得相應通道的ADC轉換值。

圖4 網絡傳輸程序流程圖

圖5 AD轉換程序流程圖
系統在消聲水池中完成實測,將聲學傳感器放入水池中固定水深處,通過上位機發送采集指令,可選“連續測量”或“整點測量”,測量數據通過網絡傳回上位機。圖5為系統信號采集結果值比對,從圖中可見系統轉換誤差控制在50 μv以內,完全滿足系統設計要求,圖6更是直觀給出了AD采集數據前后的比對圖,可見系統采集精度高,工作性能穩定。

圖6 ADC轉換結果比對
文中提出了一種通過微處理器STM32F207控制模數轉換芯片ADS1258實現聲學信號采集并采用LAN8742網絡控制器進行數據傳輸的方案,說明了系統硬件電路和軟件設計的思想和方法,并給出ADC轉換結果的比對。經消聲水池實際測試,該采集系統能夠正確采集聲學信號,性能穩定,采集精度滿足系統設計要求。

圖7 采集數據比對圖