基于EPG3231和闪存的声音播放器设计
基于EPG3231和闪存的声音播放器设计
提出一种在单片机系统中比较简单地使用大容量NAND Flash存储器的方法。与一般方法相比,编写应用程序的程序员不需要掌握计算机文件系统的规范,只要按照NAND Flash的读、写、擦除等时序对其进行操作,把NAND Flash当成NOR Flash或SRAM来对待,这样存储器的物理地址对程序员而言是透明的,只需要在遇到坏块时跳过该块就可以了。该方法降低了使用NAND Flash存储器的难度和成本,且不仅适用于EPG3231,也可以推广到一般的8位单片机系统中使用。
目前在技术上,声音的存储大都使用大容量的NAND Flash,但一般按照文件系统的方式存储,这对学生有一定的难度。本声音播放器的声音文件采用非文件方式存储在NAND Flash中,这样在不需要太多背景知识的情况下,可以比较简单地使用大容量的NAND Flash存储器,降低了使用NAND Flash存储器的难度和成本。
设计声音播放器关键需要考虑:声音数据以何种格式、何种方式载入K9G8G08.一种可直接用一个U盘,通过计算机将数据下载到
K9G8G08中,声音数据以文件方式存放。但这样必须在单片机中完成与U盘的接口连接,并且要熟悉计算机的文件格式,这对单片机的初学者来讲难度比较大。另一种是将声音数据按顺序存放在K9G8G08中,这样数据存放的物理地址对开发者来讲是透明的,再使用下载器就可以将声音数据载入K9G8G08中。如果将下载器和声音播放器做在一起,同样可以在线下载数据。
K9G8G08是三星公司生产的1Gx8bit的NAND Flash存储器,工作电压为2.7~3.6V,内部存储结构为字节/页×128页/块×4096块。外部电路通过共用的8位I/0端口分时访问其命令寄存器、地址寄存器和数据寄存器,实现对器件读、写和擦除等操作。其存储器的命名方式参见文献。K9G8G08采用48引脚的TSOP封装,其引脚配置如图2所示。
基于EPG3231和闪存的声音播放器设计
EPG323l是ELAN公司的8位RISC单片机,它有11个8位并行口、1个8位电流输出型的D/A、1个10位逐次逼近型A/D、1个通用异步收发器UART、1个8,16,24位的串行外设接口SPI、3个定时器等,硬件资源丰富,还支持手写识别、语音识别、ADPCM编解码等功能。另外,EPG3-23l的速度较快,在时钟频率为16MHz时,指令周期为125ns
为
EPG3231与K9G8G08的电路连接图。图中没有给出K9G8G08,只给出了EPG323l的基本电路及用网络标号标出的与K9G8G08的连接引脚。K9G8G08的19引脚是写保护,在实际电路中接+3.3V。需要说明的是,EPG323l的D/A输出是48引脚,输出电流信号,需要将其输出转换为电压信号再送至后续的功放。其中比较简单且可行的做法是在PBl与地之间接一只电阻来完成电流与电压的转换,关键是该电阻的取值。若电阻阻值较大,输出波形的上部会出现限幅失真;若阻值较小,则不能最大限度地利用D/A的动态范围。
另外,中使用EPG323l的D端口与K9G8G08的I/O端口相连,这个端口必须是双向的,使用其他的双向端口也可以,但不要使用J端口和K端口,这两个端口适用按键的输入/输出,速度比较慢,不能用于与K9G8G08的通信。还需注意的是,由于WAV文件中的编码是无符号数,而EPG323l的D/A输入是有符号数,所以程序中应将WAV声音数据的最高位取反后送到D/A.