新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > 基于ARM的語音導覽系統設計

基于ARM的語音導覽系統設計

作者: 時間:2014-06-24 來源:網絡 收藏

  0 引言

本文引用地址:http://m.butianyuan.cn/article/248733.htm

  隨著我國經濟快速發(fā)展、城鄉(xiāng)居民收入不斷提高和閑暇時間大量增加,旅游消費進入一個快速發(fā)展的新階段。為了解決旅游發(fā)展過程中交通的問題,基于固定軌道的旅游列車應景而生。本文研究設計了一種景點旅游列車輔助語音自動導覽系統。

  目前,景點語音導覽主要有以下幾種方式:一種是通過全球定位系統(GPS)的用戶終端接收工作衛(wèi)星的導航信息,從而解算出車輛的經緯度信息,進而計算出實時坐標,將其與景點坐標相比較,當車輛駛入景點一定距離范圍內時,不用人工干預,系統自動播報景點語音信息;另一種是對車輪軸的轉角脈沖進行計數,將計數值和預置值對比,即可確定播放時刻,達到準確播放景點語音信息的目的;第三種方案是利用無線射頻識別技術,在每一個景點范圍內設置一個具有惟一ID 的射頻發(fā)射器,采用間歇工作方式發(fā)射信號,當旅游列車即將到達景點時,車載系統接收到射頻發(fā)射器信號并解碼出景點的ID 號,由系統控制自動播放對應編號的景點語音信息。由于景點自然環(huán)境的復雜性,第一種方式難以滿足系統要求;第二種方式簡單可靠,但旅游軌道車輛運行方向存在不確定性,其相對位置往返變化,系統的自動化程度較低且復雜度較高。本文采用第三種方案實現景點語音自動導覽系統。

  本文首先介紹了系統總體結構,然后,給出了系統各主要功能模塊的具體設計,并重點研究了基于3核的芯片與語音芯片之間的SPI 通信控制和實現技術,給出了系統設計實現結果。

  最后,給出了有一定工程應用參考價值的結論。

  1 系統總體設計

  本系統結構原理設計如圖1 所示。本設計利用旅游列車軌道固定的特點,在軌道沿線景點預先安裝固定ID的RFID,綜合考慮到作用距離、數據通信方式、可靠性、使用壽命和維護成本,選用產品433 MHz有源標簽GAO C124061[1].其存儲ID 字長32 b.由于在野外自然環(huán)境中,出現碰撞的可能性極低,所以,RFID 閱讀器只需要正確可靠地獲得RFID的ID值,與固定景點所對應,用以觸發(fā)中斷,開始播放該景點的語音信息。

  圖1 中,MCU 采用 芯片[2],該芯片是基于 Cortex?M3內核高性能、低成本、低功耗的嵌入式應用MCU.本設計選擇這款的原因是看重其性價比:128 KB FLASH、20 KB SRAM、2個SPI、3個串口、1個USB、1個CAN、2個12位的ADC、RTC、51個可用I/O腳等一系列性能特征,能完全滿足本系統性能要求??偨Y下來,STM32具有價格低、功能強、使用簡單、開發(fā)方便等幾個很有利的優(yōu)勢。為語音錄放存儲芯片[3],根據外部控制和外圍電路輔助,可隨機對其進行語音錄入和語音播放。系統MCU 通過RFID 閱讀器獲得旅游列車沿途RFID的固定ID,根據ID號所對應的預設語音數據存儲位置的起始地址信息,通過對內置的SPI端口進行控制,實現景點語音選段自動播放。

  

 

  2 主要模塊電路設計

  2.1 ISD4004控制電路設計

  ISD4004系列語音芯片工作電壓為+3 V,單片錄放時間8~16 min,音質好。芯片采用CMOS 技術,內含時鐘、抗混疊濾波器、平滑濾波器、音頻放大器、自動靜噪及高密度多電平非易失性存儲器陣列。芯片設計是基于所有操作必須由微控制器控制,操作命令可通過串行通信接口(SPI)送入。芯片采用多電平直接模擬量存儲技術,每個采樣值直接存儲在片內非易失性存儲器中,因此能夠非常真實、自然地再現語音、音樂、音調和效果聲,避免了一般固體錄音電路因量化和壓縮造成的量化噪聲和金屬聲[4?5].芯片ISD4004 內部結構和主要引腳功能如圖2所示。

  

 

  ISD4004 內部器件控制單元設置非常便于其與STM32序列芯片的SPI進行通信設置。增設STM32多個I/O 口來作為對應語音芯片的片選端,即可實現多片ISD4004 擴展。STM32 與多片ISD4004 的接口電路如圖3所示。

  STM32 和ISD4004 通過SPI 模塊進行通信,兩者MOSI、MISO腳對應相互連接,實現STM32和ISD4004之間數據串行傳輸(MSB 位在前)。通信總是由主設備STM32 發(fā)起。STM32 通過MOSI 腳把數據發(fā)送給ISD4004,ISD4004 通過MISO 引腳回傳數據給STM32.

  全雙工通信的數據輸出和數據輸入是用同一個時鐘信號同步的;時鐘信號由主設備STM32通過SCK腳提供[6?7].

  擴展為多片語音芯片后,語音信息的存儲空間大大增加,便于擴充景點的語音信息量。

  2.2 語音錄放控制電路設計

  語音錄放控制電路如圖4 所示。通過MCU 的I/O控制端來控制串聯調整管Q3 或開關管Q1,實現系統放音或者錄音。I/O 端輸出高電平時實現錄音,輸出低電平時實現放音

  

 

  

 

  2.3 RFID讀卡器接口電路

  RFID 讀卡器模塊使用了Philips 的高集成ISO14443A 讀卡芯片MFRC500[8].RFID 讀卡器是一個相對獨立的功能模塊,其輸出可通過中斷狀態(tài)信息和串口與外部連接。因此,系統利用 的SPI2接口實現與RFID讀卡器接口之間的數據通信,從而自動獲得景點位置信息,以控制選擇對應景點導覽語音的播放。讀卡器中斷狀態(tài)直接與STM32F103 的PD口I/O引腳連接;SPI2接口電路形式同圖3類似。

  3 主要功能軟件設計

  3.1 軟件初始化

  3.1.1 外設時鐘的使能

  本設計中涉及的外設時鐘可以通過APB2 外設時鐘使能寄存器來使能。當外設時鐘沒有啟用時,軟件無法讀出外設寄存器的值,返回的數值始終為0.設計中用到的PA 口、PB 口、PD 口的時鐘分別通過APB2ENR寄存器的第2、3、5 位來設置,SPI1 的時鐘通過APB2ENR的第12位來設置。

  3.1.2 I/O口的初始化

  本設計涉及的I/O 口包括:用于控制片選擴展的PA.3、PB.0口,需設置成開端輸出模式;用于實現按鍵控制的PA.15(錄音鍵)、PA.0(強制停止鍵)等需設置為上拉輸入模式;用于實現SPI通信的PA.5、PA.6、PA.7 口,它們分別對應SPI1的SCK、MISO、MOSI口,應由軟件設置這三個口為復用I/O口即第二功能;用于檢測放音結束時語音芯片INT端低電平輸出的PA.8和PD.2設置為上拉輸入模式。

  3.1.3 外部中斷的初始化

  外部中斷初始化中主要完成的工作是設置I/O口與中斷線的對應關系、開啟與該I/O口對應的線上中斷/事件以及設置中斷的觸發(fā)條件、配置中斷分組并使能中斷。本設計中,將強制停止鍵連接到的PA.0 口對應的中斷觸發(fā)條件設置為上升沿觸發(fā),對應的中斷優(yōu)先級最高;其余按鍵連接的I/O口對應的中斷觸發(fā)條件都設置為下降沿觸發(fā)。把所有的中斷都分配到第二組,把所有按鍵的次優(yōu)先級設置成一樣,而搶占優(yōu)先級不同。其中,幾個放音鍵連接的I/O口對應的中斷共用一個中斷服務程序,也就是多個中斷線上的中斷共用一個中斷服務函數,在該中斷服務程序里先對進入中斷的信號進行區(qū)分(通過中斷輸入I/O口上的電平判斷),再分別處理。

  3.1.4 SPI模塊的初始化

  本設計中,通過對CR1寄存器的設置,將SPI1模塊設置成全雙工模式、軟件NSS管理、主機模式、8 b MSB數據格式,并且把SPI1的波特率設置成了最低(281.25 kHz,為系統時鐘的256分頻),其中最重要的是SPI模塊輸出串行同步時鐘極性和相位的配置,SPI主模塊和與之通信的外設備時鐘相位和極性應該一致[7].最后,發(fā)送0xff啟動傳輸。

  根據ISD4004 不同相位下的SPI 總線傳輸時序和SPI操作時序關系[3?4],要想實現STM32和ISD4004之間的SPI通信,須將其控制位CPHA和CPOL都設置為[4]1.

  3.2 SPI控制功能軟件實現

  3.2.1 SPI1讀寫字節(jié)函數

  在讀數據時,接收到的數據被存放在一個內部的接收緩沖器中;在寫數據時,在被發(fā)送之前,數據將首先被存放在一個內部的發(fā)送緩沖器中。對SPI_DR寄存器的讀操作,將返回接收緩沖器的內容;寫入SPI_DR寄存器的數據將被寫入發(fā)送緩沖器中。

  SPI_SR是16位狀態(tài)寄存器,它的最低位為RXNE,該位為0則接收緩沖為空,為1則接收緩沖非空;SPI_SR的次低位為TXE,該位為0說明發(fā)送緩沖非空,為1則發(fā)送緩沖為空。不斷地查詢發(fā)送/接收緩沖區(qū)是否為空,進而實現數據的有序發(fā)送和接收。

  3.2.2 發(fā)送指令函數

  首先,語音芯片ISD4004有如下操作規(guī)則[4]:

  (1)串行外設接口,SPI協議設定微控制器的SPI移位寄存器在SCLK下降沿動作,在時鐘上升沿鎖存MOSI引腳數據,在下降沿將數據送至MISO引腳。

  (2)上電順序,器件延時TPUD(8 kHz采樣時,約為25 ms)后才能開始操作。因此,用戶發(fā)完上電指令后,必須等待TPUD,才能發(fā)出下一條操作指令。

  例如,從00處放音,應遵循如下時序:

  ① 發(fā)POWER UP命令;

 ?、?等待TPUD(上電延時);

 ?、?發(fā)地址值為00的SET PLAY命令;

 ?、?發(fā)PLAY命令。


上一頁 1 2 下一頁

關鍵詞: ARM STM32F103RBT6 ISD4004

評論


相關推薦

技術專區(qū)

關閉