李 基,邵瓊玲,王盛軍
(航天工程大學 航天裝備系,北京 101416)
基于STM32與串口服務器的IP語音通信系統(tǒng)設計
李 基,邵瓊玲,王盛軍
(航天工程大學 航天裝備系,北京 101416)
針對模擬訓練系統(tǒng)中語音通信的應用需求,提出了一種基于TCP/IP協(xié)議在局域網內進行IP語音通信的實現(xiàn)方法;分析了該語音通信系統(tǒng)的組成結構和工作原理,設計了以微處理器STM32F103ZET6為核心、以語音編解碼芯片VS1053B為驅動的語音控制電路,SD卡連接電路和電源電路;移植了UCOSⅢ嵌入式實時操作系統(tǒng)增強控制系統(tǒng)的實時性和穩(wěn)定性,采用FatFs文件系統(tǒng)管理SD卡存儲設備;利用串口服務器實現(xiàn)串口數(shù)據與以太網數(shù)據的快速交換,完成模擬訓練系統(tǒng)局域網的搭建,實現(xiàn)基于TCP/IP協(xié)議的穩(wěn)定高效的IP語音通信。采用.NET Framework的Socket模塊和Winform模塊設計了上位機模擬網控軟件;測試結果表明,系統(tǒng)穩(wěn)定可靠、擴展性強,語音通信質量滿足模擬訓練使用要求。
IP語音通信;STM32;串口服務器;UCOSⅢ;VS1053B;.NET Framework平臺
隨著科學技術的快速發(fā)展,軍事裝備更新?lián)Q代步伐加快。新型裝備信息化、集成化程度更高,在效率和性能方面較傳統(tǒng)設備更有優(yōu)勢;但是高科技裝備往往也會帶來更大的操作復雜度,對操作者的要求更高,使得裝備訓練周期更長,同時客觀條件上存在保障成本高、資源有限(如通信衛(wèi)星)等問題,這些問題阻礙了實裝訓練的廣泛開展,為解決這一突出矛盾,各種模擬訓練系統(tǒng)應運而生,模擬訓練系統(tǒng)能夠模擬實裝設備的主要功能、提供與實裝設備相同的操作,能夠實現(xiàn)良好的訓練效果。語音通信是許多模擬訓練系統(tǒng)的重要組成部分。在現(xiàn)有的模擬訓練系統(tǒng)中,基于藍牙技術的語音通信[1]、基于無線局域網的語音通信[2]能夠滿足短距離的可靠通信需求,在通信距離上存在較大限制;基于CAN總線的語音通信距離較遠[3],但是在遠距離通信的數(shù)據量方面存在較大約束。本文針對模擬訓練系統(tǒng)遠距離語音通信的需求,在分析了幾種語音傳輸技術特點的基礎上,設計了基于STM32和串口服務器的IP語音通信系統(tǒng)。該系統(tǒng)實現(xiàn)了模擬訓練系統(tǒng)中各用戶之間進行單雙工通信的功能,具有較強的可靠性和擴展性,系統(tǒng)設計特點使得其易于集成在多種基于以太網的模擬訓練系統(tǒng)上,共同實現(xiàn)裝備模擬訓練。
該IP語音通信系統(tǒng)主要由服務器模塊、網絡模塊和用戶模塊三部分組成。系統(tǒng)組成結構如圖1所示,服務器模塊是整個通信系統(tǒng)的控制核心,主要由控制計算機構成,該計算機上運行著網控軟件,實現(xiàn)對用戶申請入網的應答和數(shù)據的收發(fā),模擬網控軟件基于C#語言實現(xiàn);網絡模塊提供了IP語音通信的物理通道,主要包括語音網關、串口服務器以及由他們組成的局域網鏈路,其中語音網關由路由器模擬,與串口服務器共同作用實現(xiàn)數(shù)字語言和IP語音的轉換;用戶模塊指IP語音終端,該終端的設計以微處理器STM32F103ZET6為硬件核心、以語音編解碼芯片VS1053B為語音驅動芯片,軟件平臺采用嵌入式實時操作系統(tǒng)UCOSⅢ,通過設計語音發(fā)送與接收任務,實現(xiàn)語音實時接收與播放。

圖1 系統(tǒng)組成結構圖
IP語音通信系統(tǒng)的工作原理如圖2所示。語音信號在系統(tǒng)中以模擬信號、數(shù)字信號和IP數(shù)據包三種形式存在。

