基于STM32单片机的多功能媒体播放器设计

2016-01-16 03:01:23张志伟
关键词:多功能播放器触摸屏

基于STM32单片机的多功能媒体播放器设计

张志伟

(陕西理工学院 物理与电信工程学院, 陕西 汉中 723000)

[摘要]采用STM32F103VCT6单片机为核心器件设计多功能媒体播放器。系统硬件电路由单片机、TFT触摸彩屏、温度传感器、EEPROM芯片、Flash芯片、音频解码芯片和SD卡模块等构成,系统软件在Keil MDK设计平台上编译,由TFT液晶显示驱动程序、ADS7846触控驱动程序、VS1003音频解码器驱动程序、SD卡读取驱动程序、音乐播放功能程序和其它相关功能程序构成。实验结果表明:媒体播放器可以实现MP3音乐播放和曲目歌词频谱信息彩屏显示,且具有时钟温度显示、电子书、图片浏览和画板等多种功能。

[关键词]单片机;触摸屏;SD卡;多功能;播放器

[文章编号]1673-2944(2015)04-0012-05

[中图分类号]TN912.202

收稿日期:2014-09-24

基金项目:陕西省教育厅科学研究计划项目(14JK1143);陕西理工学院科研基金资助项目(SLGKY14-06)

作者简介:张志伟(1977—),男,湖南省邵阳市人,陕西理工学院副教授,硕士,主要研究方向为信号分析和电子技术应用。

基于单片机或者嵌入式芯片的传统音乐播放器能够播放多种格式的音乐文件,已经广泛应用于人们的日产生活。其具有技术成熟、性价比高的特点,但也存在功能简单、硬件利用率低的缺陷[1-2]。为增强音乐播放器的娱乐效果、丰富音乐播放器的应用功能,采用STM32F103VCT6单片机、TFT触摸彩屏和音频解码器相结合进行方案设计,利用STM32单片机丰富的外设资源提高硬件电路的利用率,使用TFT触摸彩屏显示操作界面使得播放器的控制更加智能化、人性化,通过编程设计方便实现图片浏览﹑电子书、时钟显示等多种功能扩展。

1系统组成

图1 系统总体结构框图

系统总体设计由STM32单片机最小系统、SD卡模块、TFT触摸屏模块、音频解码模块、EEPROM、外扩Flash、温度传感器等组成,系统功能选择通过操作触摸屏菜单界面实现。音乐播放的基本设计流程为STM32F103VCT6单片机采用FAT文件系统方式读取SD卡中的MP3文件,控制音频解码芯片对MP3文件进行解码播放,同时在TFT液晶屏上显示播放信息。系统总体结构框图如图1所示。

2系统硬件设计

2.1STM32单片机

单片机采用意法半导体公司出产的基于ARM Cortex-M3内核的STM32F103VCT6芯片,芯片上集成丰富的资源,工作频率最高达72 MHz,是一款性价比很高的32位控制器,是低成本ARM嵌入式应用的极佳选择[3-4]。

2.2VS1003音频解码器

VS1003是由荷兰VLSI公司出品的一款MP3/WMA/MIDI音频解码和ADPCM编码器芯片,内建一个高性能DSP处理器核VS_DSP4,5 KB的指令RAM和0.5 KB的数据RAM。其通过SPI控制和传输数据,具有4个I/O口和1个UART,一个高品质可变采样率的ADC和18位的立体声DAC以及音频耳机放大器[5]。

VS1003与STM32之间通过SPI接口通信,STM32通过SPI接口向VS1003输入音频数据,VS1003进行解码后从输出通道输出音乐信号。VS1003与主控芯片连接有7根线,它们分别是:VS_XCS、VS_XDCS、VS_DREQ、VS_RST、SPI_SCK、SPI_MISO、SPI_MOSI,对应连接到STM32F103VCT6单片机的PC0—PC3及PA5—PA7。其中VS_RST是VS1003的复位信号线,低电平有效。VS_DREQ是数据请求信号,用来通知主机VS1003是否可以接收数据。SPI_MISO、SPI_MOSI、SPI_SCK则是VS1003的SPI接口,他们在VS_XCS和VS_XDCS选通信号下执行不同的操作。

2.3TFT触摸屏

