DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 122|回复: 0
打印 上一主题 下一主题

基于K9F6408U0A和SPDS202A的数码录音系统

[复制链接]
跳转到指定楼层
楼主
发表于 2012-1-22 00:15:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
摘要: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 命令选择信号线的功能
TADSEL1
TADSEL0
功    能

0
0
从SPDS202A读数据

0
1
从SPDS202A读状态

1
0
写数据到SPDS202A

1
1
SPDS202A复位
    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之间的拷贝。该系统可广泛应用于需要长时间语音记录的场合。
                          
                       
                          
                               
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2025-12-29 22:12 , 耗时 0.098672 秒, 18 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表