APP下载

ATmega328p的音频信号最小系统播放器设计*

2016-06-24邢方诚王素珍宗卫华王涛

单片机与嵌入式系统应用 2016年6期

邢方诚,王素珍,宗卫华,王涛

(青岛大学 电子信息学院,青岛 266071)

ATmega328p的音频信号最小系统播放器设计*

邢方诚,王素珍,宗卫华,王涛

(青岛大学 电子信息学院,青岛 266071)

摘要:介绍了一种音频信号最小系统播放器。利用ATmega328p单片机作为主控芯片,VS1003音频解码芯片负责音频解码,外接SD卡作为存储介质,使用SSD1306液晶屏作为显示。该系统音质高、成本低、功耗低、体积小,是一种低成本、高品质的MP3播放器解决方案。

关键词:ATmega328p;MP3播放器;SD卡;VS1003;SSD1306

引言

Arduino是一款便捷灵活、方便上手的开源电子原型平台,包含硬件(各种型号的Arduino板)和软件(Arduino IDE),适用于爱好者、艺术家、设计师和对于“互动”有兴趣的朋友们。Arduino具有开放源代码的USB接口Simple I/O接口板(包括12通道数字GPIO、4通道PWM输出、6~8通道10位 ADC输入通道),并且具有使用类似Java、C语言的IDE集成开发环境。Arduino具有完全免费、开源的软件库,用户可以根据自己的需求进行修改。自1998年第一台MP3随身听Saehan MPman F10诞生以来,MP3播放器以其便携性、高品质的音质,赢得了用户的青睐。本文使用Arduino开发板设计一种最小硬件系统音频播放器设计方案,在保证音质的同时还具有设计简单、成本低的优点、非常适合读者自己动手制作。

1系统的硬件设计

图1 系统结构框图

本系统的硬件部分主要由ATmega328p控制器、VS1003解码模块、液晶显示模块、SD卡和按键组成,系统结构框图如图1所示。将音频信号转换为MP3格式,存放在SD卡上。由ATmega328p作为主控制器,控制音频信号从SD卡读取,送到VS1003解码模块,进行解码处理,通过VS1003的内部高品质可变采样率的ADC和立体声DAC,发送给耳机放大器。音频播放的内容和曲目通过SSD1306的128×64的点阵式OLED液晶屏显示,通过按键控制可以对曲目进行选择。系统的模块通过硬件SPI总线连接,所有模块共享SCLK、MOSI、MISO3根引脚,每个模块的片选信号CS需要单独连接到单片机的不同引脚上。

1.1Arduino控制器

本系统的控制器采用ATmega328p作为主控制器。ATmega328p是一款高性能、低功耗的AVR 8位微控制器,采用RISC结构,拥有131条指令,绝大多数为单时钟执行,包括32个8位通用工作寄存器。全静态工作于16 MHz时,性能高达16 MIPS,只需两个时钟周期就能完成硬件乘法器运算。它具有非易失性程序和数据存储器,32 KB的系统可编程Flash,擦写寿命为100 000次;具有独立定位的可选Boot代码区,通过片上Boot程序实现系统内编程,真正地同时进行读写操作;1024字节的EEPROM,擦写寿命为100 000次;2 KB的片内SRAM,可以对锁定位进行编程以实现用户程序的加密。采用TQFP32贴片封装的ATmega328p,芯片尺寸仅为7 mm×7 mm。

1.2VS1003解码芯片

VS1003是一个单片MP3/WMA/MIDI音频解码器和ADPCM编码器。它包含一个高性能、低功耗DSP处理器核VS_DSP;工作数据存储器为用户应用提供5 KB 的指令RAM 和0.5 KB 的数据RAM;串行的控制和数据接口,4个常规用途的I/O 口,1个UART;1个高品质可变采样率的ADC和立体声DAC;1个耳机放大器和地线缓冲器。

图2 VS1003与控制器接口

VS1003与控制器的连接如图2所示.其中miso、mosi、sclk与控制器的硬件SPI引脚连接;xrst为硬件复位引脚,低电平有效;dreq为数据请求引脚,VS1003内建一个32字节的FIFO,当VS1003的FIFO在能够接受数据时,dreq输出高电平,此时应当向其发送新的数据;xcs为片选输入信号;xdcs为数据片选信号,可以将其理解为命令/数据选择信号。在向VS1003发送音频数据时,需要将xdcs拉低,数据发送完成后再将其拉高。而向VS1003发送寄存器数据时,应将xdcs拉高,数据发送完成后再将其拉低。本设计中采用了硬件SPI,提高了通信速度,同时使用Arduino自带的SPI库,大大降低了编程难度。

图3 SD卡引脚定义

1.3SD卡

本设计采用SD卡的SPI模式进行读写操作,可以支持SD卡和SDHC存储卡,使用Kingmax的2 GB SD卡顺利地通过了测试。SD卡的引脚定义如图3所示,在SPI模式下,其DI、DO、SCLK引脚分别连接至控制器的硬件SPI引脚上,CS片选信号单独与控制器的一个引脚连接。