触摸彩屏选用2.8英寸TFT-LCD屏,可显26万色,分辨率320×240,主控芯片为ILI9320。由于Cortex-M3内核微控制器都不带有专门的LCD控制器,触摸控制芯片采用TI公司的ADS7846触摸屏控制器。点击触摸彩屏后得到模拟电压值,通过ADS7846将该值转换成坐标,LCD采用16位8080并行接口模式配合专用芯片ADS7846进行操作[6-7]。带触摸功能的TFT液晶显示模块电路中,DB0—DB15为显示驱动ILI9320的液晶16位数据端口,对应连接到STM32F103VCT6单片机的PD0—D15接口;液晶控制端口(片选端口LCD_CS、复位端口LCD_RST、数据控制端口LCD_RS、读端口LCD_RD、写端口LCD_WR)对应连接到STM32F103VCT6单片机的PB11—PB15接口;背光控制接口BL_CTR经1 kΩ电阻接三极管基极,LEDK1、LEDK2、LEDK3、LEDK4经1 kΩ电阻接三极管集电极,三极管发射极接地,采用外接三极管用来控制TFT背光[8]。

2.4SD卡

SD卡的工作电压为3.3 V,初始化SD卡的时候,时钟频率最大不能超过400 kHz[9]。SD卡允许在两种模式下工作,即SD模式和SPI模式,本次设计采用SPI模式。启用SD卡进入SPI模式,在SD卡收到复位命令(CMD0)时,需要将CS端口设置为低电平。在SPI模式下,SD卡的1针脚作为CS端口连接到STM32F103VCT6单片机的PA3接口,2、5、7针脚分别作为MOSI、MISO、CLK端口连接到STM32F103VCT6单片机的PA5—PA7,为提高单片机SPI接口的驱动能力,接口电路连接时增加了47 kΩ的上拉电阻。

3系统软件设计

系统软件设计使用Keil MDK软件设计平台,采用C语言开发[10]。Keil MDK软件为ARM7、ARM9处理器设备提供了一个完整的开发环境,软件的编写采用模块化的设计思想,将整个软件部分逐步划分为子系统,再将子系统细化为各个功能模块来实现,最后再将所有的模块程序融合成一个大系统实现预期的全部功能。

图2 系统软件总流程图

3.1软件总体流程

系统上电后进行CPU时钟初始化、I/O口和相关外设初始化,自检,用于识别是否存在硬件问题。然后初始化FAT文件系统,加载字库和系统文件,完成后进入功能选择菜单,通过触控操作来选择进入不同功能[11]。系统软件设计的总体流程如图2所示。

3.2TFT液晶显示驱动程序设计

TFT使用的显示驱动芯片为ILI9320,数据的读写方式设置为16位数据模式,要完成TFT的显示功能主要是写显示缓存GRAM和写寄存器。写显示缓存需要按照16位数据映射图采用565模式读写数据,写寄存器操作是实现TFT显示的关键,先写入寄存器地址,再写入对应的操作数据,即完成了一次相关命令操作。相关函数名称如下:

void LCD_WriteReg(u8 LCD_Reg, u16 LCD_RegValue); //写寄存器

u16 LCD_ReadReg(u8 LCD_Reg); //读寄存器

void LCD_WriteRAM_Prepare(void); //开始写GRAM

void LCD_WriteRAM(u16 RGB_Code); //LCD写GRAM

void LCD_DisplayOn(void); //LCD开启显示

void LCD_DisplayOff(void); //LCD关闭显示

void LCD_Init(void); //初始化LCD

void LCD_Clear(u16 Color); //清屏函数

3.3ADS7846触控驱动程序和VS1003音频解码器驱动程序设计

ADS7846与STM32之间通过SPI接口相连,由STM32向ADS7846传送3次数据来完成转换。首先由STM32向ADS7846发送控制字,剩下的两次则是STM32读取ADS7846 A/D转换的结果数据。由于触摸屏的坐标原点、标度和LCD的坐标原点、标度不一样,本设计采用四点定位法进行坐标变换[12]。

VS1003采用SPI模式,VS1003通过7根线与STM32通信,在SPI接口正确配置后就可以对VS1003模块进行操作。相关函数名称如下:

u16 VS_RD_Reg(u8 address); //读寄存器

