- 1、本文档共27页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
5.5 SPCE061A语音录放
Sunplus SPCE061A 微控制器 语音录放 语音录制 一、单片机语音录放原理 二、创建一个录放音程序 三、用汇编语言编写录放音程序 四、小结和注意事项 五、疑难解答 一、单片机语音录放原理 语音录制流程 语音采样 在定时中断的控制下,以一定的速率(8KHz)进行AD转换 压缩编码 将采集到的数据以某种算法压缩编码 存储 将编码后的数据保存到存储介质中 用SPCE061A实现录放音 硬件条件 10位ADC和10位DAC 内置MIC放大器和自动增益功能 2个16位定时/计数器 CPU时钟最高达49MHz,16位乘法器和内积运算,有能力执行复杂压缩算法 软件条件 方便灵活的语音录放函数库 语音以A2000格式压缩存储 用SPCE061A录制语音 用SPCE061A播放录音 二、创建一个录放音程序 创建一个录放音程序 新建工程 创建一个录放音程序 复制录放音需要的支持文件到工程所在的文件夹 Sacmv26e.lib Hardware.inc Hardware.asm Flash.asm SRam.asm 创建一个录放音程序 添加支持文件到工程中 创建一个录放音程序 编写录音程序 创建一个录放音程序 编写放音程序 在main.c中编写放音函数 创建一个录放音程序 编写中断服务程序 新建汇编语言程序文件 编写中断服务程序代码 创建一个录放音程序 编写main()函数 创建一个录放音程序 下载运行 用户接口函数 Hardware.asm中定义了用户接口函数,可对语音录放程序做灵活的定制 F_SP_SACM_DVR_Init_ F_SP_InitQueue_DVR F_SP_ReadQueue_DVR F_SP_TestQueue_DVR F_SP_RampUpDAC1 …… …… 三、用汇编语言编写录放音程序 用汇编语言编写录放音程序 Sacmv26e.lib语音函数库还有供汇编语言直接调用的函数,它们与C函数一一对应(前面加上“F_”前缀): F_SACM_DVR_Initial F_SACM_DVR_InitEncoder F_SACM_DVR_InitDecoder F_SACM_DVR_FetchQueue F_SACM_DVR_FillQueue F_SACM_DVR_Eecoder F_SACM_DVR_Decoder …… …… 用汇编语言编写录放音程序 汇编语音播放函数使用R1、R2……寄存器来传递参数和返回值。 例如,C语言的SACM_DVR_Initial(0);语句可改写为: r1 = 0 call F_SACM_DVR_Initial C语言的SACM_DVR_FetchQueue()函数可改写为: call F_SACM_DVR_FetchQueue 函数的返回值保存在R1寄存器中。 四、小结和注意事项 小结和注意事项 语音录放需要的支持文件: Sacmv26e.lib, Hardware.asm, Hardware.inc, Flash.asm, SRam.asm 语音录制需要调用Flash读写函数,在Flash.asm中定义。如果使用外挂的Flash、EEPROM等存储器,则需要编写相应的读写程序替换上述函数。 语音的录制和播放调用同一个中断服务函数F_FIQ_Service_SACM_DVR 小结和注意事项 相应地,在播放录音的开始和结束时可使用渐入渐出函数防止爆音: SP_RampUpDAC1(); SP_RampUpDAC2(); SP_RampDnDAC1(); SP_RampDnDAC2(); 实际上,语音录制时采用的压缩编码是A2000格式,因此,录制的语音资源也可以采用A2000播放程序播放。 五、疑难解答 疑难解答 播放程序并没有用到SRam.asm文件中的内容,为什么还要把它包含到工程中? 事实上,语音录放也可以选择自动录放和手动录放两种模式。而自动录音时要用到SP_InitWriteSRAM等几个用户接口函数,这些函数在SRam.asm文件中定义。因此,虽然手动录放时并没有用到这些函数,但必须定义这些函数才可以编译成功。 凌阳科技大学计划网站: 凌阳科技大学计划邮箱: E_mail: unsp@ 凌阳科技大学计划客服中心: Tel: 0102911 凌阳科技大学计划技术支持中心: Tel: 0102919 首先编写一个录音函数。根据前面的录音流程图,首先是初始化工作:擦除录音中要使用的Flash存储器空间;初始化录音以及录音编码算法。然后在一个循环里不断地将从Mic采集到的数据压缩编码,并保存到Flash中,直到Flash空间被填满。 相应地,根据前面的放音流程编写播放录
文档评论(0)