《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于SPI實現(xiàn)dsPlC與ISD語音芯片的通信設計
基于SPI實現(xiàn)dsPlC與ISD語音芯片的通信設計
摘要: 在很多應用場合中,,需要用到語音錄放功能,,如復讀機,、電話自動應答裝置等,。本文介紹一種簡單實用的dsPIc數(shù)字信號控制器,用來完成語音錄放功能,。由于dsPIC強大的數(shù)字信號處理功能,,可以提供后續(xù)的復雜處理等,,具有良好的易擴展性,。
Abstract:
Key words :

 

概述: 在很多應用場合中,,需要用到語音錄放功能,如復讀機,、電話自動應答裝置等,。本文介紹一種簡單實用的dsPIc數(shù)字信號控制器,用來完成語音錄放功能,。由于dsPIC強大的數(shù)字信號處理功能,可以提供后續(xù)的復雜處理等,,具有良好的易擴展性,。

 介紹dsPIc數(shù)字信號控制器以廈ISD4002語音芯片的功能特點;特別介紹dsPIC的SPl庫函數(shù)的功能及使用,,并給出一種簡單的語音錄放電路。具有低成本,、易使用等特點,,有較高的實用價值。

1 dsPlC系列的簡單介紹
   
dsPIC系列是Microchip公司推出的新型16位高性能數(shù)字信號控制器,。它結合了單片機的控制優(yōu)點及數(shù)字信號處理器(DSP)的高速運算特性,,為嵌入式系統(tǒng)提供了單一芯片解決方案,。它繼承了PlC單片機系列的哈佛總線結構和精簡指令集(RISC)技術,以及尋址方式簡單,、運行速度快,、功耗低、驅動能力強等優(yōu)點,,同時集成了主板級的DSP功能,,能夠提供強大的數(shù)字信號處理能力,;此外,還提供了如UART,、CAN、SPI等豐富的外圍接口,,可以方便地與其他設備進行通信互聯(lián)。本文介紹使用dsPIC數(shù)字信號控制器的SPI接口與ISD語音芯片進行通信控制,,使用的芯片型號為dsPIc30F6014,。

2 ISD系列語音錄放芯片
    ISD系列語音芯片是美國ISD公司推出的產(chǎn)品。該系列芯片采用多電平直接模擬存儲(Chip Corder)專利技術,聲音不需要A/D轉換和壓縮,每個采樣直接存儲在片內(nèi)的閃爍存儲器中,,避免了A/D轉換的誤差;能夠真實,、自然地還原語音,、音樂及效果聲;避免了一般固體錄音電路量化和壓縮造成的量化噪聲和金屬聲,。ISD4000系列采用CM0s技術,,內(nèi)含晶體振蕩器、防混疊濾波器,、平滑濾波器,、自動靜噪、音頻功率放大器及高密度多電平閃爍存儲陣列等,,只需要很少的外圍器件即可構成一個完整的語音錄放系統(tǒng),。它的操作命令通過串行通信接口(SPI)或Microwire送入;采樣頻率可為4.O Hz,、5.3 Hz、6.4 Hz,、8.O Hz,頻率越低,,錄放時間越長,,但音質會有所下降,;片內(nèi)信息存于閃爍存儲器中,,可在斷電情況下保存100年(典型值),,反復錄音10萬次,;器件工作電壓3 v,,工作電流25~30 mA,音質好,,適用于移動電話及其他便攜式電子產(chǎn)品,。本設計使用的芯片型號為ISD4002,單片錄放時間為120 s,。

3 SPI接口介紹
    SPI是由美國摩托羅拉公司推出的一種同步串行傳輸規(guī)范,,常作為單片機外設芯片串行擴展接口。SPI有4個引腳:SS(從器件選擇線),、SDO(串行數(shù)據(jù)輸出線),、SDI(串行數(shù)據(jù)輸入線)和SCK(同步串行時鐘線),。SPI可以用全雙工通信方式同時發(fā)送和接收8(16)位數(shù)據(jù),,過程如下:主機啟動發(fā)送過程,送出時鐘脈沖信號,,主移位寄存器的數(shù)據(jù)通過SDO移入到從移位寄存器,同時從移位寄存器中的數(shù)據(jù)通過SDI移人到主移位寄存器中,。8(16)個時鐘脈沖過后,,時鐘停頓,,主移位寄存器中的8(16)位數(shù)據(jù)全部移人到從移位寄存器中,隨即又被自動裝入從接收緩沖器中,,從機接收緩沖器滿標志位(BF)和中斷標志位(SSPIF)置“1”,。同理,,從移位寄存器中的8位數(shù)據(jù)全部移入到主寄存器中,,隨即又被自動裝入到主接收緩沖器中.主接收緩沖器滿標志位(BF)和中斷標志位(SSPIF)置“1”,。主CPU檢測到主接收緩沖器的滿標志位或者中斷標志位置1后,就可以讀取接收緩沖器中的數(shù)據(jù),。同樣,,從CPU檢測到從接收緩沖器滿標志位或中斷標志位置1后,就可以讀取接收緩沖器中的數(shù)據(jù),,這樣就完成了一次相互通信過程,。這里設置dsPIC30F6014為主控制器,ISD4002為從器件,,通過SPI口完成通信控制的過程,。

