用户登录  |  用户注册
首 页商业源码原创产品编程论坛
当前位置:PB创新网文章中心解决方案电子通信

使用SPCE061A扩展K9F1208实现数码录音及播放

减小字体 增大字体 作者:佚名  来源:本站整理  发布时间:2009-01-10 22:16:43
阳不同音频格式压缩比:
SACM-A2000:压缩比为8:1,8:1.25,8:1.5
SACM-S480: 压缩比为80:3,80:4.5
SACM-S240: 压缩比为80:1.5

    压缩比越大,存储空间占用越小,更加节约资源。例如本系统采用的是SACM_A2000格式中的16Kbit/s压缩编码率,则就可以计算出512Mbit的存储器可以存储512M/16K = 32000秒= 8小时53分钟多。

四、硬件系统设计

javascript:window.open(this.src);" style="cursor:pointer;"/>

K9F1208的硬件图如上图所示,它与SPCE061A单片机接口的方法为:K9F1208的数据总线IO0~7与SPCE061A的IOA0~7相连,用单片机的IOB0作为读允许信号(RE),IOB1作为写允许信号(WE),IOB2作为片选信号(CS),IOB3作为地址锁存允许信号(ALE),IOB4作为命令锁存允许信号(CLE)。因为不需要写保护,本系统把写保护引脚(WP)接到了高电平。RDY/B信号线不用,本例是悬空处理,K9F1208的状态通过Read Status操作来实现。

四、软件设计

本系统软件设计流程如图4所示。

本软件系统设计简单。主要是因为凌阳的十六位单片机开发环境使用方便,并支持C语言与汇编语言的互相调用,且提供丰富的凌阳语音函数库,只要我们了解这些函数的使用方法,我们就可以很容易的实现语音的录放。
本系统底层驱动部分包括K9F1208的读写、擦除使用的是汇编语言编写的。上层部分包括语音的录放是由C语言完成的。提供独立的K9F1208的读、写、擦除代码模块。需要源代码的请到凌阳科技大学计划网站( http://www.unsp.com.cn )下载。

在使用过程中,建议遵循以下规则:

1、初始化过程
使用函数InitSamsungFlash() 初始化K9F1208。   
2、写过程
先用函数InitWriteSamsungFlash()初始化写操作,然后使用函数 FillSamsungFlash(Data)往K9F1208写入数据,最后用函数StopWriteSamsungFlash()结束写数过程。
3、读过程
先用函数InitReadSamsungFlash()初始化读操作,然后使用函数ExtractSamsungFlash()从K9F1208读出数据,最后用函数StopReadSamsungFlash()结束读数过程。
4、注意每次读/写操作都要调用初始化和结束函数 
5、为了避免错误,请不要交迭使用读/写操作
6、当program/erase错误发生的时候, 用户必须根据自己的文件系统自行处理。        请参考_SP_FillSamsungFlash和_SamsungEraseBlock。

javascript:window.open(this.src);" style="cursor:pointer;"/>

SACM-DVR相关的API函数如下所示:
int SACM_DVR_Initial(int Init_Index)     //初始化
void SACM_DVR_ServiceLoop(void)     //获取资料,填入译码队列
void SACM_DVR_Encode(void)      //录音
SACM_DVR_StopEncoder();      //停止编码
SACM_DVR_InitEncoder(RceMonitorOn)               //初始化解码器
void SACM_DVR_Stop(void)      //停止录音
void SACM_DVR_Play(void)      //开始播放
unsigned int SACM_DVR _Status(void)     //获取SACM_DVR模块的状态
void SACM_DVR _InitDecode(void)     //开始译码
void SACM_DVR _Decode(void)      //获取语音资料并译码,中断播放
SACM_DVR_StopDecoder();      //停止解码
unsigned int SACM_DVR _ TestQueue(void)    //获取语音队列状态
int SACM_DVR _Fetchqueue(void)     //获取录音编码数据
void SACM_DVR_FillQueue(unsigned int encoded-data)   //填充资料到语音队列,等待播放
int  GetResource(long Address) ——(Manual)        
中断服务函数:
Call F_FIQ_Service_ SACM_DVR      //语音播放
Call F_IRQ1_Service_ SACM_DVR      //语音录制

五、结束语

凌阳公司的SPCE061A的结构特点及其相关的一些开发平台为我们实现语音的录入和播放提供了极其方便的条件。本系统只是实现SPCE061A的一个基本应用,设计者只要对该系统的电路、程序稍加改动,就可以实现语音复读机、跟读机、留言机、以及电话录音仪等功能。



上一页  [1] [2] 

Tags:

作者:佚名

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
PB创新网ourmis.com】Copyright © 2000-2009 . All Rights Reserved .
页面执行时间:46,765.63000 毫秒
Email:ourmis@126.com QQ:2322888 蜀ICP备05006790号