圖2 系統(tǒng)工作原理

圖3 VS1053B接口電路
MIC將聲信號轉化為模擬電信號;VS1053B將模擬信號進行A/D、D/A變換以及編解碼,由于大部分語音頻率低于4 kHz,根據奈奎斯特采樣定理可將VS1053B的采樣頻率定為8 kHz,量化位數(shù)為16bit;串口服務器基于TCP/IP協(xié)議實現(xiàn)數(shù)字信號與IP數(shù)據包的轉換,其中IP數(shù)據包在局域網絡中傳輸,數(shù)字信號在IP語音終端中傳輸。
其中IP語言終端包含語音發(fā)送和接收兩個任務。當手持終端處于語音發(fā)送狀態(tài)時,VS1053B以8 kHz的采樣率實時采集音頻信號,并編碼成wav格式的音頻數(shù)據,STM32F103ZET6通過串口將數(shù)據發(fā)送給串口服務器。當手持終端處于語音接收狀態(tài)時,與其相連接的串口服務器先將接收到的TCP/IP數(shù)據包解析為串口數(shù)據,然后發(fā)送給接收終端,終端通過串口接收音頻數(shù)據,送入VS1053B進行解碼并播放。
IP語音終端采用意法半導體公司生產的32位增強型微處理器STM32F103ZET6作為控制核心,該處理器采用ARM公司的Cortex-M3內核,CPU最高速度可達72 MHz,內置看2個看門狗和1個滴答定時器[4],其中滴答定時器的中斷作為UCOSⅢ系統(tǒng)的時基。該芯片的優(yōu)勢是片上集成了豐富的外設接口,這些豐富的外設接口極大地提高了硬件電路設計效率。其中包括3路串行外設接口(SPI1~SPI3)和5路異步串行通信口(USART1~USART5)。在本設計中,分別利用SPI1和USART1與VS1053和串口服務器進行數(shù)據通信。
VS1053B是荷蘭VLSI公司研制的一款高性能解碼芯片,其內部包含一個高性能低功耗DSP處理器核VS_DSP4,可實現(xiàn)對MP3/OGG/WMA/FLAC/WAV等音頻格式的編解碼。同時芯片內部還自帶一個可變采樣率的立體聲ADC和一個高性能立體聲DAC[5-6],具有良好的語音錄制與播放效果。
VS1053B具有8個通用I/O口,通過SPI與微處理器STM32F103ZET6進行數(shù)據通信,VS1053B的時鐘線引腳SCLK(28腳)、設備數(shù)據輸出線引腳SO(30腳)、設備數(shù)據輸入線引腳SI(29腳)引腳分別與單片機的SPI1_SCK(PA5)、SPI1_MISO(PA6)、SPI1_MOSI(PA7)引腳相連,VS1053B傳輸數(shù)據和命令數(shù)據分別使用SDI模式和SCI模式。VS1053B的XREST(3腳)是復位信號線且低電平有效,與單片機的PE2相連;DREQ(8腳)是數(shù)據請求信號線,與單片機PC13相連;XDCS(13腳)為VS1053B數(shù)據接口開關,與單片機PF6相連;XCS(23腳)控制著SCL寄存器的讀寫操作,與單片機PF7相連。VS1053B外接12.288MHz的晶振,通過1、2腳接MIC輸入,46腳接HT6872功放IN+引腳,由功放IC的OUT+、OUT-引腳驅動2W喇叭。VS1053B的電路連接如圖3所示。
SD存儲容量大,支持SPI/SDIO驅動,比較適合作為語音數(shù)據的存儲器。STM32F103ZET6自帶標準的SDIO接口驅動,最高通信速度可達24 MHz。本設計中利用STM32F103ZET6的SDIO接口與SD卡進行數(shù)據通信。如圖4所示,SD卡槽的1、2、5、7、8、9引腳分別與STM32F103ZET6的SDIO_D3(PC11)、SDIO_CMD(PD2)、SDIO_SCK(PC12)、SDIO_D0(PC8)、SDIO_D1(PC9)、SDIO_D2(PC10)相連。

圖4 SD卡接口電路
AMS1117是一個低漏失三端線性穩(wěn)壓器,具有良好的噪聲抑制能力,片內集成過熱保護和過流保護模塊,只有輸入輸出和接地三個引腳,電路連接簡單[7]。故分別采用AMS1117-3.3和AMS1117-1.8分別將5.0 V電壓轉換為3.3 V和1.8 V,電路連接如圖5所示。

