基于STM32的MP3播放器设计.doc_第1页
基于STM32的MP3播放器设计.doc_第2页
基于STM32的MP3播放器设计.doc_第3页
基于STM32的MP3播放器设计.doc_第4页
基于STM32的MP3播放器设计.doc_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

中北大学中北大学 课课 程程 设设 计计 说说 明明 书书 学生姓名学生姓名 贺彦兴 学学 号 号 1106044224 学学 院院 仪器与电子学院 专专 业业 电子科学与技术 题题 目目 基于 STM32 的 MP3 播放器设计 指导教师 指导教师 李锦明 职称职称 副教授 2015 年 1 月 30 日 摘要摘要 MP3 是一种高质量音乐压缩标准 采用 MP3 压缩的数据量可以缩小到 1 12 音质却没有多少损失 由于 MP3 音乐的较小数据量和高质量的播放效果 使它 很快成为一种集音频播放 数据存储为一身的数码产品 并深受人们的喜爱 本文采用 STM32 系列微控制器 结合解码芯片 VS1003 SD 卡 LCD 等外围 设备设计并实现了 MP3 播放器 其主要功能有 播放 VS1003 支持的所有音频 文件 如 MP3 WMA WAV 文件 且音质非常好 通过摇杆控制播放上一首 下一首 通过电位计来控制音量增减 通过 LCD 显示音量图标和播放状态等 本系统还计划实现读卡器功能 PC 机可通过 USB 接口直接对开发板上的 SD 卡进行读写操作 以方便拷贝音频文件 关键字关键字 MP3 播放器 CortexM3 STM32 VS1003 ABSTRACT Is a high quality MP3 music compression standard with MP3 compressed data can be reduced to 1 12 but there is little loss of sound quality MP3 music as the smaller amount of data and high quality playback it will soon become a set of audio playback the data is stored as a digital product and very popular In this paper STM32 family of microcontrollers combined with decoder chip VS1003 SD card LCD and other peripherals design and implementation of MP3 players Its main functions are Play VS1003 supports all audio files such as MP3 WMA WAV files and the sound quality is very good through the joystick control playback on a to the next through a potentiometer to control volume change through the LCD show the volume icon and play status etc The system also plans to achieve reader function PC machine interfaces via USB directly to the development board of the SD card read and write operations to facilitate the copying audio files Key words MP3 Players CortexM3 STM32 VS1003 目录目录 第一章 绪论 1 1 1 选题背景与现状 1 1 2 设计和研究方向 1 第二章 系统概述与硬件电路设计 2 2 1 系统的总体构架 2 2 2 电源模块 2 2 3 微控制器模块 3 2 3 1 CortexM3 3 2 3 2 STM32F103 4 2 5 VS1003 音频模块 4 2 5 1 VS1003 概述 5 2 5 2 VS1003 解码电路设计 7 2 4 SD 卡 7 2 4 1 SD 卡概述 7 2 4 2 FAT16 文件系统 8 2 4 3 SD 卡驱动电路 9 2 5 液晶显示器 9 2 5 1 液晶显示原理 9 2 5 2 液晶显示模块 10 第三章 系统软件设计 10 3 1 软件设计总流程 10 3 2 底层驱动程序设计 11 3 2 1 VS1003 驱动设计 11 3 2 2 SD 卡读取驱动 12 3 2 3 RTC 时钟驱动 14 3 2 4 液晶显示设计 14 3 3 功能模块的设计 15 3 3 1 音乐播放功能的设计 15 3 3 2 USB 读卡器 16 第四章 结论 17 结束语 18 参考文献 19 附件 20 第一章第一章 绪论绪论 1 1 选题背景与现状选题背景与现状 二十一世纪的第一个十年过去了 随着电子技术的高速发展和嵌入式系统 的应用 越来越多的电子产品进入人们的视野 面对多形式 多渠道的信息 人们对信息的整合运用与随时调整的要求越来越高 消费电子无疑将潜移默化 地改变人们的生活 目前 消费电子产业每年都持续增长 所涉及的产品领域 和行业也越来越多 丰富的电子产品正从各个角度向消费者展示着 数字生活 的新概念 给人们带来了耳目一新的全面享受 随着数字声音作为一种存储 处理和传输高保真声音的方法在消费电子等 领域的广泛应用 与之相关的数字音频压缩技术也得到了充分的发展 MP3 音 乐格式的出现和 Internet 的日益普及更是将数字音乐推向了高潮 MP3 压缩音 乐的方式是通过一个运算法则 去掉声音中高频与低频的部分 大幅删减不必 要的容量浪费 同时保留了人类所能感受到的音频部分 因此其好处在于大幅 降低了数字声音文件的容量 而不会破坏原来的音质 音质越低的声音在 MP3 的运算法则下可以得到越高的压缩比 低数据量和高播放品质的优点使其成为 音乐存储 数字广播 网上音乐传输的主要方式 人们不仅可以使用计算机软 件 还可以通过数字随身听来欣赏音乐 自从 1998 年世界上第一台 MP3 播放器 1 推出以来 MP3 播放器市场以极 快的速度发展 MP3 的功能也越来越多 国产品牌的 MP3 播放器也进入市场 当中 以纽曼 蓝魔 魅族等企业为代表的 MP3 播放器企业占据了国内 MP3 播放器市场主要份额 1 2 设计和研究方向设计和研究方向 STM32 系列微控制器采用 ARM 公司最新的 CortexM3 内核 VS1003 音频 解码芯片为 VS10 xx 系列的第三代产品 是芬兰 VLSI Solution 公司生产的单 片 MP3 WMA MIDI 解码和 ADPCM 编码芯片 本文采用 STM32 系列微控制器 结合解码芯片 VS1003 SD 卡 LCD 等 外围设备设计并实现了 MP3 播放器 其主要功能有 播放 VS1003 支持的所有 音频文件 如 MP3 WMA WAV 文件 且音质非常好 通过按键控制播放上 一首 下一首 音量增减等 通过 LCD 显示音量图标和播放状态 本系统还计 划实现读卡器功能 PC 机可通过 USB 接口直接对开发板上的 SD 卡进行读写 操作 以方便拷贝音频文件 第二章第二章 系统概述与硬件电路设计系统概述与硬件电路设计 2 1 系统的总体构架系统的总体构架 本系统采用 STM32 作为微控制器 VS1003 作为解码芯片 采用 SD 卡存 储 MP3 WMA 文件 LCD 作为显示器件 最终完成 MP3 的播放设计 同时 PC 机可以通过 USB 接口操作开发板上 SD 卡中的文件 也可以通过串口通信控制 音乐播放 具体方案图如图 3 4 所示 图 2 1 总体设计方案框图 MP3 播放功能模块的工作分为两个部分 第一部分是循环播放 MP3 歌曲 该功能需要首先做一些初始化工作 MP3 解码器一旦开始工作 就会一直向 CPU 请求数据 直至歌曲结束 只有通过键 盘操作才会使该功能提前结束 因为 MP3 文件的数据量较大 在 flash 存储器 内是以页为单位进行存储的 所以 MP3 的播放程序初始化就是要把该文件的首 地址和页数先读出到 CPU 中 然后 CPU 可以根据如上数据进行取数据工作 第二部分则一直在等待中断发生 该程序是与键盘结合起来的 主要用于 使用者对播放过程的控制 键盘操作对 MP3 播放过程的控制还包括后退 跃进 跳到下一首 音量控制等 因为整个播放过程的键盘控制功能比较单一 没有 键的复合操作 所以程序都很容易实现 当 MP3 播放器插入到 USB 接口时 系统执行 USB 通讯功能模块 该模块主要用于对 flash 存储器内的文件数据进 行管理 2 2 电源模块电源模块 电源是电子设备中必不可少的一部分 它为设备提供了能量 电源模块电 路如图 2 2 所示 本系统有以下几种电源 CPU 的内核数字和模拟电源电压 1 8 V CPU 的 I O 口数字和模拟电源电压 3 3 V 总线的隔离电源 LCD 的 驱动电源 LCD 的背光逆变电源 其他外围设备电源电压 5 V 等电源 5V 电 源适配器经过 AMS1117 3 3 和 AMS1117 2 5 产生 3 3V 和 2 5V 的直流电源供系 统使用 图 2 2 电源电路 2 3 微控制器模块微控制器模块 2 3 1 CortexM3 CortexM3 是 ARM 公司最新推出的基于 ARMv7 体系架构的处理器核 具 有高性能 低成本 低功耗的特点 专门为嵌入式应用领域设计 ARMv7 架构采用了 Thumb2 技术 它是在 ARM 的 Thumb 代码压缩技术 的基础上发展起来的 并且保持了对现存 ARM 解决方案完整的代码兼容性 3 Thumb2 技术比纯 ARM 代码少使用 31 的内存 减小了系统开销 同时能够 提供比 Thumb 技术高出 38 的性能 在中断处理方面 CortexM3 集成了嵌套向量中断控制器 NVIC Nested Vectored Interrupt Controller NVIC 是 CortexM3 处理器的一个紧耦合部分 可 以配置 1 240 个带有 256 个优先级 8 级抢占优先权的物理中断 为处理器提 供出色的异常处理能力 同时 抢占 Pre emption 尾链 Tail chaining 迟到技术 Late arriving 的使用 大大缩短了异常事件的响应时间 CortexM3 异常处理过程中由硬件自动保存和恢复处理器状态 进一步缩短了中 断响应时间 降低了软件设计的复杂性 CortexM3 体系架构提出了新的单线调 试技术 CortexM3 处理器的跟踪调试是通过调试访问端口 Debug Access Port DAP 来实现的 DAP 端口可以作为串行线调试端口 SWDP 或串行 JTAG 调试端口 SWJDP 允许 JTAG 或 SW 协议 使用 其中 SWDP 只需要 时钟和数据 2 个引脚 实现低成本跟踪调试 避免使用多引脚进行 JTAG 调试 并全面支持 RealView 编译器和 RealView 调试产品 此外 CortexM3 还具备高 度集成化的特点 大大减小了芯片面积 内部集成了许多紧耦合系统外设 合 理利用了芯片空间 使系统满足下一代产品的控制需求 2 3 2 STM32F103 本设计中的微控制器采用意法半导体公司出产的 STM32F103VBT6 4 芯片 STM32F103VBT6 增强型系列使用高性能的 ARM Cortex M3 32 位的 RISC 内核 工作频率为 72MHz 内置高速存储器 高达 128K 字节的闪存和 20K 字节的 SRAM 丰富的增强 I O 端口和联接到两条 APB 总线的外设 所有型号的器件 都包含 2 个 12 位的 ADC 3 个通用 16 位定时器和一个 PWM 定时器 还包含 标准和先进的通信接口 多达 2 个 I2C 和 SPI 3 个 USART 一个 USB 和一个 CAN STM32F103VBT6 增强型系列工作于 40 C 至 105 C 的温度范围 供电电 压 2 0V 至 3 6V 一系列的省电模式保证低功耗应用的要求 是一款性价比很 高的 32 位 ARM 处理器 是低成本 ARM 嵌入式应用的极佳选择 其引脚分布如图 2 3 所示 图 2 3 STM32 引脚图 2 5 VS1003 音频模块音频模块 虽然 STM32F103RBT6 具有最高 72MHz 的频率 但它没有独立的 DSP 音效处 理能力 如果直接用它来进行音频数据处理 很难实现优质的音频输出 同时 考虑到自己的能力和精力有限 因而本系统的音频解码部分则另采用一款简单 实用的音效处理芯片 VS1003 10 来完成 本模块涉及到模拟信号与数字信号 在设计时要考虑信号的隔离措施 模拟信号与数字信号的连接处需串联磁珠或 0 欧电阻以避免信号干扰 2 5 1 VS1003 概述概述 VS1003 是一个单片 MP3 WMA MIDI 音频解码器和 ADPCM 编码器 它包 含一个高性能 自主产权的低功耗 DSP 处理器核 VS DSP4 一个工作数据存 储器 为用户应用提供 5KB 的指令 RAM 和 0 5KB 的数据 RAM 串行的控制 和数据接口 4 个常规用途的 I O 口 一个 UART 也有一个高品质可变采样率 的 ADC 和立体声 DAC 还有一个耳机放大器和地线缓冲器 VS1003 通过一个串行接口来接收输入的比特流 它可以作为一个系统的从 机 输入的比特流被解码 然后通过一个数字音量控制器到达一个 18 位过采样 多位 DAC 通过串行总线控制解码器 除了基本的解码 在用户 RAM 中它还 可以作其他特殊应用 例如 DSP 音效处理 VS1003 的内部结构及引脚如图 2 4 所示 图 2 4 VS1003 内部结构及引脚图 具体特性如下 能解码 MPEG 1 和 MPEG2 音频层 III CBR VBR ABR WMA 4 0 4 1 7 8 9 5 384kbps 所有流文件 WAV PCM IMAAD PCM 产生 MIDI SP MIDI 文件 对话筒输入或线路输入的音频信号进行 IMAADPCM 编码 支持 MP3 和 WAV 流 高低音控制 单时钟操作 12 13MHz 内部 PLL 锁相环时钟倍频器 低功耗 内含高性能片上立体声数模转换器 两声道间无相位差 内含能驱动 30 欧负载的耳机驱动器 模拟 数字 I O 单独供电 为用户代码和数据准备的 5 5KB 片上 RAM 串行的控制 数据接口 可被用作微处理器的从机 特殊应用的 SPI Flash 引导 供调试用途的 UART 接口 新功能可以通过软件和 4 GPIO 添加 引脚功能说明如图 2 4 所列 图 2 5 VS1003 引脚功能表 2 5 2 VS1003 解码电路设计解码电路设计 在设计 VS1003 解码电路时 数字地与模拟地必须相互连接并尽量靠近 VS1003 以避免锁存上拉 为了能播放 48KHz 采样率的音频文件 输入时钟使 用 12 288MHz 具体设计电路如图 2 12 所示 VS1003 通过 MISO MOSI SCK SPI 接口 来接收输入的 MP3 数据 经过 VS1003 内置的采样 DAC 转换为音频模拟量 最后通过 Left Right 输出 图 2 6 音频解码电路 2 4 SD 卡卡 2 4 1 SD 卡概述卡概述 SD 卡 Secure Digital Memory Card 是一种为满足安全性 容量 性能和 使用环境等各方面的需求而设计的一种新型存储器件 SD 卡允许在两种模式下 工作 即 SD 模式和 SPI 模式 本系统采用 SPI 模式 本小节仅简要介绍在 SPI 模式下 STM32 处理器如何读写 SD 卡 如果读者如希望详细了解 SD 卡 可 以参考相关资料 SD 卡内部结构及引脚如图 2 7 所示 图 2 7 SD 卡内部结构及引脚 SD 卡主要引脚和功能为 CLK 时钟信号 每个时钟周期传输一个命令或数据位 频率可在 0 25MHz 之间变化 SD 卡的总线管理器可以不受任何限制的自由产生 0 25MHz 的频率 CMD 双向命令和回复线 命令是一次主机到从卡操作的开始 命令可以 是从主机到单卡寻址 也可以是到所有卡 回复是对之前命令的回答 回复可 以来自单卡或所有卡 DAT0 3 数据线 数据可以从卡传向主机也可以从主机传向卡 SD 卡以命令形式来控制 SD 卡的读写等操作 可根据命令对多块或单块进行读 写操作 在 SPI 模式下其命令由 6 个字节构成 其中高位在前 2 4 2 FAT16 文件系统文件系统 SD 卡如果采用 FAT16 文件格式 按照其不同的特点和作用大致可分为 5 部分 MBR 区 DBR 区 FAT 区 FDT 区和 DATA 区 由于 SD 卡一般不做 引导盘 一般也不分区 因此通常无 MBR 区 直接从 DBR 区开始 下面对后 面四个区分别作简介 DBR 区区 内容为系统引导记录 它包括一个引导程序和一个被称为 BPB Bios Parameter Block 的本分区参数记录表 引导程序的主要任务是当 MBR 将系统 控制权交给它时 判断本分区根目录是否有操作系统引导文件 如果有则将其 读入内存 并把控制权交给该文件 BPB 参数块记录着本分区的起始扇区 结 束扇区 文件存储格式 根目录大小 FAT 个数 分配单元大小等重要参数 FAT 区区 该区内容为文件分配表 FAT16 文件系统进行空间分配的最基本单位是簇 文件分配表反映了 SD 卡所有簇的使用情况 通过查文件分配表可以得知任一 簇的使用情况 对于 FAT16 来说 FAT 表每项占用两个字节 FAT 表的第一 项通常为 FFF8H 对于其它项 若其值为 0000H 表示可用 FFF7H 表示为坏簇 FFF8H FFFFH 之间表示该簇为某文件或目录的最后一个簇 FFF0H FFF6H 之 间为保留值 其它值则指示下一个簇的簇号 FDT 区区 该区的内容为文件目录表 FAT 文件系统的一个重要思想是把目录 文件 夹 当作一个特殊的文件来处理 FAT32 甚至将根目录当作文件处理 FAT 分 区中所有目录文件 实际上可以看作是一个存放其它文件 文件夹 入口参数 的数据表 因此 目录占用空间的大小并不等同于其下所有数据的大小 但也 不等于 0 通常是占很小的空间 其具体的存储原理是 不管目录文件所占空 间为多少簇 一簇为多少扇区 多少字节 系统都会以 32 个字节为单位 进行 目录文件所占簇的分配 DATA 区区 该数据区存放文件的内容 SD 卡所占用的空间绝大部分为此部分 如果文 件长度大于一个簇的大小 需要多个簇存放该文件 这些放通过 FAT 链表串连 起来 2 4 3 SD 卡驱动电路卡驱动电路 使用 SPI 总线与 STM32 处理器连接 如图 2 8 所示 图 2 8 SD 连接器与 STM32 处理器 SPI 连接图 2 5 液晶显示器液晶显示器 2 5 1 液晶显示原理液晶显示原理 1602 液晶模块内部的字符发生存储器 CGROM 已经存储了 160 个不同的 点阵字符图形 如表 1 所示 这些字符有 阿拉伯数字 英文字母的大小写 常用的符号 和日文假名等 每一个字符都有一个固定的代码 图 2 9 LCD1602 字符表 2 5 2 液晶显示模块液晶显示模块 LCD 液晶显示模块主要完成数据显示 输出数据与显示数据的同步等功能 可为使用者提供曲目信息 前期为了简化电路的设计 以及充分利用开发板资 源 此次系统显示模块设计采用 STM32V100 开发板有自带的 LCD 液晶屏 如 果时间允许 我将对支持汉字液晶屏进行研究以用于显示歌词 音量等 LCD 液晶屏硬件电路如图 2 10 所示 图 2 10 LCD1602 硬件电路图 第三章第三章 系统软件设计系统软件设计 3 1 软件设计总流程软件设计总流程 本系统在软件设计上主要包括 2 部分 底层驱动的设计和各功能模块的设 计 软件设计平台使用 RealView MDK 13 各个功能的选择菜单仿照手机九空格的操作界面 实现多各个功能之间的 选择与切换 系统软件设计的总体流程图 3 1 所示 系统上电 检测系统硬件及文件 音乐播放 系统设置 USB读卡器 加载功能选择菜单 图 3 1 系统软件总流程 3 2 底层驱动程序设计底层驱动程序设计 3 2 1 VS1003 驱动设计驱动设计 要让 VS1003 实现音乐播放功能 首先要实现写命令功能 然后通过写命 令操作初始化 VS1003 完成以上步骤之后 就可以送入音频数据 播放音乐了 1 VS1003 写命令写命令 要控制 VS1003 首先要实现的就是写命令 这是控制是否成功的前提 VS1003 通信方式是一种同步串行接口方式 SPI 从机模式 它要求 SCLK 信 号必须由外部电路产生 数据 SDATA 在 SCLK 的上升沿或下降沿时被写 入 写命令的过程如下 1 等待 DREQ 为高 当 DREQ 为低时 说明芯片还没有就绪 2 将 XCS 命令片选 拉低 3 写入 0 x02 4 写入寄存器地址 5 分别写入数据的高字节与低字节 6 将 XCS 置高 2 VS1003 初始化初始化 如其它芯片一样 初始化对于 VS1003 来说同样是极其重要的 初始化的 过程大致是这样的 1 硬件复位 接 XRESET 拉低 2 延时 将 XDCS XCS XRESET 置高 3 向 MODE 中写入 0X0804 4 等待 DREQ 为高 5 设置 VS1003 的时钟 SCI CLOCKF 0 x9800 3 倍频 6 设置 VS1003 的采样率 SPI AUDATA 0 xbb81 采样率 48kHz 立体 声 7 设置重音 SPI BASS 0 x0055 8 设置音量 SCI VOL 0 x2020 9 向 VS1003 发送 4 个字节的无效数据 用以启动 SPI 发送 3 VS1003 对音频文件的处理对音频文件的处理 在完成 VS1003 初始化之后就可以对其写入 MP3 文件数据了 主要就是看 DREQ 信号 在 VS1003 的 FIFO 能够接受数据的时候输出高电平 每次可以 写入 32 个字节的数据 而 DREQ 变低时 单片机就要停止数据的发送 写数 据的具体的方法如下 1 将 XDCS 拉低 2 等待 DREQ 为高 3 通过 SPI 写入数据 4 在文件没有结束前不断重复 2 与 3 操作 5 在所有的数据都发送完后 再发送 2048 无效字节以清除 VS1003 的数 据缓冲区 6 将 XDCS 置高 3 2 2 SD 卡读取驱动卡读取驱动 SD 卡 12 Secure Digital Memory Card 是一种为满足安全性 容量 性能 和使用环境等各方面的需求而设计的一种新型存储器件 SD 卡允许在两种模式 下工作 即 SD 模式和 SPI 模式 本系统采用 SPI 模式 SD 卡引脚功能如表 3 1 所列 各引脚的具体含义如下 CLK 时钟信号 每个时钟周期传输一个命令或数据位 频率可在 0 25MHz 之间变化 SD 卡的总线管理器可以不受任何限制的自由产生 0 25MHz 的频率 表 3 1 SD 卡引脚功能表 针脚123456789 SPI 模式CSMOSIVSSVCCCLKVSSMISONCNC CMD 双向命令和回复线 命令是一次主机到从卡操作的开始 命令可以 是从主机到单卡寻址 也可以是到所有卡 回复是对之前命令的回答 回复可 以来自单卡或所有卡 DAT0 3 数据线 数据可以从卡传向主机也可以从主机传向卡 VCC 和 VSS 电源和地 SPI 模式下 SD 卡的几个重要操作命令如表 3 2 所列 其中 R1 回应的数 据格式如表 3 3 所列 表 3 2 SPI 模式下 SD 卡部分操作指令 命令参数回应描述 CMD0 0X00 NONER1复位 SD 卡 CMD9 0X09 NONER1读取卡特定数据寄存器 CMD10 0X0A NONER1读取卡标志数据寄存器 CMD16 0X10 块大小R1设置块大小 字节数 CMD17 0X11 地址R1读取一个块的数据 CMD24 0X18 地址R1写入一个块的数据 CMD41 0X29 NONER1引用命令的前命令 CMD55 0X37 NONER1开始卡的初始化 CMD59 0X3B 仅最后以为有效R1设置 CRC 开启 1 或关 闭 0 表 3 3 SD 卡 R1 回应格式 SD 卡 R1 回应格式 BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0 0 参数 错误 地址 错误 连续擦 除错误 命令 CRC 错 误 非法 命令 擦除 复位 IDLE 状态 SD 卡典型的初始化过程如下 1 初始化与 SD 卡连接的硬件条件 MCU 的 SPI 配置 IO 口配置 2 上电延时 74 个 CLK 3 复位卡 CMD0 4 激活卡 内部初始化并获取卡类型 CMD1 用于 MMC 卡 CMD55 CMD41 5 查询 OCR 获取供电状况 CMD58 6 是否使用 CRC CMD59 7 设置读写块数据长度 CMD16 8 读取 CSD 获取存储卡的其他信息 CMD9 9 发送 8CLK 后 禁止片选 在 SD 卡初始化完成后 就可以读 SD 卡读写数据 SD 卡读取数据通过 CMD17 完成 具体步骤如下 1 发送 CMD17 2 接收卡响应 R1 3 接收数据起始令牌 0XFE 4 接收数据 5 接收 2 个字节的 CRC 如果没有开启 CRC 这两个字节在读取后可以 丢掉 6 8CLK 之后禁止片选 SD 卡写数据通过 CMD24 完成 具体步骤如下 1 发送 CMD24 2 接收卡响应 R1 3 发送写数据起始令牌 0XFE 4 发送数据 5 发送 2 字节的伪 CRC 6 8CLK 之后禁止片选 3 2 3 RTC 时钟驱动时钟驱动 STM32F103RBT6 内带 RTC 模块 它拥有一组连续运行的计数器 可以通 过适当的软件设置提供日历时钟功能和闹铃功能 RTC 的驱动时钟可以是一个 使用外部晶体的 32 768kHz 的振荡器 RTC 具有一个 32 位的可编程计数器 使用比较寄存器可以进行长时间的测量 有一个 20 位的预分频器用于时基时钟 默认情况下时钟为 32 768kHz 时 它将产生一个 1 秒长的时间基准 通过设置 RTC 的相关寄存器 就可以实现时钟和闹铃功能了 RTC 工作 的一般步骤如下 使能电源时钟和备份区域时钟 RCC APB1ENR 3 CR 1 BDCR 1 BDCR 1 BDCR 1 PRLH 与 RTC PRLL 更新配置 设置 RTC 中断 RTC CRH 0X01 进入中断服务程序 3 2 4 液晶显示设计液晶显示设计 液晶显示模块是一个慢显示器件 所以在执行每条指令之前一定要确认模 块的忙标志为低电平 表示不忙 否则此指令失效 要显示字符时要先输入显 示字符地址 也就是告诉模块在哪里显示字符 表 3 4 是 DM 1602 的内部显示 地址 表 3 4 DM 1602 的内部显示地址 比如第二行第一个字符的地址是 40H 那么是否直接写入 40H 就可以将光 标定位在第二行第一个字符的位置呢 这样不行 因为写入显示地址时要求最 高位 D7 恒定为高电平 1 所以实际写入的数据应该是 01000000B 40H 10000000B 80H 11000000B C0H 具体流程图如图 3 2 所示 图 3 2 液晶显示流程图 3 3 功能模块的设计功能模块的设计 3 3 1 音乐播放功能的设计音乐播放功能的设计 要实现音乐播放功能 需要获得相应的音乐文件数据 根据 FAT 文件的存 储格式并结合 SD 卡读取驱动 得到相应的文件数据 每次读取 512 个字节 当 VS1003 已经初始化完成并等待接收数据 DREQ 引脚为高电平 时 将读 到的数据以每次 32 字节的速度送入 VS1003 的 RAM 中 VS1003 会自动去处理 这些数据并得到模拟音频信号 在每次读取新的音频文件时 采用文件名比较 只比较前 3 个字节 的方 法查找存在 SD 卡中的歌词文件 如果存在歌词文件 就将文件数据全部复制 到 RAM 中 超过 6144 个字节的部分将丢弃 同时初始化 30ms 中断的定时器 用于歌词显示的刷新操作 音乐播放功能实现的具体流程如图 3 3 所示 加载SD卡中当前目录下 的的音频文件及目录 选择目录 选择文件 加载MP3播放器界面 读取音频文件送入 VS1003解码 初始化VS1003 文件是否读取 完 退出 返回系统选择菜单 上 下一首 文件编号加 减 音量调节 设置 VS1003音效寄存器 初始化定时器3 触摸中断 键 值选择 否 文件编号加1 存在歌词则显示 bt30MS 清标志位bt30MS 时间同步 读取存放在RAM中 的歌词数据 下一个簇的数据 显示读取的歌词 Y 是 返回 否 进入歌词显示函数 图 3 3 音乐播放功能的实现流程 3 3 2 USB 读卡器读卡器 STM32F103RBT6 内置 1 个 USB 2 0 全速接口 可以实现 USB 读卡器的功 能 该功能的实现需要 2 个部分 USB 传输部分和 SD 卡读写部分 根据 ST 官网提供的例程 USB 读卡器用到 2 个函数 一个是 MSD WriteBuffer 函数 用于向 SD 卡写入数据 当你要 COPY 文件到 SD 卡的时候 就是由这个函 数完成的 另一个是 MSD ReadBuffer 函数 该函数用于读取 SD 卡上面的数 据 下载 ST 官网的例程 移植到本设计中即可实现 USB 读卡器功能 第四章第四章 结论结论 本系统实现了简易 MP3 Player 的基本原型设计 还可以进一步利用英蓓特 STM103V100 II 评估板资源来完善和丰富该 MP3 Player 的功能 例如利用 Joystick 来选择歌曲 利用 LCD 来显示歌曲名 利用 ADC 来调节音量 利用 几个 LED 灯来表示音量大小 如果能完成以上所有相关设计 则可以基本熟悉 STM32 处理器的各种应用开发 结束语结束语 本文提出了一种基于 STM32 的 MP3 播放器设计方案 并使用 ARM 开发 工具 RealView MDK 实现了该方案的原型 尽管该方案无法作为一个通用 MP3 的方案 但是对于某些音频需要的工业控制 汽车电子 医疗电子等方案具有 一定的参考性 本系统也可以尝试采用更有效的中断方式 在内存中设置一个环形的缓冲 区 SPI1 从 SD 卡读取的 MP3 文件数据存放在其中 当 VS1003 需要数据时其 DREQ 引脚将产生低电平 利用其产生中断 在中断服务程序中从缓冲区读取 数据送 VS1003 直至 DREQ 引脚恢复为高电平时退出中断 限于时间与篇幅 的问题 我将不对上述情况予以实现 参考文献参考文献 1 百度百科 MP3 播放器 EB OL 2 薛小铃 刘志群 贾俊荣 单片机接口模块应用与开发详例 M 北京 北京 航空航天大学出版社 2010 3 AMS1117 技术手册 EB OL 4 STM32F103 增强型系列数据手册 EB OL 2009 0513 1405 html 2009 05 13 2011 03 01 5 王永红 徐炜 郝立平 STM32 系列 ARM Cortex M3 微控制器原理与实践 M 北京 北京航天航空大学出版社 2008 6 DS18B20 技术文档 EB OL http www maxim 7 24C02 中文资料 EB OL 22 8 ILI9320 手册 EB OL 9 ADS7846 EB OL 10 VS1003 MP3 WMA 音频解码器 EB OL 3fbd8de56797 pdf 2008 08 04 11 张涛 左谨平 马华玲 FatFs 在 32 位微控制器 STM32 上的移植 J 电子 技术 2010 03 12 SD 卡规范 EB OL 05 13 李宁 ARM 开发工具 RealViewMDK 使用入门 M 北京 北京航空航天大 学出版社 2008 附件附件 原理图 原理图 PCB 主芯片最小板的 PCB 图 外围电路 PCB 电路图 代码 代码 Includes include stm32f10 x lib h include hw config h include config h include fat16 h include msd h include vs1003 h Global define u8 Stream Buff buffsize u8 readNextBytes u32 mp3data pointer Extern declare extern void SetupUART1 void extern void SetupClock void extern void Speaker Timer Config void extern void Get Medium Characteristics void extern void VS1003 Config void extern void Mp3Reset void extern void SPI Config u16 BaudRatePrescaler extern void Delay int extern u32 Mass Block Count extern u32 Mass Block Size extern u32 Mass Memory Size Function Name USART Scanf Name Description Gets Char values from the hyperterminal Input None Output None Return Length u8 USART Scanf Name u8 str u8 index 0 while 1 Loop until RXNE 1 while USART GetFlagStatus USART1 USART FLAG RXNE RESET str index USART ReceiveData USART1 printf c str index 1 if str index 1 13 index return index Function Name USART Scanf Cmd Description Gets Char values from the hyperterminal Input None Output None Return Length u8 USART Scanf Cmd u8 str u8 index 0 while 1 Loop until RXNE 1 while USART GetFlagStatus USART1 USART FLAG RXNE RESET str index USART ReceiveData USART1 printf c str index 1 if str index 1 13 str index 1 32 index return index Function Name Equal Description Compare the string A and B Input A one string B anohter string SizeB the size of string Output None Return 1 Equal 0 Not Equal u8 Equal void A void B u8 SizeA u8 SizeB u8 i a A b B if SizeA SizeB return 0 for i 0 i Function Name Sleep Description delay Input delay time Output None Return None void Sleep u32 cpt loop cpt loop cpt loop 10000 while cpt loop 0 Function Name main Description Main routine Input None Output None Return None int main void u8 ret 1 static u32 currSec currSec 记录当前目录所 在的首扇区 fileSec 记录打开文件首扇区 u32 temp fileoffset u8 pass 512 记录路径 u8 foldername 128 文件或目录名 u8 command 6 记录命令 u8 len1 len2 u32 tmp s16 index u32 i SetupClock SetupUART1 VS1003 Config ret MSD Init printf r nMSD Init result d ret Get Medium Characteristics printf r nMsdBlockCount d Mass Block Count printf r nMsdBlockSize d Byte Mass Block Size printf r nMsdMemorySize d MB r n Mass Memory Size 1024 1024 FAT Init currSec DirStartSec 找到根目录的开始扇区号 pass 0 pass 1 0 index 0 while 1 PrintPass pass len1 USART Scanf Cmd command if Equal command dir len1 3 列出目录中所有项 printf r n r n SPI Config SPI BaudRatePrescaler 2 List AllDir Long currSec else if Equal command cd len1 2 更改路径 len2 USART Scanf Name foldername temp SearchFoler currSec foldername len2 1 if temp currSec temp if Equal foldername len2 2 上级目录 修改路径 if index 0 while pass index pass index 1 0 else if Equal foldername len2 1 当前目录 路径保持不变 else 子目录 修改路径 for tmp 0 tmp len2 tmp 记录路径 pass index foldername tmp pass index pass index 1 0 else if Equal command read len1 4 以文本文件的方式打开 文件 len2 USART Scanf Name foldername temp SearchFoler

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论