void VS_WR_Cmd(u8 address,u16 data); //写指令

void VS_WR_Data(u8 data); //写数据

u16 VS_RD_Wram(u16 addr); //读WRAM

void VS_Init(void);//初始化VS10XX

u8 VS_HD_Reset(void); //硬复位

void VS_Soft_Reset(void); //软复位

u16 VS_Ram_Test(void); //RAM测试

void VS_Sine_Test(void); //正弦测试

u16 VS_Get_DecodeTime(void); //得到解码时间

u16 VS_Get_HeadInfo(void); //得到比特率

void VS_Rst_DecodeTime(void); //重设解码时间

void set10XX(void); //设置VS10003

void set10XX_bass(void); //设定VS1003播放高低音

void Set10XX_vol(void); //设置音量

3.4音乐播放功能程序设计

实现音乐播放功能,需要读取相应的MP3文件,根据FAT文件系统并结合SD卡读取驱动,可以得到相应的文件数据,每次读取512字节。当VS1003初始化完成后等待接收数据(DREQ引脚为高电平)时,将读到的数据以每次32字节的速度送入VS1003的RAM中,VS1003自动处理数据得到模拟音频信号[13]。每次读取新的音频文件时,采用文件名比较方法查找SD卡中的歌词文件,如果存在歌词文件,将文件数据全部复制到RAM中,同时初始化30 ms中断的定时器用于歌词显示的刷新操作。实现音乐频谱显示功能时,频谱分析由VS1003完成,对VS1003初始化时写入频谱分析的代码,可以使VS1003完成频谱分析的功能,STM32通过定时读出频谱分析后的结果,对结果进行处理并显示到液晶屏上。音乐播放功能设计流程图如图3所示。

图3 音乐播放设计流程图

相关函数名称如下:

void Load_Gui_Mp3(void); //加载音乐播放界面

void Mus_Viewer(void); //浏览文件夹下的音乐文件

u16 Mus_Play(FileInfoStruct *FileName,u16 index,u16 total); //播放选定的歌曲

void MP3_PROG(u32 pos,u32 lenth); //进度条、时间、比特率等实时信息显示控制

void LoadPatch(void); //加载频谱分析的代码到VS1003

u8 GetSpec(u16 *p); //得到频谱数据

void LCD_ShowFFT(u16* curv,u8* topv,u8 *flyv); //显示频谱

void Lrc_Read_Init(void); //歌词读取初始化

void LyricDisplayCtrl(void); //歌词显示控制

3.5其他功能程序设计

实现电子书功能,需要读取相应的TXT文件,然后根据FAT文件系统打开并显示SD卡内TXT文件。LCD显示屏幕大小为240×320,在横方向上显示30个字符,竖方向上显示40个字符。电子书程序设计流程描述如下:系统打开一个TXT文件后,先读取一个扇区512字节的数据到数组中;数组中从第一个元素开始,先判断是否为中文字符,如果是则地址加16,否则加8;接下来判断一屏是否已经显示完,如果没有则继续,否则等待,直到选择下一页;最后判断整个数组是否已经全部显示,如果是则再读一个扇区的数据,否则继续。

图片浏览功能在文件数据的读取上与电子书功能一样,只是所读取的文件格式不一样。图片浏览支持BMP格式的文件,BMP是一种与硬件设备无关的图像文件格式,采用位映射存储格式,除了图像深度可选以外,不采用其他任何压缩[14]。

触摸画板功能的实现完全依靠TFT显示与触摸驱动的支持。其基本原理是利用ADS7846获取触摸坐标,并根据坐标在TFT上完成画点工作。

STM32F103VCT6内置了RTC模块。该模块拥有一组连续计数的计数器,在相应的软件配置下,具有秒中断的功能,只需要根据相应的中断信息,即可完成时钟功能。每次秒中断产生时,时间值加1,同时通过DS18B20获得温度数据,之后将时间与温度数据更新并显示出来。

4结束语

