基于SPI實現dsPlC與ISD語音芯片的通信設計
對于ISD4002,器件延時TPUD(8kHz采樣時,約為25 ms)后才能開始操作;因此,用戶發完上電指令后,必須等待TPUD.才能發出一條操作指令。下面是典型的操作。
從00處發音,應遵循如下時序:
發POWERUP命令;
等待TPUD(上電延時);
發地址值為00的SFTPLAY命令;
發PLAY命令。
器件會從00地址開始放音,當出現EOM時,立即中斷,停止放音。
如果從00處錄音,則按以下時序;
發POWER UP命令;
等待TPUD(上電延時);
發POWER UP命令
等待2倍TPUD;
發地址值為00的SETREC命令;
發REC命令。
器件便從00地址開始錄音,一直到出現OVF(存儲器末尾)時,錄音停止。其工作時序如圖3所示。

6 電路設計
本電路采用dsPICC30F6014數字信號控制器,通過3個按鍵開關控制ISD4002錄放音芯片的動作。S1、S2、S3分別接到控制器外部中斷INTl、INT2、INT3上。當按下S1時,開始錄音,再次按下S1時停止錄音。如此反復即可實現多段錄音。同理,按下S2時開始放音,再次按下S2是停止放音。如此反復順序播放多段錄音。按下S3關機。
(1)硬件電路設計
電路原理如圖4所示。整個電路由語音錄放電路、話筒輸入電路、按鍵開關電路及LCD顯示電路構成。由于本設計輸出直接驅動普通耳機,經實驗不需外部功放電路,直接利用ISD4002內部功放輸出即可。ISD4002作為從機,其SPI接口的MOSI接控制器的SDO;MISO接控制器的SDI;SCLK接SCK;SS接控制器的SS即可。LCD用于人機交互的界面顯示。

(2)軟件設計
程序包括主程序以及幾個子程序。主程序中,在完成初始化的工作之后,進入一個while循環,等待響應按鍵觸發的中斷,若有按鍵按下,則進入相應的中斷服務程序。在按鍵S1的中斷服務程序中,設置一個標志變量,Sl每按下一次,標志變量取反,用來控制錄音及停止錄音。同理,S2的中斷服務程序中也設置一個標志變量,控制開始放音及停止放音。S3的中斷服務程序中則發送Power-Down指令關機。程序清單中給出了主程序以及中斷服務程序,另外包括LCD驅動程序以及dsPIC的SPI函數庫等。(編者注:源程序見本刊網站www.dpi.com.cn。)
7 總 結
該電路易于實現,功能簡單實用,可擴展性較好;輸出聲音清晰、自然。如要增加錄音時間,可選用ISD4000系列的其他芯片,程序基本相同。另外,在設計過程中有以下幾點事項需要注意:
①在SPI的數據傳輸中,不同芯片所定義的傳輸順序可能不同,因此要注意是先傳高位還是先傳低位。ISD4002要求先傳高位數據,如果與主芯片所定義的順序相反,則只要把指令碼反過來傳即可。
②由于ISD4002要求在時鐘前半個周期把數據放在傳輸線上,因此,在使用dsPIC的SPI函數庫時需要注意SPI初始化。在本設計中,使用的配置為SPl—CKE—ONCLK_P0L_ACTIVE_HIGH。
以上兩點可能會幫助解決一些常見問題。
















評論