圖5 電源電路
UCOSⅢ是一個可裁剪、可剝奪型的多任務內核,沒有任務數(shù)目的限制,提供了所有現(xiàn)代實時內核所需要的功能,包括資源管理、同步、任務通信等。UCOSⅢ具有源碼開放、可裁剪、移植方便、關中斷時間短、運行效率高等特點,比較適合小型嵌入式設備使用[8]。手持終端STM32F103ZET6移植了UCOSⅢ3.03版本源碼,針對具體STM32處理器需要修改bsp.c、bsp.h、os_cpu_a.asm、os_cpu_c.c、os_cfg_app.h 5個文件,在此基礎上便可以設計語音發(fā)送和接收任務。
STM32F103的滴答計時器(Systick)是一個24位倒計數(shù)定時器,數(shù)值減到0時便產生一個異常請求,然后自動重裝初值,繼續(xù)循環(huán)遞減。本設計中系統(tǒng)時鐘節(jié)拍通過單片機的Systick中斷產生的,在Systick中斷里處理系統(tǒng)時鐘服務程序,Systick中斷服務函數(shù)如下:
voidSysTick_Handler(void)
{
OSIntEnter(); //進入中斷
OSTimeTick();//處理系統(tǒng)時鐘服務程序
OSIntExit();//觸發(fā)任務切換
}
其中OSTimeTick()函數(shù)必須在時鐘節(jié)拍中斷服務程序中調用,用來更新任務的延時和等待超時,檢查每個任務控制塊中OSTCBDly-1后是否為0,從而決定是否將任務從掛起態(tài)改為就緒態(tài)。
為實現(xiàn)存儲設備SD卡的高效管理,需要移植一種文件管理系統(tǒng)。FatFs是一種開源的FAT文件系統(tǒng)模塊,支持SD/MMC卡、CF卡、硬盤、NAND Flash的讀寫,具有良好的硬件平臺獨立性,且支持RTOS[9]。所以本設計移植FatFs R0.11版本管理SD卡,實現(xiàn)語音數(shù)據的存取。
移植FatFs文件系統(tǒng)的過程中,需要修改ffconf.h和diskio.c兩個文件的內容。ffconf.h文件里包含了FatFs的所有配置項,可根據需要選擇;diskio.c中包含了底層驅動函數(shù),針對STM32F103ZET6處理器需要編寫磁盤初始化函數(shù)disk_initialize()、磁盤狀態(tài)獲取函數(shù)disk_status()、扇區(qū)讀取函數(shù)disk_read()、寫扇區(qū)函數(shù)disk_write()、磁盤參數(shù)獲取函數(shù)disk_ioctl()、時間獲取函數(shù)get_fattime()6個接口函數(shù)。
根據語音通信功能的特點,將此功能劃分為語音發(fā)送和語音接收2個模塊,即在IP語音終端程序中實現(xiàn)語音發(fā)送和語音接收2個任務函數(shù)(任務A和任務B)。程序設計總體流程圖如圖6所示,首先初始化STM32F103ZET6的時鐘系統(tǒng)、外設接口、VS1053B模塊以及UCOSⅢ系統(tǒng);UCOSⅢ系統(tǒng)要求在開啟系統(tǒng)以前必須存在一個已經創(chuàng)建完成的任務,所以初始化以后創(chuàng)建開始任務,而后開啟UCOSⅢ系統(tǒng);在開始任務的任務函數(shù)里創(chuàng)建了語音發(fā)送任務A和語音接收任務B,任務創(chuàng)建完成以后,由于開始任務已不再需要,所以掛起開始任務;最后UCOSⅢ系統(tǒng)執(zhí)行任務調度。

圖6 程序設計流程圖
3.3.1 語音發(fā)送任務
語音發(fā)送任務函數(shù)流程如圖7所示,在死循環(huán)任務中首先檢測按鍵是否按下,如果按鍵按下則判斷任務調度器是否關閉以及錄音標志位是否置位,根據條件執(zhí)行相應操作,從而確保在按鍵按下時調度器處于關閉狀態(tài)、錄音標志位處于置位狀態(tài),然后開始采集語音數(shù)據。當按鍵松開時,通過檢測錄音標志位是否置位來判斷是否存在語音數(shù)據,如果錄音標志位置位則將語音數(shù)據保存到SD卡中并通過串口發(fā)送出去,而后清除錄音標志位并打開任務調度;如果錄音標志位沒有置位,說明沒有語言數(shù)據需要發(fā)送,也說明任務調度器沒有關閉,則直接跳過以上函數(shù)直接進入任務延時函數(shù),引發(fā)任務調度。