4 dsPIC的SPI函數(shù)庫
    dsPIC30F6014提供了2個SPI接口模塊,每個接口模塊包括三個特殊功能寄存器和四個引腳,。SPIxBUF是數(shù)據(jù)緩沖寄存器,。需要注意的是,,接收緩沖SPIxRBF和發(fā)送緩沖SPIxTBF共享同一個地址,,即它們都是地址映射到SPIxBUF的。也就是說,,當對接收或發(fā)送緩沖寄存器操作時,,都只能對SPIxBUF進行操作,,而不能直接對SPIxRBF或SPIxTBF進行操作。SPIxCON是控制寄存器,,用來對sPI模塊的操作模式等進行配置;SPIxSTAT是狀態(tài)寄存器,,用來標示SPI模塊所處的狀態(tài)。其模塊框圖如圖1所示。

      通過對控制寄存器的配置,,可以將SPI模塊設置為8位或16位模式,、主模式或從模式,、幀同步等多種操作模式,,還可以對時鐘邊沿,、時鐘分頻倍數(shù)等進行配置。這里使用了以dsPIC為主,,ISD為從的主從模式,。Microchip提供的外圍接口庫可以方便地完成這些配置工作。
       dsPIC Language Tools Libraries是MictoChip公司提供給開發(fā)者的一套工具庫,,其中主要含3個子庫.DSP庫,,提供常用的DSP函數(shù);外圍接口庫,,提供對dsPIC系列所有外圍接口的驅動函數(shù),,包括SPI接口;標準C及數(shù)學函數(shù)庫,,可在Microchip的官方網(wǎng)站下載(www.microchip. com),。我們使用其中的外圍接口庫中的SPI庫函數(shù)即可。SPI庫中主要包括以下幾個函數(shù):
    ①configIntSPIx SPI中斷配置函數(shù),。該函數(shù)可以對sPI接口的中斷使能位以及中斷優(yōu)先級進行配置,,返回值為空。
    ②CloseSPlx關閉SPI接口,。
    ③DataRdySPlx SPl接口數(shù)據(jù)就緒,。該函數(shù)用來判斷SPI接收緩沖區(qū)中是否有數(shù)據(jù)等待讀出,。若返回值為1,表示緩沖區(qū)中數(shù)據(jù)已經(jīng)就緒,,等待讀出,;若返回值為0,則標示緩沖區(qū)為空,。
    ④ReadSPIx讀SPI接口緩沖區(qū),。
    ⑤WriteSPIx向SPI接口發(fā)送緩沖區(qū)寫數(shù)據(jù)。
    ⑥OpenSPIx打開SPI接口,。該函數(shù)包含2個參數(shù):configl和config2,。configl中包含對SPI接口操作模式的配置信息,將寫入控制寄存器,;config2中包含SPI的狀態(tài)信息,,將寫入狀態(tài)寄存器。該函數(shù)在打開SPI接口的同時完成對其的配置,。
    ⑦puasSPIx函數(shù)將一個字符串數(shù)據(jù)寫入到發(fā)送緩沖區(qū)中,。
    ⑧getsSPIx函數(shù)將從接收緩沖區(qū)讀人指定長度的字符串數(shù)據(jù),并轉存到指定的空間,。

      除了這8個函數(shù)以外,,該庫還提供了相應的宏指令完成同樣的功能,可以在程序中方便地使用,。

