基于EPG3231和閃存的聲音播放器設(shè)計
2.2 EPG3231簡介
EPG323l是ELAN公司的8位RISC單片機,它有11個8位并行口、1個8位電流輸出型的D/A、1個10位逐次逼近型A/D、1個通用異步收發(fā)器UART、1個8,16,24位的串行外設(shè)接口SPI、3個定時器等,硬件資源豐富,還支持手寫識別、語音識別、ADPCM編解碼等功能。另外,EPG3-23l的速度較快,在時鐘頻率為16 MHz時,指令周期為125 ns。
2.3 EPG3231與K9G8G08的電路連接
圖3為EPG3231與K9G8G08的電路連接圖。圖中沒有給出K9G8G08,只給出了EPG323l的基本電路及用網(wǎng)絡(luò)標號標出的與K9G8G08的連接引腳。K9G8G08的19引腳是寫保護,在實際電路中接+3.3 V(不保護)。需要說明的是,EPG323l的D/A輸出是48引腳(PBl),輸出電流信號,需要將其輸出轉(zhuǎn)換為電壓信號再送至后續(xù)的功放。其中比較簡單且可行的做法是在PBl與地之間接一只電阻來完成電流與電壓的轉(zhuǎn)換,關(guān)鍵是該電阻的取值。若電阻阻值較大,輸出波形的上部會出現(xiàn)限幅失真;若阻值較小,則不能最大限度地利用D/A的動態(tài)范圍。因此確定該電阻阻值的方法是:先接一只可調(diào)電阻,寫一段測試程序,向D/A反復(fù)連續(xù)地送00~FFH的數(shù)值,通過示波器觀察PBl輸出,調(diào)整可調(diào)電阻,使輸出為不失真的鋸齒波,且最高點為3.3 V(即參考電源VREX(70引腳)電壓)。本文引用地址:http://butianyuan.cn/article/166661.htm
另外,圖3中使用EPG323l的D端口(PD0~PD7)與K9G8G08的I/O端口相連,這個端口必須是雙向的,使用其他的雙向端口也可以,但不要使用J端口和K端口,這兩個端口適用按鍵的輸入/輸出(矩陣鍵盤時的掃描輸出),速度比較慢,不能用于與K9G8G08的通信。還需注意的是,由于WAV文件中的編碼是無符號數(shù)(即OOH是最低電平,F(xiàn)FH是最高電平),而EPG323l的D/A輸入是有符號數(shù)(即80H是最低電平,7FH是最高電平),所以程序中應(yīng)將WAV聲音數(shù)據(jù)的最高位取反后送到D/A。
3 聲音播放器軟件設(shè)計
在聲音播放器軟件設(shè)計之前,應(yīng)確定好K9G8G08中數(shù)據(jù)存放的格式。
首先是地址的格式。對K9G8G08內(nèi)部存儲單元操作的地址是分5個字節(jié)送出的,所以地址的格式最好是按這5個字節(jié)編排,如表l所示。
其次,根據(jù)NAND Flash的特點,其內(nèi)部是可能有壞塊(BAD BLOCK)存在的,但BLOCK 0一定是有效塊(VALID BLl3CK),所以將壞塊信息存在BLOCK 0中。而K9G8G08的有效塊的個數(shù)在3 996~4 096之間,也就是說,壞塊的個數(shù)不大于100個。塊地址是由A19~A30決定的,為方便程序的編寫,將塊地址分3個字節(jié)存儲,各個地址位的安排同表1中的第3、4、5個字節(jié),將A12~A18位放O。壞塊信息存儲區(qū)最多占用300個字節(jié)。
第三,將聲音文件的目錄也存在BLOCK O中。目錄中的每條記錄占用64字節(jié),其中前5個字節(jié)是聲音文件的起始地址,同樣為了方便程序的編寫,每字節(jié)中包含的地址位與表1一致;后面的59個字節(jié)是聲音的名字,比如歌曲名等,用0表示結(jié)束,如表2所示。從表2中可知,目錄區(qū)最多有4 088個記錄,應(yīng)該能滿足一般的需要。
評論