微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于8位单片机和闪存的声音播放器设计

基于8位单片机和闪存的声音播放器设计

时间:09-10 来源:互联网 点击:

时的扫描输出),速度比较慢,不能用于与K9G8G08的通信。还需注意的是,由于WAV文件中的编码是无符号数(即OOH是最低电平,FFH是最高电平),而EPG323l的D/A输入是有符号数(即80H是最低电平,7FH是最高电平),所以程序中应将WAV声音数据的最高位取反后送到D/A。

  3 声音播放器软件设计

  在声音播放器软件设计之前,应确定好K9G8G08中数据存放的格式。

  首先是地址的格式。对K9G8G08内部存储单元操作的地址是分5个字节送出的,所以地址的格式最好是按这5个字节编排,如表l所示。


  其次,根据NAND Flash的特点,其内部是可能有坏块(BAD BLOCK)存在的,但BLOCK 0一定是有效块(VALID BLl3CK),所以将坏块信息存在BLOCK 0中。而K9G8G08的有效块的个数在3 99* 096之间,也就是说,坏块的个数不大于100个。块地址是由A19~A30决定的,为方便程序的编写,将块地址分3个字节存储,各个地址位的安排同表1中的第3、4、5个字节,将A12~A18位放O。坏块信息存储区最多占用300个字节。

  第三,将声音文件的目录也存在BLOCK O中。目录中的每条记录占用64字节,其中前5个字节是声音文件的起始地址,同样为了方便程序的编写,每字节中包含的地址位与表1一致;后面的59个字节是声音的名字,比如歌曲名等,用0表示结束,如表2所示。从表2中可知,目录区最多有4 088个记录,应该能满足一般的需要。


  软件设计中最关键的是对K9G8G08的操作。该声音播放器中,程序只需对K9G8G08进行读操作即可。图4为读K9G8G08的软件设计流程。


  对K9G8G08读操作的程序在定时器中断中调用。对于22.05 kHz或44.1 kHz的WAV文件,定时器的中断周期分别为45.4μs或22.7μs。对于单声道、8 bit的WAV文件,其频率可以在文件头的第18H、19H字节得到,对于22.05 kHz和44.1 kHz的WAV文件,这两个字节的值分别是22H、56H和44H、ACH,声音信息从第2CH个字节开始。需要说明:1)写入命令的操作包括送出命令字和在写(WE)控制线上产生下降沿;2)写入5字节地址的操作要按表1中的顺序向K9G8G08写入5个字节的地址。每个地址的写入包括送出地址和在写(WE)控制线上产生下降沿;3)输入数据的操作包括在读(RE)控制线上产生上升沿和读入数据。

  4 结束语

  由于对不同型号的NAND Flash的操作有可能略有差别,所以如果要使播放器同时能支持多种NAND Flash,应该在程序中读取器件的ID,根据其ID选择不同的读NAND Flash的程序。三星NAND Flash的ID参见文献。该声音播放器具有盒式录音机和复读机的放音功能,如果增加录音功能,它完全可以是盒式录音机和复读机的替代品,因为它有不用磁带和没有复杂的、易损坏的机械结构的优点,是前两者不能相比的。只是由于8 bit的量化分辨率略低了点,体现在播放音量较小的语音时,有点“呜呜”的噪音,这是量化误差引起的。可以采用在播放器中使用16 bit的WAV文件的方法来解决,但这会增加一倍的数据量。也可以通过使用MP3文件的方法来解决,这时它就是一台MP3播放器了,但需要增加MP3解码器(或用软件解码)。这里所提出的对NAND Flash的使用方法简单易行,基本上类似于对NOR Flash或SRAM的使用,存储器的物理地址对程序员来讲是透明的,易于理解和控制。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top