5 lSD4002
    ISD4002工作于SPI串行接口,。SPI協(xié)議是一個同步串行數(shù)據(jù)傳輸協(xié)議,協(xié)議假定微控制器的SPI移位寄存器在SCLK的下降沿動作,。對ISD4002而言,,在時鐘上升沿鎖存MOSI引腳數(shù)據(jù).存下降沿將數(shù)據(jù)送至MISO引腳.協(xié)議具體內(nèi)容如下:
    ①所有串行數(shù)據(jù)傳輸開始于SS下降沿;
    ②SS在傳輸期間必須保持為低電平,,在兩條指令之間保持為高電平,;
    ③數(shù)據(jù)在時鐘上升沿移入,在下降沿移出,;
    ④SS變低,,輸入指令和地址之后,ISD才會開始錄放動作,;
    ⑤指令格式是10位地址碼加6位控制碼,;
    ⑥ISD的任何操作(含快進)如果遇到EOM或OVF則產(chǎn)生一個中斷,該中斷狀態(tài)在下一個SPI周期開始時被清除,;
    ⑦使用讀指令會使中斷狀態(tài)為移出ISD的MISO引腳時,,控制及地址數(shù)據(jù)也同步從MOSI移入;
    ⑧所有操作在運行位(RUN)置1時開始,置0時結束,;
    ⑨所有指令都在SS上升沿開始執(zhí)行,。
    其時序如圖2所示。

 

 對于ISD4002,,器件延時TPUD(8kHz采樣時,,約為25 ms)后才能開始操作;因此,,用戶發(fā)完上電指令后,,必須等待TPUD.才能發(fā)出一條操作指令。下面是典型的操作,。

    從00處發(fā)音,,應遵循如下時序:
    發(fā)POWERUP命令;
    等待TPUD(上電延時),;
    發(fā)地址值為00的SFTPLAY命令,;
    發(fā)PLAY命令。
    器件會從00地址開始放音,,當出現(xiàn)EOM時,,立即中斷,停止放音,。
    如果從00處錄音,則按以下時序,;
    發(fā)POWER UP命令,;
    等待TPUD(上電延時);
    發(fā)POWER UP命令
    等待2倍TPUD,;
    發(fā)地址值為00的SETREC命令,;
    發(fā)REC命令。
    器件便從00地址開始錄音,,一直到出現(xiàn)OVF(存儲器末尾)時,,錄音停止。其工作時序如圖3所示,。

6 電路設計
    本電路采用dsPICC30F6014數(shù)字信號控制器,,通過3個按鍵開關控制ISD4002錄放音芯片的動作。S1,、S2,、S3分別接到控制器外部中斷INTl、INT2,、INT3上,。當按下S1時,開始錄音,再次按下S1時停止錄音,。如此反復即可實現(xiàn)多段錄音,。同理,按下S2時開始放音,,再次按下S2是停止放音,。如此反復順序播放多段錄音。按下S3關機,。

(1)硬件電路設計
   
電路原理如圖4所示,。整個電路由語音錄放電路、話筒輸入電路,、按鍵開關電路及LCD顯示電路構成,。由于本設計輸出直接驅動普通耳機,經(jīng)實驗不需外部功放電路,,直接利用ISD4002內(nèi)部功放輸出即可,。ISD4002作為從機,其SPI接口的MOSI接控制器的SDO,;MISO接控制器的SDI,;SCLK接SCK;SS接控制器的SS即可,。LCD用于人機交互的界面顯示,。

(2)軟件設計
    程序包括主程序以及幾個子程序。主程序中,,在完成初始化的工作之后,,進入一個while循環(huán),等待響應按鍵觸發(fā)的中斷,,若有按鍵按下,,則進入相應的中斷服務程序。在按鍵S1的中斷服務程序中,,設置一個標志變量,,Sl每按下一次,標志變量取反,,用來控制錄音及停止錄音,。同理,S2的中斷服務程序中也設置一個標志變量,,控制開始放音及停止放音,。S3的中斷服務程序中則發(fā)送Power-Down指令關機。程序清單中給出了主程序以及中斷服務程序,,另外包括LCD驅動程序以及dsPIC的SPI函數(shù)庫等,。

7 總 結
    該電路易于實現(xiàn),功能簡單實用,可擴展性較好,;輸出聲音清晰,、自然。如要增加錄音時間,,可選用ISD4000系列的其他芯片,,程序基本相同。另外,,在設計過程中有以下幾點事項需要注意:
    ①在SPI的數(shù)據(jù)傳輸中,,不同芯片所定義的傳輸順序可能不同,因此要注意是先傳高位還是先傳低位,。ISD4002要求先傳高位數(shù)據(jù),,如果與主芯片所定義的順序相反,則只要把指令碼反過來傳即可,。
          ②由于ISD4002要求在時鐘前半個周期把數(shù)據(jù)放在傳輸線上,,因此,在使用dsPIC的SPI函數(shù)庫時需要注意SPI初始化,。在本設計中,,使用的配置為SPl—CKE—ON&CLK_P0L_ACTIVE_HIGH。
    以上兩點可能會幫助解決一些常見問題,。

 

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權禁止轉載。