圖7 語音發(fā)送任務流程圖
3.3.2 語音接收任務
語音接收任務函數(shù)流程圖如圖8所示,在死循環(huán)任務中檢測串口數(shù)據寄存器非空標志位是否置位,如果串口數(shù)據寄存器接收到數(shù)據,則設置語言接收標志位并讀取數(shù)據,此時數(shù)據寄存器非空標志位將被清除,接著判斷該數(shù)據是否為語音數(shù)據結束標志,如果是結束標志則清除語音接收標志位,否則將跳過此步驟,直接將數(shù)據發(fā)送給VS1053B并通過HT6872驅動喇叭輸出。若檢測到串口寄存器標志位沒有置位,接著判斷語音接收標志位是否置位,若語音接收標志位置位,則說明正在進行語音接收,則繼續(xù)判斷串口寄存器的標志位;如語音接收標志位沒有置位,說明沒有接收語音數(shù)據或者語音數(shù)據接收完畢,直接進入任務延時函數(shù),引發(fā)任務調度。

圖8 語音接收任務流程圖
由于服務器模塊的PC終端與IP語音終端是基于TCP/IP協(xié)議的網口通信,TCP/IP協(xié)議層次結構從上到下通常被分為網絡接口層、網絡層、傳輸層和應用層,其中傳輸層典型協(xié)議包括面向連接的TCP協(xié)議和無連接的UDP協(xié)議,基于語音數(shù)據傳輸準確性、穩(wěn)定性的考慮,本設計選擇TCP協(xié)議??刂平K端PC機基于windows平臺,選用Visual Studio 2015開發(fā)工具,采用C#語言,利用.NET Framework平臺的Socket(套接字)模塊設計網絡通信部分,利用Winform模塊設計軟件界面。
Socket模塊包含了許多TCP/IP網絡的API函數(shù),利用這些API函數(shù)可以快速方便開發(fā)服務器軟件。Winform模塊包含了許多界面常用控件,極大地提高了界面設計效率,本系統(tǒng)控制終端軟件界面如圖9所示。軟件界面包含系統(tǒng)設備、系統(tǒng)內已連接設備工作狀態(tài)和設備參數(shù)3個部分,比較清晰地顯示出該系統(tǒng)中各個用戶的號碼、IP和通信狀態(tài)等主要信息,便于管理員的后臺操作與管理。

圖9 控制終端軟件界面
利用Winform進行程序界面設計時,不能在UI線程中處理數(shù)據收發(fā)等比較耗時的操作,否則會導致界面崩潰,可利用多線程來解決此問題。本設計中使用Winform模塊中BackgroundWorker類開啟一個后臺線程,在其DoWork事件處理函數(shù)中處理數(shù)據收發(fā)與處理等耗時操作,然后調用RunWorkerAsync()函數(shù)來啟動DoWork事件,最終有效解決了界面死機問題。
串口服務器能夠實現(xiàn)RJ45網口與RS232接口之間直接的數(shù)據透明傳輸,其內部集成了嵌入式TCP/IP協(xié)議棧,通常支持TCP/UDP Server、TCP/UDP Client等多種工作模式,是不具備網絡接口的終端設備連接局域網或互聯(lián)網的理想選擇。本設計中網絡模塊串口服務器選取有人物聯(lián)網技術有限公司的USR-TCP232-302串口服務器,其內部搭載ARM處理器,支持10/100Mbps自適應傳輸。
以用戶A(IP語音終端A)與用戶B(IP語音終端B)通信為例,介紹串口服務器的配置方案。其中串口服務器A與IP終端A相連,串口服務器B與IP中斷B相連。連接示意圖如圖10所示。

圖10 通信測試連接示意圖
將串口服務器A和B均設置為TCP Client模式,使用的配置軟件為有人物聯(lián)網技術有限公司提供的USR-M0 V2.2.2.272軟件,兩串口服務器的具體設置參數(shù)如表1所示。

