颜 锐,谭周文
(湖南人文科技学院通信与控制工程系,湖南娄底417000)
MP3作为高质量音乐压缩标准,给音频产业带来了具大的冲击。MP3技术使音乐数据压缩比率大,回放质量高。传统音乐文件在网络上传播时,主要用Winamp等播放软件进行播放,使MP3音乐无法脱离计算机进行播放,给音乐欣赏带来不便。随着MP3播放器的出现及其技术的发展,人们对MP3播放器的要求越来越高,制造商在MP3播放器的选型、设计、开发和功能等领域等方面做了很多努力,便携式多功能MP3播放器的应用也越来越具有实际应用价值和潜在的市场要求。基于以上背景,本文提出以STM32F103 ZET6为处理器,以VS1053为播放器解码芯片,设计一款便携多功能MP3播放器。
根据要求,确定如下方案:以STM32F103ZET6为主控芯片,从SD卡中读取音乐文件的数据,送VS1053进行解码,输出模拟音频信号。LD3320用来实现人机语音交互,2M的FLASH用来保存字库信息和UNICODE转OEM的码表。24C02用来保存触摸屏的校准信息。外扩512K的SRAM用来满足大内存的使用需求。显示模块采用3.0寸的触摸电阻屏,所有操作通过触摸完成。DS18B20完成温度的采集功能,蜂鸣器完成声音提示音的功能,摄像头接口外接OV7670模块完成照相的功能。硬件系统结构框图如图1所示。
图1 硬件系统结构框图
本系统采用VS1053音频编解码器作为音频文件的硬件解码方案,VS1053能解码MP3,WMA,WAV,MID,FLAC,OGG 格式的音频文件,并且还能进行ADPCM编码,包含一个低功耗,高性能的DSP处理器。VS1053采用SPI的通信方式,通过判断DREQ,如果此引脚为高电平则送数据,如果为低电平则停止送数据。因为VS1053自带立体DAC输出,如果解码成功,可以用示波器从LEFT和RIGHT引脚测得波形。能够直接驱动耳机。VS1053的原理图如图2所示:
图2 音频编解码电路
本系统采用的显示模块为3.0寸的TFT四线电阻屏。该显示屏的控制器是R61509V。显示屏外配有触摸屏,触摸屏的控制器是XPT2046。总的来说触摸电阻屏的设计分为两个部分,一个是显示屏的设计,另一个是触摸屏的设计。为了能够做出比较好的UI,采用的价格较高的3.0寸的TFT显示屏。TFT裸屏的原理图设计如图3所示:STM32F103ZET6的IO比较充足,况且选用16位的数据模式要比8位的数据模式,显示的速度要快得多。配合STM32F103ZET6的FSMC刷屏高达33FPS,可以说速度非常快。有两个0欧姆的电阻,当R2焊接的时候,IM0引脚就接地了,这时候就是16位数据模式,当R1焊接的时候,IM0引脚就接高电平,选择的就是8位数据模式。显示屏的LCD_BAK引脚是用来控制屏幕的亮度。这里接到处理器的PWM引脚就可以任意控制屏幕的亮度。
常见的触摸 IC 有 ADS7843,7846,UH7843,7846,XPT2046,TSC2046。XPT2046 有两种工作模式。一种是单端工作模式,另一种是差分工作模式,这里采用差分的工作模式。XPT2046的通信协议是SPI,指令很简单,当输入的指令为0X90时去读X坐标的电压值,当时指令为0XD0时就读取Y坐标的电压值。触摸屏的原理图设计如图4所示:
图3 TFT裸屏原理图
图4 触摸屏原理图
图3中有两个0欧姆的电阻,这是为了能够自由选择8位数据模式或16位的数据模式。
XPT2046包含12位精度的SAR型AD转换器。该IC主要为了采集电阻屏的电压值。对于电源的波动还是比较敏感的,TVCC通过VCC串联一个10欧姆的电阻,然后分别并上一个10UF和104的电容。电阻的作用是衰减小幅值的噪声信号,起到滤波的效果。104电容是滤除高频噪声。10UF电容有两个作用。一是储能的作用,此IC工作在差分模式,功耗比较大,这里的作用是避免工作时对电源的波动,对外可以滤除低频噪声。
STM32F103ZET6处理器内部自带温度传感器,然而这个温度传感器的精度很不高,所以采用外接温度传感器。DS18B20是DALLAS公司生产的数字温度传感器,采用单总线的操作方式,精度又高。只占用一个IO口。温度传感器的设计很简单,需要注意引脚的接法,如果电源和地接反,将可能烧坏芯片。DS18B20连接图如图5所示:
图5 DS18B20原理图
系统采用容易编写程序的有源蜂鸣器,有源蜂鸣器和无源蜂鸣器的最大区别是:有源蜂鸣器含有振荡器,只要电流达到要求,就能够以一定频率发出声音。对于某些操作采用蜂鸣器作为反馈声音,会使得本系统的设计变得更加人性化。蜂鸣器的连接图如图6所示:
图6 蜂鸣器原理图
采用贴片的三级管S8050,将STM32的BUZZER引脚设置为推挽高电平输出就能是蜂鸣器鸣叫了,可以注意到三级管的基极和地之间跨接了一个10K的电阻。当BUZZER引脚置为低电平的时候,由于基极还存在电压,电压不能够快速下降,并接一个电阻有利于电压快速降到低电平。
系统软件设计采用μC/OS-II作为操作系统,以UCGUI作为图形用户界面软件。采用模块化的编程思想,先写好底层与硬件相关的软件模块,封装成.c和.h文件。然后再编写与硬件无关的应用软件模块。软件总体框架设计如图7所示。具体操作包含几个模块的移植。
图7 软件总体设计框图
在官网上下载源码。下载后,在Software文件夹中有两个子文件夹。在Ports文件夹中分别修改好 os_cpu.h,os_cpu_a.asm,os_cpu_c.c,os_dbg.c。然后再修改启动文件。修改完毕后,就可以通过os_cf g.h来裁剪内核,把不需要的系统服务裁剪掉以节省系统资源。裁剪完毕后,就可编写一个LED闪烁的任务来检验是否移植成功。
下载uCGUI的源码(3.9版的)后。将文件中的CONFIG,GUI_X文件夹以及GUI的源文件夹添加到工程当中。CONFIG文件夹是用来裁剪和配置uCGUI的,该文件夹下有三个文件需要配置和修改,GUIConf.h是用来配置uCGUI是否支持操作系统,是否支持触摸,为窗体分配动态内存等等,GUITouchConf.h是用来配置触摸屏的参数,LCDConf.h是用来配置LCD显示其参数。对应CONFIG文件夹,GUI_X文件夹是用来修改具体的函数。完成这两个文件夹的修改,编译正确后,就可以通过uCGUI的一些简单的2D图形库函数测试uCGUI是否移植成功。
首先下载源码,有两个文件夹doc和src。在src文件夹包含需要的源码。ffconf.h是FatFs模块的配置文件,ff.c和ff.h分别是模块的源文件,头文件。Integer.h是模块的数据类型定义文件,diskio.c和diskio.h是模块的底层磁盘I/O文件。移植FatFs的时候只需要修改ffconf.h和diskio.c文件。通过ffconf.h文件可以配置是够支持字符串操作,是否支持长文件名,是否支持格式化,设置语言类型等等。FatFs模块完全与底层磁盘I/O分离,因此需要实现底层物理磁盘的读写函数。实现底层函数的时候,只考虑了一个物理磁盘的情况,其实FatFs可以支持多个不同的存储媒介,不过这里只有SD卡。移植好FatFs,就可像PC机一样读写文件。
底层驱动模块和硬件紧密相连,是整个软件设计的基石,如果底层驱动没写好,上层软件的编写就会变得很困难,有时候在上层应用软件的编写的时候总是找不到错误,就有可能底层驱动出问题了。本软件系统的底层驱动模块文件相对来说比较多,可以采用模块化的编程思想,只需每个编写调试就可以成功。
设计完成的MP3播放器能够完成正常音乐播放,数码相框能解码出小于屏幕尺寸的bmp,jpg,gif文件,照相机能够拍摄320X240的图片,电子书能够打开.txt,.h,.c,.lrc 文件,能够完成语音对话功能。该系统实际运行稳定可靠,以后仍可以对其功能进行补充,完善多功能MP3的性能。
[1]先锋工作室.单片机程序设计实例[M].北京:清华大学出版社,2002:46-50.
[2]张大明.单片机控制实训指导及综合应用实例[M].北京:机械工业出版社,2007:668-710.
[3]方安平,蔡俊宇.Cortex-M3的异常处理机制研究[J].单片机与嵌入式系统应用,2009(2):15-18.
[4]马义德,周炜超,文芳,李柏年,李庚.基于SPCE061A的声控MP3播放器设计[J].微计算机信息,2009(8):301-303.
[5]黄智伟.全国大学生电子设计竞赛电路设计([M].北京:北京航空航天大学出版社,2006:127-140.
[6]马喆.基于AT89C51SND1C的mp3播放器的设计[J].中小企业管理与科技:下旬刊,2009(1):235-236.
[7]陈永降,朱维杰.基于SL811HS的U盘MP3播放器设计[J].科技创新导报,2008(14):9.
[8]马鹏阁,张松炜,陈恩庆.基于SOC芯片ATJ2135的MP3播放器设计[J].电子工程师,2008(6):57-59.