1.4液晶显示模块

图4    SSD1306与控制器   SPI接口

鉴于ATmega328p的输入/输出引脚数量比较有限,采用了支持SPI读写方式的SSD1306液晶显示器。SSD1306是一款128×64的点阵式OLED液晶屏显示模块,具有亮度高、功耗低等特点,在SPI模式下仅需4根线即可与控制器通信,较适合于本系统。如图4所示,SSD1306的SCK、MOSI引脚分别与控制器的硬件SPI引脚连接,片选信号CS和数据命令选择信号DC单独与控制器的两个引脚连接。

2系统的软件设计

2.1Arduino IDE开发环境

软件设计使用Arduino官方的IDE开发工具进行,开发者具有一定的C语言基础便可快速上手。IDE开发环境自带串口通信工具,为调试程序带来了方便。本设计的程序流程图如图5所示。系统上电后首先进行一系列的初始化操作,包括VS1003初始化、OLED初始化、SD卡初始化。之后进行SD卡检测操作,包括卡的类型、剩余容量等。执行初始化操作时若出现错误,系统会立即停止运行,并显示错误信息;若启动正常,系统将读取SD卡根目录下的第一首MP3格式的文件,解析其文件大小、歌曲时间及歌名等信息,然后调用显示程序执行显示操作。之后调用播放子程序开始音乐播放,在此期间若有按键按下,则转至按键处理程序,调整相关参数后(歌曲切换、音量控制)继续播放。

图5 主程序流程图

2.2播放程序设计

为了保证播放的流畅性,VS1003内建32字节的缓冲区,当缓冲区需要数据时会通过DREQ引脚输出高电平。本设计中,当控制器检测到DREQ为低电平时,执行其他操作;当检测到DREQ为高电平时,控制器会立即读取新的32字节的音频数据,并将其发送给VS1003,依次循环。主要程序如下:

while (1){

while (digitalRead(MP3_DREQ) == LOW){

vol_set();

song_set();

}

if(!file.read(mp3DataBuffer, sizeof(mp3DataBuffer))){

break;

}

digitalWrite(MP3_XDCS, LOW);

for (int y = 0 ;y

SPI.transfer(mp3DataBuffer[y]);

// Send SPI byte

}

digitalWrite(MP3_XDCS, HIGH);

}

2.3歌曲信息提取子程序

本设计可以支持对ID3V2版本MP3文件的信息显示,包括歌曲的文件名、文件大小、时间、码率,通过读取MP3文件的标签帧和音频帧来实现,程序流程图如图6所示。其中标签帧大小通过公式FSize = Size[0]×0x100000000+Size[1]×0x10000+Size[2]×0x100 + Size[3]求得,歌曲时间通过公式total_time=file_size×8/(float(decoding_rate)×1000)求得。

图6 歌曲信息子程序流程图

结语

系统上电后首先检测SD卡信息,将卡类型、总大小、剩余大小通过液晶屏显示出来,如图7所示。音频播放界面如图8所示,从上到下依次为歌名、歌曲时间、文件大小、音量大小和码率。

图7 SD卡检测界面

图8 音频播放界面

参考文献

[1] VLSI 公司.VS1003-MP3/WMA AUDIO CODE 数据手册[EB/OL].[2015-12].http//download.csdn.net/detail/zhongpai/4392299.

[2] VLSI公司.VS1003 中文说明书[EB/OL].[2015-12].http://wenku.baidu.com.

[3] Michael McRoberts.Arduino从基础到实践[M].杨继志,郭敬,译.北京:电子工业出版社,2013.

[4] 江思敏,陈明.Protel电路设计教程[M].北京:清华大学出版社,2006.

[5] 王宾,杨岸.基于DSP的触摸式MP3的设计[J].电子技术应用,2010(7):81-83.

[6] 李世奇,董浩斌,李荣生,等.基于FatFs文件系统的SD卡存储器设计[J].测控技术,2011,30(12):79-81.

邢方诚(研究生)、王素珍(教授)、王涛(副教授),研究方向为可编程逻辑器件在通信及信号处理中的应用;宗卫华(副教授),研究方向为无线电磁波在天线制作中的应用。

(责任编辑:薛士然收修改稿日期:2015-01-14)

Audio Minimum System Player Based on ATmega328p

Xing Fangcheng,Wang Suzhen,Zong Weihua,Wang Tao

(College of Electronic Information,Qingdao University,Qingdao 266071,China)

Abstract:In the paper,an audio player is proposed,which takes ATmega328p microcontroller as the main control chip,VS1003 audio decoder chip for audio decoding,external SD card as the storage medium,and SSD1306 LCD screen for displaying.This system has the characteristics of high quality,low-cost,low-power consumption and compact size.It is a good solution of MP3 player.

Key words:ATmega328p;MP3 player;SD card;VS1003;SSD1306

* 基金项目:国家自然科学基金委员会资助项目,青年科学基金资助项目(61501277)。

中图分类号:TN915.04

文献标识码:A