表1 串口服務器參數(shù)
經過實際通信測試,在單雙工模式下,IP語音數(shù)據傳輸?shù)恼`碼率非常低,在單次傳輸1000 KB數(shù)據量以下的誤碼率為0,且不受通信距離限制。經過多名用戶實際通話體驗,均表示IP語音清晰、易分辨,通話質量滿足模擬訓練中語音通信需求。
采用串口服務器實現(xiàn)基于TCP/IP協(xié)議的IP語音通信的設計方案,滿足模擬訓練系統(tǒng)語音通信需求,并完成了硬件平臺的搭建和軟件系統(tǒng)的設計。經過實際通信測試,該系統(tǒng)IP語音數(shù)據傳輸誤碼率低、語音效果良好,且具有通信距離不受
約束等優(yōu)勢,滿足了模擬訓練的應用需求。該系統(tǒng)中基于STM32微處理器和UCOSⅢ操作系統(tǒng)設計的IP語音終端具有穩(wěn)定性好、實時性強、可擴展等特點,對于模擬訓練系統(tǒng)中終端設備的開發(fā)具有一定的參考價值。
[1] 楊 衛(wèi), 陳佩珩, 張文棟,等. 基于藍牙技術的語音通信傳輸系統(tǒng)設計[J]. 計算機測量與控制, 2013, 21(2):499-501.
[2] GAO Jing, 達新宇. 基于無線傳輸?shù)哪M電臺訓練系統(tǒng)設計[J]. 微計算機信息, 2008, 24(22):259-261.
[3] 廖 泉. 基于CAN總線的語音通信系統(tǒng)[D]. 北京:北方工業(yè)大學, 2006.
[4] 崔 奎, 胡純棟, 謝遠來,等. 支持多種溫度傳感器的多通道低溫測量系統(tǒng)的設計[J]. 計算機測量與控制, 2016, 24(2):38-41.
[5] VLSI.VS1053b-Ogg Vorbis/MP3/AAC/WMA/FLAC/MIDI AUDIO CODEC CIRCUIT Datasheet Version1.30.[EB/OL].[2016-12].http://www.vlsi.fi.
[6] 王 波. 基于VS1053和ADXL345的MP3播放器設計[J]. 自動化技術與應用, 2014, 33(7):43-47.
[7] 鄭曉慶, 楊日杰, 楊立永,等. 多路輸出DC-DC電路設計[J]. 國外電子測量技術, 2012, 31(9):31-33.
[8] 拉伯羅斯. 嵌入式實時操作系統(tǒng)μC/OS-Ⅲ[M]. 北京:北京航空航天大學出版社, 2012.
[9] 張 濤, 左謹平, 馬華玲. FatFs在32位微控制器STM32上的移植[J]. 電子技術, 2010, 47(3):25-27.
Research on IP Voice Communication Based on STM32 and Serial Server
Li Ji, Shao Qiongling,Wang Shengjun
(Department of Aerospace Equipment, Space Engineering University, Beijing 101416,China)
Aiming at the application of voice communication in simulation training system, a method of IP voice communication based on TCP / IP protocol in LAN is proposed. The composition and working principle of the voice communication system are analyzed, the voice control circuit driven by the microprocessor STM32F103ZET6 and the speech codec chip VS1053B is designed, the SD card connection circuit and the power supply circuit are also designed.The embedded real time operating system UCOS Ⅲ is transplanted in order to enhance the real-time and stability of the control system, and the FatFs file system is used to manage the SD card storage device. The serial port server is used to achieve rapid exchange of serial data and Ethernet data and build the LAN of simulation training system, IP voice communications based on TCP/IP protocol is accomplished stably and efficiently. The .NET Framework’s Socket module and Winform module are used to design PC’s simulation network control software.Test results show that the system is stable、reliable and scalable, voice communication quality is good to meet the requirements of simulation training.
IP voice communication;STM32; serial server, UCOSⅢ; VS1053B;.NET Framework platform
2017-08-24;
2017-09-22。
李 基(1993-),男,河南信陽人,碩士研究生,主要從事衛(wèi)星通信、單片機與嵌入式應用的研究。
邵瓊玲(1970-),男,山東昌樂人,副教授,碩士研究生導師,主要從事航天裝備應用、單片機與嵌入式應用的研究。
1671-4598(2017)12-0172-05
10.16526/j.cnki.11-4762/tp.2017.12.045
TP274
A