该多功能媒体播放器设计充分利用了STM32处理器外围接口,软件设计全部采用C语言编译,采用FAT文件系统方式读取SD卡中的文件,通过图形化的触摸屏菜单界面进行功能选择[15]。系统采用STM32F103VCT6控制器读取SD卡中存储的MP3音乐文件,将数据送入VS1003音频解码芯片进行音频解码,解码后的音乐流通过功放驱动喇叭播放,同时在TFT液晶显示屏上实时显示歌曲信息;在实现基本的音乐播放基础上,结合TFT触摸屏、温度传感器DS18B20、EEPROM芯片AT24C02、Flash芯片W25Q16等外围器件,增加了电子书、图片浏览、触摸画板、时钟温度显示等多种实用功能。

[参考文献]

[1]黄振杰,卢小冰.基于AT89S52单片机的多功能音乐播放器[J].电子设计工程,2009,19(2):17-18.

[2]高玉敏,宋建华.基于PIC单片机PWM模式的音乐播放系统设计[J].测控技术,2014,33(9):72-74.

[3]陈志旺.STM32嵌入式微控制器快速上手[M].北京:电子工业出版社,2012.

[4]马志强,王建刚,孙少林,等.基于STM32的PWM音乐播放器应用设计[J].单片机与嵌入式系统应用,2012,12(11):63-65.

[5]郝迎吉,关强.基于VS1003解码器的信号发生器[J].仪表技术与传感器,2013(2):19-20.

[6]郭本振,李声晋,卢刚,等.基于DSP和LCD触摸屏的车载信息系统设计[J].液晶与显示,2011,26(1):83-87.

[7]刘彬,韩进.基于单片机的液晶显示触摸屏控制设计[J].液晶与显示,2010,25(2):240-244.

[8]孙林军,贺锋涛.基于STM32控制液晶的接口实现[J].电视技术,2013,37(1):77-79.

[9]郁峰.基于嵌入式文件系统的MP3播放器的设计和实现[D].苏州:苏州大学,2009.

[10]谭浩强.C程序设计[M].4版.北京:清华大学出版社,2010.

[11]闵华松,王娜,谭金鑫.嵌入式多媒体播放器通用控制系统设计与实现[J].计算机工程与科学,2009,31(2):153-155.

[12]张耀麒.应用于电阻式触摸屏的ADS7846控制器[J].电子科技,2006(9):49-53.

[13]李宁.基于MDK的STM32处理器开发应用[M].北京:北京航空航天大学出版社,2008.

[14]邸兴,张建花,陈贝.基于STM32的BMP图片解码系统[J].电子设计工程,2011,19(10):135-138.

[15]陈自龙,周书杰,汤勇明.基于ARM嵌入式系统的高保真无损音乐播放器设计[J].电子器件,2012,35(6):692-698.

[责任编辑:张存凤]

Design of Multi-functional media player based on STM32

ZHANG Zhi-wei

(School of Physical and Telecommunication Engineering, Shaanxi University of Technology,

Hanzhong 723000, China)

Abstract:For the expansion of traditional music player function, multi-functional media player was designed, which uses STM32F103VCT6 micro controller as the core device. The hardware circuit of the system is composed of MCU, TFT color touch screen, temperature sensor, EEPROM chip, Flash chip, audio decoder chip and SD card modules etc. the system software is compiled in Keil MDK design platform by the TFT LCD driver, ADS7846 touch driver, VS1003 audio decoder driver, SD card reader driver, music playback function program and other related functional program composition. Experimental results show that: the media player can achieve MP3 music player and track lyrics spectrum information of color display, and has multiple functions of clock temperature display, e-books, picture browsing and drawing board.

Key words:SCM;touch screen;secure digital card;multi-functional;player

猜你喜欢
多功能播放器触摸屏
PLC和触摸屏在卫生间控制系统的应用
Walkman诞生40周年 索尼适时发布NW-ZX500和NW-A100系列播放器
基于STM32的MP3播放器设计
电子制作(2019年9期)2019-05-30 09:41:44
Moon ACE播放器/放大器一体机
皮肤“长”出触摸屏
多功能3D影视厅视听系统设计及调试
演艺科技(2016年4期)2016-11-16 08:16:21
多功能可伸展照明双层晴雨吸附雨伞
“多功能”收音机 来电申领
普通汽车遮阳板的改良与设计
企业导报(2016年13期)2016-07-19 17:24:34
播放器背板注塑模具设计
中国塑料(2015年8期)2015-10-14 01:10:55