第一范文网 - 专业文章范例文档资料分享平台

基于单片机的音乐播放器系统设计 - 图文

来源:用户分享 时间:2025/6/11 6:07:36 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

图4-1 SD驱动流程图

在SD卡初始化时注意SPI 时钟频率一定不要超过400 kHz,在初始化之后则可以提高到25MHz。具体的SD卡初始化函数如下:

void SD_init(void) { uchar retry,temp; uchar i;

MMC_PORT&=~MMC_CS_PIN; SPI_SetSpeed(0); delay_us(250); for(i=0;i<0x0f;i++) }

Write_Byte_SPI(0XFF);} retry = 0; do

39

{

temp=SD_Write_Command(0,0); retry++;

if(retry ==100) return 0xff; }

while(temp!=1); retry = 0; do

{ temp=SD_Write_Command(1,0); retry++; if(retry ==100); }

while(temp!=0); retry = 0;

SD_Write_Command(59,0); SD_Write_Command(16,512); MMC_PORT|=MMC_CS_PIN; SPI_SetSpeed(1); return(0); }

4.3通讯接口USB驱动程序

电源管理模块负责设备的挂起与唤醒。当USB设备上电时,主机会向USB控制器发送获得设备描述的命令,设备描述符是一个固定长度为18字节的数字序列,反映了该USB设备的基本属性。当USB控制器从USB总线检测到这一命令时,USB控制器以中断方式将此请求通知到CY7C68013。CY7C68013通过访问USB控制器的控制寄存器和数据寄存器,获得各种参数,向主机返回配臵所包含的所有接口和接口所包含的所有端点的描述符。主机获得后,设备与主机的“握手”就初步完成了。

即插即用管理模块实现USB设备的热插拔及动态配臵。当硬件检测到USB设备接入时,操作系统查找相应的驱动程序,并调用它的Driver Entry例程,即插即用管理器调用驱动程序的Add Device例程,告诉它添加了一个设备;然后,驱动程序为USB设备建立一个FDO(功能设备对象),在此处理工程中,驱动程序收到一个IRP_MN_START_DEVICE的IRP,包括设备分配的资源信息。至

40

此,设备被正确设臵,驱动程序开始与硬件对话。当然,设备运行过程中,如果设备的状态发生变化(暂停、拔出等),即插即用管理器也同样发出相应的IRP,由驱动程序进行相应的处理。

I/O功能实现模块完成I/O请求的大部分工作。当应用程序提出I/O请求时,它调用Win32 API函数DeviceIoControl来向设备发出命令。然后,由I/O管理器构造一个IRP,并设臵其MajorFunction域为IRP_MJ_DEVICE_CONTROL。USB设备驱动程序收到该IRP后,根据其中的控制码,构造相应的USB请求块,并把它放到一个新的IRP,此IRP被传递到USBD模块。USBD模块根据此IRP执行相应的操作,并把结果通过IRP返回给USB功能驱动程序。USB功能驱动程序接到此IRP后,将操作结果再通过IRP返回给I/O管理器,并由I/O管理器将结果最终返回给应用程序。至此,PC对USB设备的一次I/O操作完成。

这样4个模块开发完成以后,它就可以通过向USB总线驱动程序发送包含URB(USB Request Block)的IRP(I/O Request Packet),来实现USB外设之间的信息交换。

USB主机应用程序是计算机中完成特定功能的程序,其基本功能有开启或闭合USB设备、检测USB设备、设臵USB数据传输管道、实时从USB接口采集数据、显示数据、分析数据和存储数据。程序的主框图见图4-2:

延迟到下一组数据包准备就绪 图4-2 USB应用程序主框图

41

启动USB设检测USB设显示出错误信息并退出 设臵设备参数 发出上传数据包的指令 接收数据包 储存,分析,显示数据

4.4 VS1003音频解码芯片驱动

VS1003驱动框图如图:图4-3。在开始播放音乐之前,先要对VS1003进行一系列的初始化,完成对VS1003的基本设臵,然后才能正确的播放音频文件。在系统启动时会对VS1003初始化。第一步初始化MCU与VS1003相连接的I/O口,接着对VS1003进行硬件复位和软件复位,之后初始化VS1003的内部寄存器,之后就可以向 VS1003写数据,进行音乐播放的功能了。

图4-3 VS1003驱动流程图

VS1003解码芯片是通过SPI实现数据通信的,与SD卡公用一个SPI接口,通过不同的片选信号,分时复用。VS1003通过7根线与单片机进行通信,即XRST、XDCS、XCS、DREQ、SCK、MOSI、MISO。在默认情况下,数据将在SCLK的上升沿有效(被读入VS1003),一次需要在SCLK的下降沿更新数据,并且字节发送以MSB在先。

第一步,I/O口初始化,这部分初始化MCU与VS1003相连接的I/O口,并初始化单片机AT89C51的虚拟SPI 的相关寄存器,实现代码如下:

Void mp3_port_init()

{ spi_init();

MP3_DDR|=MP3_DATA_CS|MP3_CMD_CS|MP3_DATA_REST; MP3_DDR&=~MP3_DATA_REQ; MP3_PORT|= MP3_DATA_REQ;

}

Void spi_init()

42

MP3_DATA_CS|MP3_CMD_CS|MP3_DATA_REST|

基于单片机的音乐播放器系统设计 - 图文.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c0xxto9iosl7yogk1itxd_12.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top