"); //-->
摘要:k9f6408u0a是三星公司生产的与非型64兆位快闪存储器,它具有工作电压低、擦写速度快、体积小等优点。spds202a的台湾凌阳公司生产的语音芯片。文中介绍了以spds202a为核心的数码录音系统,同时介绍了实现两片k9f6408u0a之间拷贝功能的具体方法。最后给出了相关的硬件接口及软件程序。
关键词:k9f6408u0a 快闪存储器 spds202a 拷贝
1 k9f6408u0a的性能简介
k9f6408u0a为44脚表面封装器件,它在工作电压是2.7~3.6a,特别适合消费类电子低功耗、宽电压的要求。它内部有(8m+256k)bit×bit存储单元阵列,由16384行、528列组成。它的结构为1024块,每块16页,每页有(8k+256)字节,可以对它进行页读、写和块擦除操作。它内含一个(512+16)字节的数据寄存器,可用于页读、写操作时的存储单元数据转换。k9f6408u0a的最大优点在于其命令、数据和地址均可通过8条i/o口线与主控制器进行通信。这样就大大简化了系统的连线,增强了系统的稳定性。除8条i/o口线外,k9f6408u0a还包括以下几条控制线,从而可方便地实现系统主控制器对k9f6408u0a的控制。它们分别为:
cle:命令锁存使能端,高电平有效。在we信号的上升沿,命令信号可通过i/o口锁入命令寄存器。
ale:地址锁存使能端,高电平有效。在we信号的上升沿,地址信号可通过i/o口锁入地址寄存器。
ce:片选线,低电平有效。在页编程或块擦除操作期间或器件处于忙状态时,ce高电平将被忽略。
we:写使能口,命令、地址和数据在we信号的上升沿被锁定。
re:读使能口,在该口的下降沿将数据送到i/o口线上,并使内部列地址寄存器增1。
wp:写保护口,低电平有效。当其为低时,编程和擦除操作禁止。
r/b:操作状态指示信号。为低时,表示正在编程、擦除或读操作,操作结束后变高。
2 spds202a简介
spds202a是台湾sunplus公司生产的性价比很高的语音芯片,它可以非常方便地与主机接口,主机通过发命令码来控制语音芯片的录音、放音等功能。它具有以下特点:
●为单片音频/语音编码/解码芯片,采用sacm-s480或sacm-s3200压缩和解压算法。具有8khz采样率,其数据低码率为4.8kbps或32kbps;
●具有数字音量控制功能;
●具有flash管理功能,可在内部自动管理flash数据,其标准flash接口最多可以连接4片flash,共64mbit。
●利用uart接口可以方便地与pc机及其它rs232器件接口,并可容易地上传或下载数据;
●内嵌锁相环电路;
●内嵌高品质10位8khz adc和dac;
●功耗低,采用2.8v~3.6v工作电压。
由于spds202a具有以上特点,因此只需增加极少的外围电路就可构成大容量的语音录放系统。
3 数码录音系统的构成
以spds202a为核心,以华邦公司的w78e58为主控制器的数码录音系统结构图如图1所示,w78e58与mcs-51系列单片机兼容,其内置的32kflash eeprom可作为程序存储器,而内置的256字节sram很适合k9f6408u0a的磁编程操作。
图2所示为w78e58和spds202a硬件接口电路。图中,tadce为片选信号线,可在其上升沿锁存命令/数据。tadsel1和tadsel0是命令选择信号线,其功能如表1所列。
表1 命令选择信号线的功能
tadd7~tadd0为8位数据线。它在工作时,主控制器的spds202a发送三个字节的数据,其中,第一个字节总是0ffh,第二个字节为命令码低字节,第三个字节命令码高字节;然后再由主控制器接收从spds202a返回的两个字节的数据。二者之间的通信程序如下(用c51编写):
void mcu_202_comm(void) /*muc和spds202a通信程序*/
{via=0xff; /*第一字节送0ffh*/
sendonedata( ); /*调用发送一字节数据子程序*/
via=cmdl; /*第二字节送命令码低字节*/
sendonedata( );
via_cmdh; /*第三字节送命令码高字节*/
sendonedata( );
echol=readonedata( ); /*读返回数据*/
echoh=readonedata( );
}
下面以录音功能的实现程序为例,可以很清楚地说明系统是如何工作的。
void record(void)
{cmdl=0x00; /*发送录音命令码*/
cmdh=0x10;
mcu_202_comm( );
if(err=1) /*如果发生错误,则返回*/
{err=0;
return;
}
}
可以看出,系统是通过主控制器向spds202a发送一系列控制命令码来实现其功能的。
4 复制功能的实现
为了能够保存和备份所录信息,应当考虑实现一种拷贝功能,即将一片k9f6408u0a上的信息完全复制到另一片上。实现这一功能的硬件接口电路如图3所示。图中,两片k9f6408u0a除片选线分开外,其余信号线均复用。采用如下程序可实现复制功能:
void copy(void)
{fceb2=1;
fceb1=0; /*选中第一片flash*/
for(rowadd2=0;rowadd2<64;rowadd2+ +)
{for(rowadd1=0;rowadd1<256;rowadd1+ +)
{blockerase ( );} /*调用块擦除子函数,将第一片flash内容擦除*/
}
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( ); /*调用从第一片flash读数据子函数*/
ce2=1;
ce1=0;
senddata( );/*调用向第二片flash页寄存器送数据子函数*/
ce1=1;
ce2=0;
setpointer=0x01; /*设置页寄存器指针指向页寄存器后半部分*/
f1rddata( );
ce1=1;
ce2=0;
senddata( );
fwrdata( ); /*执行页编程命令,将数据写入第二片flash*/
}
}
}
}
5 结束语
利用这种由语音芯片和容量flash组成的数码录音系统,即可在一片64mbit flash上记录长达3.7小时的语音信息。同时,为了能够保存所记录的信息,还可利用本文介绍的拷贝方法实现两片flash之间的拷贝。该系统可广泛应用于需要长时间语音记录的场合。
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。