基于K9F6408U0A和SPDS202A的數(shù)碼錄音系統(tǒng)
關(guān)鍵詞:K9F6408U0A 快閃存儲(chǔ)器 SPDS202A 拷貝
1 K9F6408U0A的性能簡(jiǎn)介
K9F6408U0A為44腳表面封裝器件,它在工作電壓是2.7~3.6A,特別適合消費(fèi)類電子低功耗、寬電壓的要求。它內(nèi)部有(8M+256K)bit×bit存儲(chǔ)單元陣列,由16384行、528列組成。它的結(jié)構(gòu)為1024塊,每塊16頁(yè),每頁(yè)有(8K+256)字節(jié),可以對(duì)它進(jìn)行頁(yè)讀、寫和塊擦除操作。它內(nèi)含一個(gè)(512+16)字節(jié)的數(shù)據(jù)寄存器,可用于頁(yè)讀、寫操作時(shí)的存儲(chǔ)單元數(shù)據(jù)轉(zhuǎn)換。K9F6408U0A的最大優(yōu)點(diǎn)在于其命令、數(shù)據(jù)和地址均可通過8條I/O口線與主控制器進(jìn)行通信。這樣就大大簡(jiǎn)化了系統(tǒng)的連線,增強(qiáng)了系統(tǒng)的穩(wěn)定性。除8條I/O口線外,K9F6408U0A還包括以下幾條控制線,從而可方便地實(shí)現(xiàn)系統(tǒng)主控制器對(duì)K9F6408U0A的控制。它們分別為:
CLE:命令鎖存使能端,高電平有效。在WE信號(hào)的上升沿,命令信號(hào)可通過I/O口鎖入命令寄存器。
ALE:地址鎖存使能端,高電平有效。在WE信號(hào)的上升沿,地址信號(hào)可通過I/O口鎖入地址寄存器。
CE:片選線,低電平有效。在頁(yè)編程或塊擦除操作期間或器件處于忙狀態(tài)時(shí),CE高電平將被忽略。
WE:寫使能口,命令、地址和數(shù)據(jù)在WE信號(hào)的上升沿被鎖定。
RE:讀使能口,在該口的下降沿將數(shù)據(jù)送到I/O口線上,并使內(nèi)部列地址寄存器增1。
WP:寫保護(hù)口,低電平有效。當(dāng)其為低時(shí),編程和擦除操作禁止。
R/B:操作狀態(tài)指示信號(hào)。為低時(shí),表示正在編程、擦除或讀操作,操作結(jié)束后變高。
2 SPDS202A簡(jiǎn)介
SPDS202A是臺(tái)灣SUNPLUS公司生產(chǎn)的性價(jià)比很高的語(yǔ)音芯片,它可以非常方便地與主機(jī)接口,主機(jī)通過發(fā)命令碼來控制語(yǔ)音芯片的錄音、放音等功能。它具有以下特點(diǎn):
●為單片音頻/語(yǔ)音編碼/解碼芯片,采用SACM-S480或SACM-S3200壓縮和解壓算法。具有8kHz采樣率,其數(shù)據(jù)低碼率為4.8kbps或32kbps;
●具有數(shù)字音量控制功能;
●具有FLASH管理功能,可在內(nèi)部自動(dòng)管理FLASH數(shù)據(jù),其標(biāo)準(zhǔn)FLASH接口最多可以連接4片F(xiàn)LASH,共64Mbit。
●利用UART接口可以方便地與PC機(jī)及其它RS232器件接口,并可容易地上傳或下載數(shù)據(jù);
●內(nèi)嵌鎖相環(huán)電路;
●內(nèi)嵌高品質(zhì)10位8kHz ADC和DAC;
●功耗低,采用2.8V~3.6V工作電壓。
由于SPDS202A具有以上特點(diǎn),因此只需增加極少的外圍電路就可構(gòu)成大容量的語(yǔ)音錄放系統(tǒng)。
3 數(shù)碼錄音系統(tǒng)的構(gòu)成
以SPDS202A為核心,以華邦公司的W78E58為主控制器的數(shù)碼錄音系統(tǒng)結(jié)構(gòu)圖如圖1所示,W78E58與MCS-51系列單片機(jī)兼容,其內(nèi)置的32kflash EEPROM可作為程序存儲(chǔ)器,而內(nèi)置的256字節(jié)SRAM很適合K9F6408U0A的磁編程操作。
圖2所示為W78E58和SPDS202A硬件接口電路。圖中,TADCE為片選信號(hào)線,可在其上升沿鎖存命令/數(shù)據(jù)。TADSEL1和TADSEL0是命令選擇信號(hào)線,其功能如表1所列。
表1 命令選擇信號(hào)線的功能
TADSEL1 | TADSEL0 | 功 能 |
0 | 0 | 從SPDS202A讀數(shù)據(jù) |
0 | 1 | 從SPDS202A讀狀態(tài) |
1 | 0 | 寫數(shù)據(jù)到SPDS202A |
1 | 1 | SPDS202A復(fù)位 |
TADD7~TADD0為8位數(shù)據(jù)線。它在工作時(shí),主控制器的SPDS202A發(fā)送三個(gè)字節(jié)的數(shù)據(jù),其中,第一個(gè)字節(jié)總是0FFh,第二個(gè)字節(jié)為命令碼低字節(jié),第三個(gè)字節(jié)命令碼高字節(jié);然后再由主控制器接收從SPDS202A返回的兩個(gè)字節(jié)的數(shù)據(jù)。二者之間的通信程序如下(用C51編寫):
Void Mcu_202_Comm(void) /*MUC和SPDS202A通信程序*/
{via=0xFF; /*第一字節(jié)送0FFh*/
SendOneData( ); /*調(diào)用發(fā)送一字節(jié)數(shù)據(jù)子程序*/
Via=CMDL; /*第二字節(jié)送命令碼低字節(jié)*/
SendOneData( );
Via_CMDH; /*第三字節(jié)送命令碼高字節(jié)*/
SendOneData( );
ECHOL=ReadOneData( ); /*讀返回?cái)?shù)據(jù)*/
ECHOH=ReadOneData( );
}
下面以錄音功能的實(shí)現(xiàn)程序?yàn)槔梢院芮宄卣f明系統(tǒng)是如何工作的。
Void Record(void)
{CMDL=0x00; /*發(fā)送錄音命令碼*/
CMDH=0x10;
Mcu_202_Comm( );
If(Err=1) /*如果發(fā)生錯(cuò)誤,則返回*/
{Err=0;
return;
}
}
可以看出,系統(tǒng)是通過主控制器向SPDS202A發(fā)送一系列控制命令碼來實(shí)現(xiàn)其功能的。
4 復(fù)制功能的實(shí)現(xiàn)
為了能夠保存和備份所錄信息,應(yīng)當(dāng)考慮實(shí)現(xiàn)一種拷貝功能,即將一片K9F6408U0A上的信息完全復(fù)制到另一片上。實(shí)現(xiàn)這一功能的硬件接口電路如圖3所示。圖中,兩片K9F6408U0A除片選線分開外,其余信號(hào)線均復(fù)用。采用如下程序可實(shí)現(xiàn)復(fù)制功能:
void Copy(void)
{FCEB2=1;
FCEB1=0; /*選中第一片F(xiàn)LASH*/
For(RowAdd2=0;RowAdd2<64;RowAdd2+ +)
{for(RowAdd1=0;RowAdd1<256;RowAdd1+ +)
{BlockErase ( );} /*調(diào)用塊擦除子函數(shù),將第一片F(xiàn)LASH內(nèi)容擦除*/
}
for(F1RowAdd2=0,F2RowAdd2=0;(F1RowAdd2<64)
& &(F2RowAdd2<64);F1RowAdd2+ +,
F2RowAdd2+ +)
For(F1RowAdd1=0,F2RowAdd1=0;
(F1RowAdd1<256)& & (F2RowAdd2<256);
F1RowAdd1+ +,F2RowAdd1+ +)
For(F1ColAdd=0,F2ColAdd=0;(F1ColAdd<256)& &(F2ColAdd<256);F1ColAdd=F1COAdd+128;F2ColAdd=F2ColAdd+128)
{CE1=1;
CE2=0;
SetPointer=0x00;
F1RdData( ); /*調(diào)用從第一片F(xiàn)LASH讀數(shù)據(jù)子函數(shù)*/
CE2=1;
CE1=0;
SendData( );/*調(diào)用向第二片F(xiàn)LASH頁(yè)寄存器送數(shù)據(jù)子函數(shù)*/
CE1=1;
CE2=0;
SetPointer=0x01; /*設(shè)置頁(yè)寄存器指針指向頁(yè)寄存器后半部分*/
F1RdData( );
CE1=1;
CE2=0;
SendData( );
FwrData( ); /*執(zhí)行頁(yè)編程命令,將數(shù)據(jù)寫入第二片F(xiàn)LASH*/
}
}
}
}
5 結(jié)束語(yǔ)
利用這種由語(yǔ)音芯片和容量FLASH組成的數(shù)碼錄音系統(tǒng),即可在一片64Mbit FLASH上記錄長(zhǎng)達(dá)3.7小時(shí)的語(yǔ)音信息。同時(shí),為了能夠保存所記錄的信息,還可利用本文介紹的拷貝方法實(shí)現(xiàn)兩片FLASH之間的拷貝。該系統(tǒng)可廣泛應(yīng)用于需要長(zhǎng)時(shí)間語(yǔ)音記錄的場(chǎng)合。