基于ARM的MP3播放器的设计与制作
- 格式:doc
- 大小:262.00 KB
- 文档页数:8
基于ARM的音乐播放器的设计与实现摘要多媒体技术融计算机、声音、文本、图像、动画、视频和通信等多种功能于一体, 是当今信息技术领域发展最快、最活跃的技术, 是新一代电子技术发展和竞争的焦点。
嵌入式设备与多媒体技术的融合使得PDA, 智能手机, 平板等智能终端得到快速发展。
未来, 智能终端与物联网的结合将推动嵌入式设备快速发展。
因此, 基于嵌入式终端的应用前景广阔。
设计目的是在嵌入式平台上开发一款基于开源Linux操作系统的多媒体播放器, 它以mplayer作为核心播放程序, 将支持更多的文件播放格式甚至能够与PC机上的媒体播放器相媲美。
多媒体播放器的硬件部分: 以S3C2440开发板为硬件平台, 它的外围设备能够外插U盘作为存储器、TFT-LCD触屏、key23键盘, 以及外接耳机作音频设备。
因为播放器开发是基于成熟的硬件平台, 主要工作集中在软件部分, 主要包括: 搭建开发环境, 配置编译mplayer可执行程序, 编写触屏驱动, 及key23驱动, 编写主控程序等等, 最后将程序移植安装到开发板, 完成基于Linux的嵌入式播放器的设计。
经过测试, 播放器符合设计要求。
关键词: 触屏, 移植, 线程, 嵌入式AbstractThe multimedia technology involves sound, text, image, animation, video and communications and other functions. Information technology is one of fastest growing technologies. Obviously, it is a new generation of electronic technology development and the focus of competition. The integration of embedded equipment and multimedia technology contributes a rapid development for PDA, smart phones, slab intelligent terminal. In the future, intelligent terminal will promote the network embedded equipment rapid development. So, the application that based on embedded terminal has a bright future.The purpose of this design is to design multimedia player on an embedded platform by using the open source in Linux operating system. It is take mplayer as core broadcast program, which will support more file format, and even is more comparable with the PC media players.The hardware part of Multimedia player takes S3C2440 development board for the hardware platform, which use the USB disk, tft-lcd touch screen, key23 keyboard, and external earphone for audio equipment. Because the player development is based on mature hardware platform, the main work focused on software part, which main includes these works, such as the development environment set up, the compiled configuration of mplayer, the drive of touch screen and key23, and the program of master control, etc. Finally, the developed program can be installed to development board based on the Linux. After testing, player can meet the design requirements.Keywords: touch screen; transplant; thread; embedded;目录第1章绪论 ............................................................. 错误!未定义书签。
基于ARM的⾳频播放器设计毕业论⽂基于ARM的⾳频播放器设计毕业论⽂⼀、概述⾳频播放⼀直是⼈们所钟爱的,琳琅满⽬的各种个样的MP3播放器随处可见,但其相应的驱动能⼒有限。
本设计是采⽤S3C44B0X处理器的IIS⾳频接⼝和⾳频编码解码芯⽚UDA1341TS,并⽤DMA⽅式⾼效地来实现录⾳和播放声⾳时的数据传输。
⼆、⾳频播放器硬件设计2.1 硬件体系结构设计UDA1314TS和S3C44B0X通过IIS总线传输⾳频数据,控制数据通过UDA1314的L3接⼝传输,但S3C44B0X没有提供标准的L3接⼝,可以通过3个GPIO引脚模拟L3接⼝时序,实现与UDA1314TS的L3接⼝相联。
UDA1314TS芯⽚集成了数字化⾳频和混频器功能,可以播放器数字化声⾳和录制声⾳(常把此类芯⽚称为CODEC编码译码器设备),它可以外接麦克风和扬声器。
由于⾳频数据传输量⼤,数据传输通常采⽤BDMA⽅式。
放⾳系统的过程是:⾳频数据⾸先传输到部缓冲区,然后BDMA控制器将缓冲区的数据通过IIS总线传输给⾳频芯⽚。
⾳频芯⽚经过解码及D/A转换给扬声器。
三星公司的BDMA控制器没有置的存储区域,在驱动程序中必须2.2.1 IIS总线简介S3C44B0X IIS(Intel –IC Sound,置集成电路⾳频总线)接⼝能⽤来连接⼀个外部8/16位⽴体声⾳CODEC。
IIS总线接⼝对FIFO存取提供DMA传输模式代替中断模式,它可以同时发送数据和接收数据,也可以只发送数据。
1.特征(1)⽀持IIS格式与MSB_justified格式,每个通道⽀持16fs,32fs和48fs的穿⾏位时钟频率。
(2)每个通道可以⽀持8位或者16数据格式。
(3) 256fs 和384fs 主时钟(4)时钟和外部CODEC 时钟的可编程的频率分频器。
(5) 32字节的发送和接收FIFO(6)⽀持正常传输模式和DMA 传输模式。
2. IIS 总线结构 ADDR IISDI DATA IISDOONTLBRFC 包括总线接⼝、部寄存器、状态机、控制总线接⼝和FIFO 访问;3位的双向分频器包括⼀个作为IIS 总线的主设备时钟发⽣器,另⼀个作为外部时钟编码器的时钟发⽣器;16字节发送和接收FIFO 完成发送数据写⼊发送FIFO ,接收数据从接收FIFO 中读出功能;主设备串⾏⽐特时钟发⽣器(主设备模块)将从主设备时钟中分频得到串⾏⽐特数时钟;声道发⽣器和状态器⽣成和控制IISCLK 和IISLRCK ,并且控制数据的接收和发送;16位移位寄存器在发送数据时将数据由并变串,接收数据时将数据由串变并。
摘要二十一世纪是信息技术的时代,信息的交流量非常大,这就会使人们在计算机面前工作的时间大大增加,因而增加了人们的负担和压力。
再加上飞快的生活节奏,物质生活的逐步改善,更会给人们带来身心的劳累,人们在这种身体状况下去工作,不但效率不高,而且还很容易犯错,人们对精神层面的需求逐渐增强。
因此人们需要一些娱乐和消遣的软件来减轻压力,消除疲劳,让人们更好的去工作和生活。
由于不满足于仅在家中欣赏电视提供的多媒体,便携的媒体播放器应运而生。
本Mp3播放器就是为了实现这个目的而编写的。
由于嵌入式Linux操作系统功能强大又易于移植。
本次设计的是MP3播放器应用程序,就是一个基于嵌入式开发的一个媒体播放器软件,采用嵌入式ARM9经典开发平台。
关键词:嵌入式系统,Linux,Mp3播放器目录第一章绪论 (1)1.1开发嵌入式MP3播放系统的目的 (1)1.2开发嵌入式MP3播放系统的意义 (1)第二章系统方案及嵌入式LINUX环境的搭建 (2)2.1嵌入式系统方案的设计 (2)2.2嵌入式L INUX环境的搭建 (2)第三章硬件开发平台及其操作系统的构建 (3)3.1开发平台的硬件资源 (4)3.2开发平台的体系结构 (5)3.3开发平台硬件间的工作流程 (6)3.4开发平台操作系统的搭建 (7)3.4.1 U-Boot的编译 (7)3.4.2烧写U-boot (8)3.4.3 内核(kernel)的编译与烧写 (8)3.4.4 根文件系统的制作 (9)第四章系统的硬件设计与软件设计 (12)4.1 硬件设计 (12)4.2 软件设计 (13)第五章MP3播放器的制作与移植 (15)5.1M ADPLAY原理 (15)5.2移植到TX2440开发板上 (15)5.2.1 编译文件 (15)5.2.2移植madplay到TX2440 (16)第六章课程设计总结 (18)致谢 (18)参考文献 (20)第一章绪论1.1 开发嵌入式MP3播放系统的目的二十一世纪是信息技术的时代,信息的交流量非常大,这就会使人们在计算机面前工作的时间大大增加,因而增加了人们的负担和压力。
基于ARM的嵌入式linux系统下的MP3设计的开题报告一、选题背景近年来,随着嵌入式系统的应用越来越广泛,嵌入式linux系统的研发和应用也越来越普遍。
MP3播放器作为嵌入式系统中的一个典型应用,具有体积小、功耗低、功能强大等特点,已经广泛应用于移动设备、家庭娱乐等领域。
本次选题旨在设计一个基于ARM的嵌入式linux系统下的MP3播放器,旨在探究嵌入式系统在音频处理中的应用,以及掌握相关的音频处理技术。
二、选题意义随着数字音频技术的不断发展,数字音频处理也成为嵌入式系统中的一个重要应用领域。
MP3作为一种常见的数字音频格式,具有压缩率高、音质好等特点,其在嵌入式系统中的应用领域广泛。
本次选题以基于ARM的嵌入式linux系统为平台,设计一个MP3播放器,旨在探究音频处理相关技术,并运用到实际的项目中,进一步提升系统开发的技术水平。
三、设计思路本次MP3播放器设计采用基于ARM的嵌入式linux系统,整个设计流程可以分为系统硬件设计和软件设计两部分。
系统硬件部分包括选用适合的ARM芯片、外部存储器、音频解码芯片等。
软件部分则包括linux 系统的移植、音频解码软件的移植以及控制软件编写等。
1、硬件设计在硬件部分,我们需要选择适合的ARM芯片作为系统的核心,选择适合的音频解码芯片进行音频解码,同时需要考虑系统中的外部存储器等。
具体的设计思路如下:(1)选用ARM芯片在本次设计中,我们选用Cortex-A8这一款高性能的ARM芯片作为系统的核心。
该芯片的主要特点是性能高、功耗低,具有很好的应用前景。
(2)选用音频解码芯片在本次设计中,我们选用VS1053这一款流行的音频解码芯片。
该芯片能够实现对MP3、WMA等多种音频格式的解码,同时还具有多种音效功能。
(3)考虑外部存储器为了实现MP3播放功能,我们需要考虑外部的存储器。
在本次设计中,我们可以选用SD卡作为外部存储器,通过SPI协议与系统进行通信。
嵌入式MP3播放器的设计1 系统概述本文采用STM32系列微控制器,结合解码芯片VS1003、SD卡、LCD等外围设备设计并实现了MP3播放器。
其主要功能有:播放VS1003支持的所有音频文件,如MP3、WMA、WAV文件,且音质非常好;通过触摸屏实现按键功能,控制播放上一首/下一首、音量增减等;通过LCD显示歌曲名字和播放状态;本系统还实现了读卡器功能,PC机可通过USB接口直接对开发板上的SD卡进行读写操作,以方便拷贝音频文件。
MP3播放过程是STM32通过SPI1接口将数据从SD卡中取出,然后通过SPI2接口送至解码芯VS1003解码播放。
这里解码模块单独使用一个SPI接口,以减小干扰和噪声、提高音质。
2 系统硬件设计方案本系统在硬件上分为6个模块: 微控制器STM32F103、解码模块VS1003、存储模块SD卡、触摸屏、USB接口和显示屏LCD。
系统硬件框架如图5所示。
VS1003STM32图5 系统硬件框架图2.1 存储模块设计SD卡在现在的日常生活与工作中使用非常广泛,时下已经成为最为通用的数据存储卡。
在诸如MP3、数码相机等设备上也都采用SD卡作为其存储设备。
SD卡之所以得到如此广泛的使用,是因为它价格低廉、存储容量大、使用方便、通用性与安全性强等优点。
SD卡支持两种总线方式: SD方式与SPI方式。
其中SD 方式采用6线制,而SPI方式采用4线制,采用单片机对SD卡进行读写时一般都采用SPI模式。
可用不同的初始化方式使SD卡工作于SD方式或SPI方式。
在本设计中,音频数据MP3文件是以SD卡为载体。
所以在电路设计中必须含有读取SD卡模块。
该系统使用STM32内部接口SPI1与SD卡进行通信,下面介绍其引脚连接情况。
PE3:低电平有效,连接到SD卡的片选引脚CD/DAT3。
SPI在和SD卡进行通信时,需要将PE3拉低才能对SD卡进行操作。
PA7:映射为STM32内部接口SPI1的主输出从输入(MOSI)信号线。
基于单片机的MP3播放器设计随着科技的不断进步,单片机技术的出现为现代电子产品设计带来了巨大的变革。
如今,人们可以借助单片机将各种不同的功能集成到单一的设备中,实现复杂的功能。
MP3播放器是现代生活中常见的电子设备,能够提供高质量的音频播放功能。
本文将探讨如何基于单片机设计一个MP3播放器。
一、硬件设计1、单片机选择:首先需要选择合适的单片机作为主控芯片。
考虑到性能和价格因素,可以选择如STM32单片机作为核心控制器。
2、存储模块:为了存储音频文件,需要使用存储芯片或者SD卡等存储设备。
例如,可以使用SPI接口的EEPROM芯片来存储音频数据。
3、音频解码模块:该模块负责将存储的音频数据转换成模拟信号,然后通过音频放大器驱动耳机播放。
常见的音频解码芯片有炬力2588和炬力2589。
4、显示模块:为了方便用户操作和显示信息,可以选择LCD显示屏作为显示模块。
它可以通过SPI或者并行接口与单片机通信。
5、按键模块:为了实现用户输入功能,可以设计一个按键模块。
它可以通过GPIO接口与单片机通信。
二、软件设计1、系统初始化:在系统上电后,需要先进行系统初始化,包括设置单片机的时钟频率、配置IO口、初始化存储模块、音频解码模块和显示模块等。
2、音频文件读取:通过存储模块读取存储的音频文件数据,然后通过音频解码模块将数据转换成模拟信号,最后通过音频放大器驱动耳机播放。
3、用户操作:通过按键模块实现用户操作,如播放/暂停、上一曲/下一曲、音量调节等。
同时,在显示模块上显示当前播放状态、播放进度等信息。
4、文件管理:可以实现文件浏览、搜索、删除等功能,方便用户管理音频文件。
5、系统测试与调试:在完成硬件和软件设计后,需要进行系统测试和调试,确保系统能够正常工作。
三、注意事项1、在硬件设计过程中,需要考虑电源供电稳定性、信号干扰等问题,避免对音质产生影响。
2、在软件设计过程中,需要考虑程序结构、代码优化等问题,提高程序效率和稳定性。
电子综合课程设计报告基于ARM+linux的MP3播放器一、主要指标和要求:1、能够正常的播放音乐2、能够播放自己随意指定的音乐3、播放的是MP3格式的音乐4、能够实现五秒快进和五秒快退5、能够实现正常退出二、方案选择及工作原理:1、MP3解码原理:MP3文件解码流程对于一个MP3文件的解码,本质上就是循环地对每一个Frame进行解码,直到完成所有Frame的解码,或者中途出现错误而中止。
MP3文件的解码流程如图l所示bj。
而对于每一帧的解码,首先是要获取每一帧的同步字符和帧头信息,从而获得相应的参数,并根据对帧头信息的分析进而得到实际一帧的音频数据;然后读取主要数据并获得缩放因子数据和霍夫曼码字,接着进行霍夫曼解码;其次进行反量化,并根据帧头的立体声信息对反量化结果进行立体声处理;最后通过混迭处理、IMDCT和合成滤波器重建数字音频信号的解码,生成PCM数据。
然后将PCM数据写入声卡设备,即可实现音频文件的播放。
2 、MP3播放原理:在linux内核中有已经做好了的声卡驱动程序,所以当我们加载声卡驱动后我们就会在文件系统的/dev/下看到/dev/dsp 这个声卡文件,根据文件的特性我们只要把我们的解码后的音乐文件不断地读出并写入声卡文件即可实现正常的声音播放,其中我们读文件用read()这个系统调用函数写文件用write()这系统调用,用ioctl()控制声卡文件的某些参数。
3、实现快进、快退的方案:a:循环读写文件之前创建一个子进程,这个子进程专门负责循环检测getchar()中输入的字符,根据不同的字符做出不同的反应,比如快进、快退、正常退出等,这个方案优点是思路明了,便于接受,但其缺点是进程是属于强占式的不利于进程的执行。
b:在循环读写文件之前,编写一个函数mode(),用来把程序由阻塞同步变为异步模式,这样只要在循环读写中加入getchar()就不会阻塞进程了,该方法实现简单,使程序执行也更合理。
基于ARM的多通道专业MP3播放器设计1 引言随着微电子技术的飞速发展,嵌入式产品以其自然的人机交互界面和丰富的多媒体处理能力迅速得以推广,并取得了巨大成功[1].目前,在多媒体音频领域中,MP3 播放器占据了绝对的主导地位。
但现有的MP3 播放器驱动能力非常有限,只适合个人使用,不能满足大型公共场所在不同区域播放不同背景音乐的多通道播放需要。
基于以上分析,本文设计了一种基于S3C44B0X 芯片的μClinux 环境下的多通道专业MP3 播放器。
2 系统功能分析与结构设计多通道专业MP3 播放器是专为满足公共语音广播市场的需求而设计的,其主要功能包括:(1)音频解码和播放功能;(2)通过USB 接口与大容量外部存储设备进行数据传输;(3)操作界面统一管理功能;(4)多通道播放功能。
为了提高系统运行效率,实现多通道播放管理,本系统选用三星公司的S3C44B0X 作为核心处理器,主要负责数据转换,输出通道的选择,以及LCD 的控制。
同时,选用意法半导体的STA013 作为解码芯片,配合AK4393 实现模拟音频信号的输出,此外,使用SL811HS 和ISP1520 提供两个主USB 接口,以实现移动硬盘或U 盘的挂接。
其系统总体结构如3 系统硬件设计作为一种典型的嵌入式系统,其开发的优点在于软硬件的可裁剪性[2],在确保有一个稳定的最小系统以后,再对外围的设备进行扩展。
此多通道专业MP3 播放器的核心芯片S3C44B0X 是基于ARM7 而开发的多功能SOC(Signal Operation Control)。
S3C44B0X 除具备一般嵌入式芯片所具有的总线、SDRAM。
嵌入式MP3播放器的设计1 系统概述本文采用STM32系列微控制器,结合解码芯片VS1003、SD卡、LCD等外围设备设计并实现了MP3播放器。
其主要功能有:播放VS1003支持的所有音频文件,如MP3、WMA、WAV文件,且音质非常好;通过触摸屏实现按键功能,控制播放上一首/下一首、音量增减等;通过LCD显示歌曲名字和播放状态;本系统还实现了读卡器功能,PC机可通过USB接口直接对开发板上的SD卡进行读写操作,以方便拷贝音频文件。
MP3播放过程是STM32通过SPI1接口将数据从SD卡中取出,然后通过SPI2接口送至解码芯VS1003解码播放。
这里解码模块单独使用一个SPI接口,以减小干扰和噪声、提高音质。
2 系统硬件设计方案本系统在硬件上分为6个模块: 微控制器STM32F103、解码模块VS1003、存储模块SD卡、触摸屏、USB接口和显示屏LCD。
系统硬件框架如图5所示。
VS1003STM32图5 系统硬件框架图2.1 存储模块设计SD卡在现在的日常生活与工作中使用非常广泛,时下已经成为最为通用的数据存储卡。
在诸如MP3、数码相机等设备上也都采用SD卡作为其存储设备。
SD卡之所以得到如此广泛的使用,是因为它价格低廉、存储容量大、使用方便、通用性与安全性强等优点。
SD卡支持两种总线方式: SD方式与SPI方式。
其中SD 方式采用6线制,而SPI方式采用4线制,采用单片机对SD卡进行读写时一般都采用SPI模式。
可用不同的初始化方式使SD卡工作于SD方式或SPI方式。
在本设计中,音频数据MP3文件是以SD卡为载体。
所以在电路设计中必须含有读取SD卡模块。
该系统使用STM32内部接口SPI1与SD卡进行通信,下面介绍其引脚连接情况。
PE3:低电平有效,连接到SD卡的片选引脚CD/DAT3。
SPI在和SD卡进行通信时,需要将PE3拉低才能对SD卡进行操作。
PA7:映射为STM32内部接口SPI1的主输出从输入(MOSI)信号线。
这里STM32是主设备,SD卡是设备。
数据流的传输方向是从STM32传输给SD卡。
该信号线用于传输一些控制命令来完成SD卡的操作,如读、写等。
PA5: 已连接到STM32内部接口SPI1的时钟(SCL K)信号线。
可设置SPI的时钟频率来调整读取SD卡数据的快慢。
PA6:已连接到STM32内部接口SPI1的主输入从输出(MISO)信号线。
数据的传输方向是从SD卡传输给STM32,主要返回SD卡的一些状态、内部寄存器值等。
PC12 :用于检测SD卡是否完全插入。
当SD卡完全插入时,PC12为低电平,否则为高电平。
2.2 音频解码模块设计音频解码模块完成MCU从SD卡里读取的数字MP3音频数据流进行解析、并转化成模拟信号进行输出。
在这里,系统使用VS1003音频解码芯片来实现音乐数据流的解析。
VS1003是由芬兰VLSI公司出品的一款单芯片的MP3/WMA音频解码芯片,其拥有一个高性能低功耗的DSP处理器核VS_DSP,5K的指令ROM,0.5K的数据RAM,串行的控制和数据输入接口,4个通用I/O口,一个UART口,同时片内带有一个可变采样速率的ADC、一个立体声DAC以及音频耳机放大器接口。
VS1003与核心控制器MSP430F149的数据通信是通过SPI总线方式进行的。
VS1003主要通过串行命令接口(SCI)和串行数据接口(SDI)来接收MSP430F149控制器的控制命令和MP3的数据。
通过XCS、XDCS引脚的置高、置低来确认是哪一个接口处于传送状态。
对于VS1003芯片的功能控制,如初始化、软复位、暂停、音量控制、播放时间的读取等,均是通过SCI写入到特定寄存器的内容来实现的。
两条SCI指令之间要通过DREQ引脚信号判断上次处理是否完成。
该系统使用STM32内部接口SPI2 与VS1003 进行通信,下面介绍其引脚连接情况。
PA3 :VS1003 的中断请求引脚。
当VS1003 内部数据已处理完毕,需要新的数据时,将DREQ拉高。
STM32根据这个信号来给VS1003 发送新的数据流。
PB13 : 已连接到STM32内部接口SPI2 的时钟(SCL K)信号线。
PB14 :已连接到STM32内部接口SPI2 的主输入从输出(MISO)信号线。
这里STM32是主设备,VS1003是从设备。
数据流的传输方向是从VS1003 传输给STM32。
主要用于读取VS1003的一些状态和内部寄存器值,比如寄存器测试返回的内部寄存器的值。
PB15:已连接到STM32内部接口SPI2的主输出从输入(MOSI)信号线。
这里STM32是主设备,VS1003是从设备。
数据流方向是从STM32传输给VS1003,主要传输给VS1003一些控制命令、MP3/ WMA 数据流等。
PA1:低电平有效,如果拉低该引脚,那么通过SPI 传输的是控制信号。
控制信号包括读写VS1003的内部寄存器、对VS1003进行初始化、设置左右声道音量等。
PA2:低电平有效,如果拉低该引脚,那么通过SPI 传输的是数据信号。
比如在向VS1003 传输MP3/ WMA 的数据流时需要拉低该引脚。
PA0 :低电平有效,拉低该引脚则硬件复位VS1003。
2.3 液晶显示模块设计LCD3310芯片是一个48行84列的液晶显示器主要模块。
其内存带有低功耗PCD8544的CMOSLCD控制驱动器,串行输入速度最高可达4. 0Mbits/S,而且所有必须的显示功能集成在一块芯片上,包括LCD电压及偏置电压发生器,所以LCD3310是一款低功耗的液晶显示器。
为了让LCD3310液晶能够显示4行12* 12的汉字,系统开辟了一个6* 84字节的缓冲区,要写液晶时,就不用直接写LCD3310的静态DDRAM了,可以先写系统为它开辟的数据缓冲区,最后再刷新修改的部分就可以显示出要显示的内容,LCD3310与主控制器是SPI接口方式。
3 系统软件设计方案3.1 MP3播放器软件系统流程原理系统启动后,先初始化硬件模块。
由MCU通过FAT32文件系统接口读取SD 卡的一些基本信息,如容量、扇区大小、FAT表及根目录所在的启始扇区等。
通过获得这些信息后,就可以找出SD卡是否有我们可以播放的音乐文件。
若有音乐文件,微处理器将通过SPI总线方式读出该文件的音频信息,并将歌曲的码流信息送入到VS1003芯片中,通过VS1003芯片解码以及其内含的高质量的立体DAC和耳机驱动电路,实现MP3歌曲的播放功能。
在触摸键的控制下,通过LCD3310中菜单选项的选择,实现对歌曲选择及音量控制等功能;在播放的同时,LCD3310上显示的信息除歌曲名称信息外,还包括进度和音量等信息。
由于SPI1 读取SD卡文件的速度远超过VS1003播放数据流的速度,因此VS1003 在播放来自SPI2的数据流期间,SPI1能从SD 卡中读取下次播放所需的数据,不会产生声音不连续的情况。
由于使用了2 个SPI接口,相互之间无干扰,且提高了文件系统的效率,因此本系统能得到非常高品质的音乐。
如图6是MP3播放器的软件系统流程图。
下面介绍软件的核心模块。
(1)SD模块SD模块主要提供SD 卡驱动以及对FAT 文件系统操作的函数,FAT 文件系统支持长文件名。
该模块主要含有2个文件msd.c和fat16.c 。
下面分别介绍其主要函数的功能。
(1)msd.c该文件用于提供SD 卡的驱动,主要包括以下函数。
SPI_ Config : 配置与SD 卡相连接的SPI1 及相关GPIO。
MSD_Init :初始化SD 卡通信。
Get_Medium_Characteristics :获取SD 卡的容量和块大小等相关信息。
MSD_GoIdleState :令SD 卡处于空闲态。
MSD_SendCmd :向SD 卡发送命令。
MSD_GetResponse :从SD 卡获取响应。
MSD_GetStatus :获取SD 卡的状态。
MSD_WriteBlock :向SD 卡写入1 个块的数据。
MSD_ReadBlock :从SD 卡读取1 个块的数据。
以下是函数MSD_ReadBlock 的实现:u8 MSD_ ReadBlock ( u8 * pBuffer ,u32 ReadAddr ,u16 NumByte ToRead) { u32 i = 0 ;u8 rvalue = MSD_RESPONSE_FAILURE;MSD_CS_LOW() ; / / 拉低片选信号,选中SD 卡MSD_SendCmd (MSD_READ_ SIN GL E_BLOCK,ReadAddr ,0xFF) ; / / 发送读取块命令/ / 检测SD 卡是否有返回信息,若是则返回0x00if ( !MSD_GetResponse (MSD_RESPONSE_NO_ERROR) ) {if ( !MSD_ GetResponse (MSD_ START_DA TA_ SIN GL E_ BLOCK_READ) ) { / / 等待数据令牌,标志数据传输开始for (i = 0 ; i < NumByte ToRead ; i + + ) { / / 读取数据* pBuffer = MSD_ReadByte() ; / / 缓存收到的数据图6 软件系统流程图pBuffer + + ; / / 缓存指针后移}rvalue = MSD_RESPONSE_NO_ERROR ;/ / 修改rvalue 的值为成功}}MSD_CS_HIGH() ; / / 拉高片选信号,禁用SD 卡MSD_WriteByte(DUMMY) ; / / 写无效字节,传输结束return rvalue ; / / 返回}(2)fat16. c该文件提供对FAT16 文件系统的支持,主要包含以下函数。
ReadMBR :读取MBR 数据结构。
ReadBPB :读取BPB 数据结构。
ReadFAT :读取文件分配表指定项。
ReadBlock :读取SD 卡的一个扇区。
FAT_Init :获取FAT16 文件系统的基本信息。
DirStartSec :获取根目录的开始扇区号。
DataStartSec :获取数据区的开始扇区号。
ClusConvLBA :获取一个簇的开始扇区号。
LBAConvClus :转换扇区号与簇号之间的关系。
Get FileName :获取指定文件的首扇区号。
ListDate Time :列出文件或子目录创建的时间日期。
SearchFoler :在指定范围内查找文件或子目录。
ListDir :列出指定范围内的文件或子目录及相关信息。
FAT_FileOpen :打开指定文件。
FAT_FileRead :读取文件数据。