类型:初级设计方案
来源:www.armjishu.com
1. 前言与项目概述
本次armjishu.com的MP3播放器开源项目的目的是让大家通过这个项目大家一起进步,共同学习嵌入式相关知识,交流学习心得,体会项目过 程中的困难与成功的喜悦。学习是目的,过程是重点。所以本次设计不采用MP3专业芯片,而采用独立的功能模块搭建的方式。
本次MP3播放器至少支持WAV和MP3两种音乐文件的播放,使用软解码来实现,还要求支持SD读写,支持通过ISP方式来实现MP3播放器固件的下载与更新,支持USB为系统供电。本次设计不添加LCD显示屏。
本次设计关于处理器的选型我们考虑目前市场上较为常见的ARM7,ARM9,和Cortex-M3内核的处理器,选择ARM9来做有点大材小用是种 浪费,而Cortex-M3在性能上比ARM7有很多优势,而且Cortex-M3内核系列控制器逐渐占据微控制市场主流而且价格便宜,所以选择以 Cortex-M3内核的处理器。目前市面上比较常见Cortex-M3为德州仪器(TI) (该芯片原属Luminary Micro公司,后被TI收购)的LM3S系列和意法半导体ST的STM32。我们选择的芯片必须至少有一个SPI接口来驱动SD卡和一个I2S驱动音频 解码芯片,所以我们选择意法半导体ST的STM32F103VET芯片。
MP3播放器的系统架构如图表1所示。图中MCU读取SD存储卡里的MP3音乐文件后对MP3数据做软解码,将解码后的数据通过I2S总线传输至音 频DAC芯片做D/A转换后送至耳机听筒。图右侧的SPI总线由于控制音频DAC芯片的参数实现音量控制等功能。图左侧的按键KEY由于输入控制命令,如 “播放/暂停”、“上一曲”、“下一曲”等。图左侧的LED指示灯用于指示系统当前的状态。其它一些调试接口如RS232串口、JTAG接口以及USB接 口等不是系统运行时的必需接口,所以未在图中画出。
图表1 MP3播放器系统架构1.JPG
MP3播放器的主要功能选用的芯片列表及特性型号如表格1所示。
表格1 MP3播放器主要器件选项
2.难点与风险
2.1 软解码
目前市面上的MP3播放器或带有MP3播放功能的开发板为了设计简单起见大都采用硬件解码的方式完成MP3的解码任务,本次设计采用软解码可参考的资料相对较少。
应对方法:在硬件设计阶段就开始MP3软解码的资料收集与预研。
2.2 采购风险
正品芯片采购的风险:如果采购到假器件将造成调试时间的浪费以及资金的浪费。
应对方法:由论坛主办方根据需要从正规代理渠道采购。
2.3 协作风险
本次MP3播放器开源项目采用论坛网页一起协作开发的方式,由于开发者处于不同的地域,且都是业余时间完成开发设计,所以项目的进度很难把握。
应对方法:任务分工后采用周报的方式,定时汇报各自承担项目内容的进度情况,以便及时发现问题做相应的调整。
3.硬件设计
MP3播放器由微处理器STM32F103VET、SD卡、i2s音频DAC、电源电路、晶振电路、复位电路、RS232串口、功能按键、指示灯、蜂鸣器、JTAG接口以及各种扩展接口组成。
MP3播放器使用核心板+母板的形式。核心板包括CPU、晶振、复位电路和驱动模式选择;其余功能在母板上实现。核心板与母板通过两排2.54间距的双排插针与对应插座相连接。核心板和母板的结构框图如图表3和图表2所示。
图表2 母板框图
图表3 核心板框图
3.1 STM32F103VET CPU介绍
本次设计选择以STM32F103VET为处理器。
STM32系列32位闪存微控制器是意法半导体ST基于突破性的ARM Cortex-M3内核的微控制器。STM32系列产品得益于Cortex-M3在架构上进行的多项改进,包括提升性能的同时又提高了代码密度的 Thumb-2指令集,大幅度提高的中断响应,而且所有新功能都同时具有业界最优的功耗水平。
STM32F103xC、STM32F103xD和STM32F103xE增强型系列使用高性能的ARM® Cortex™-M3 32位的RISC内核,工作频率为72MHz,内置高速存储器(高达512K字节的闪存和64K字节的SRAM),丰富的增强I/O端口和联接到两条 APB总线的外设。所有型号的器件都包含3个12位的ADC、4个通用16位定时器和2个PWM定时器,还包含标准和先进的通信接口:多达2个I2C接 口、3个SPI接口、2个I2S接口、1个SDIO接口、5个USART接口、一个USB接口和一个CAN接口。
STM32F103xx大容量增强型系列工作于-40°C至+105°C的温度范围,供电电压2.0V至3.6V,一系列的省电模式保证低功耗应用的要求。
这些丰富的外设配置,使得STM32F103xx大容量增强型系列微控制器适合于多种应用场合:
●电机驱动和应用控制
●医疗和手持设备
●PC游戏外设和GPS平台
●工业应用:可编程控制器(PLC)、变频器、打印机和扫描仪
●警报系统、视频对讲、和暖气通风空调系统等
该产品系列的框图如图表1所示。
STM32F103VET 微控制器包含了下列特性:
■内核:
−ARM 32位的Cortex™-M3 CPU,最高72MHz工作频率,在存储器的0等待周期访问时可达1.25DMips/MHz(Dhrystone 2.1);
−单周期乘法和硬件除法
■存储器
−从256K至512K字节的闪存程序存储器
−高达64K字节的SRAM
−带4个片选的静态存储器控制器。支持CF卡、SRAM、PSRAM、NOR和NAND存储器
−并行LCD接口,兼容8080/6800模式
■时钟、复位和电源管理
−2.0~3.6伏供电和I/O引脚
−上电/断电复位(POR/PDR)、可编程电压监测器(PVD)
−4~16MHz晶体振荡器
−内嵌经出厂调校的8MHz的RC振荡器
−内嵌带校准的40kHz的RC振荡器
−带校准功能的32kHz RTC振荡器
■低功耗
−睡眠、停机和待机模式
−VBAT为RTC和后备寄存器供电
■3个12位模数转换器,1μs转换时间(多达21个输入通道)
−转换范围:0至3.6V
−三倍采样和保持功能
−温度传感器
■2通道12位D/A转换器
■DMA:12通道DMA控制器
−支持的外设:定时器、ADC、DAC、SDIO、I2S、SPI、I2C和USART
■调试模式
−串行单线调试(SWD)和JTAG接口
−Cortex-M3内嵌跟踪模块(ETM)
■多达112个快速I/O端口
−51/80/112个多功能双向的I/O口,所有I/O口可以映像到16个外部中断;几乎所有端口均可容忍5V信号
■多达11个定时器
− 多达4个16位定时器,每个定时器有多达4个用于输入捕获/输出比较/PWM或脉冲计数的通道和增量编码器输入
− 2个16位带死区控制和紧急刹车,用于电机控制的PWM高级控制定时器
− 2个看门狗定时器(独立的和窗口型的)
− 系统时间定时器:24位自减型计数器
− 2个16位基本定时器用于驱动DAC
■ 多达13个通信接口
− 多达2个I2C接口(支持SMBus / PMBus) 、
− 多达5个USART接口(支持ISO7816,LIN,IrDA接口和调制解调控制)
− 多达3个SPI接口(18M位/秒),2个可复用为I2S接口
− CAN接口(2.0B 主动)
− USB 2.0全速接口
− SDIO接口
■CRC计算单元,96位的芯片唯一代码
STM32F103xC/D/E系列处理器的资源列表如图表4所示,其中第7列对应STM32F103VET处理器的资源。
图表4 STM32F103xC/D/E器件功能和配置
3.2 晶振
晶体振荡电路用于向STM32F103VET和其他需要时钟的外设电路提供工作时钟。本系统使用无源晶体振荡器X1(8MHz)作为系统的主振荡器(主 振荡器支持的晶体值范围从4MHz到16MHz),一个32.768 kHz的晶体作为内置实时时钟(RTC)振荡器。晶体振荡器的连接图见图表5。
注意晶振的负载电容的容值应当按照无源晶振规格书的要求选取,容值不正确可能导致晶振起振缓慢甚至不起振,这将影响系统的稳定性。
图表5 晶振连接示意图
3.3 复位电路
本次设计采用的是简单的“RC+按键”复位形式,复位电路的连接示意图如图表6所示,该复位电路可以实现上电自动复位功能和手动按键复位功能。
图表6 复位芯片连接图
1)上电自动复位原理:上电前电容里的电荷放光,系统上电瞬间,3.3V通过电阻向电容充电,在充电过程中(充电过程中需要一些时间,而此时芯片始终处 于复位状态下),电容的电压缓慢上升直到3.3V,只要电压没到3.3V这个值时芯片复位脚就近似于低电平,于是芯片检查到复位引脚低电平则导致系统复 位,充电完毕后,电压接近3.3V时,芯片复位脚近似高电平,于是系统停止复位开始工作,复位完成。
2)手动按键复位原理:系统正常工作时,电容里已经充满了电荷,所以电容正极的电压为电源电压3.3V,此时按下按键,则电容的正负极被短路,所以 芯片复位脚为低电平,系统复位,同时由于电容正负极被短路电容里的电荷迅速释放干净,当按键释放时3.3V通过电阻向电容充电,原理与上电复位原理一致。
armjishu.com经验之谈:这里存在一个问题:当系统处于正常工作状态下,电源突然有一个较短时间的大幅度抖动,例如在保持了1ms的低电 平,此时外部系统(芯片之外的其他系统或工作可能由于这次抖动工作都不正常了或者说工作不协同了)已经紊乱了,但是有可能该复位电路中电容里的电荷还没有 放干尽(在短暂的1ms内无法放干净,可能需要更多的时间),无法使得芯片复位脚变成低电平,没能对系统进行复位,这种情况比较容易发生在电源合闸瞬间 (机械接触存在抖动)。为了解决此问题,图6所示的复位电路增加了二极管,在电源电压瞬间下降时使电容迅速放电,一定宽度的电源毛刺也可令系统可靠复位 (提示:二极管可以导通使得电容尽快放电)。
3.4 电源电路
MP3播放器系统需要外部提供5V外接电源,5V电压经过我们的电源处理芯片后将输出3.3 V稳定电压供给STM32处理器和其它器件使用(因为STM32核心处理器就是需要3.3v的供电电压);MP3播放器外接5V电源采用两种供电方式:
1)这种供电方式是通过5v外接电源适配器提供5v电源的输入,可提供的电流大小与适配器有关。
2)通过USB接口提供5v电源的供电方式,最大可提供500mA的电流,这是根据USB协议来确定的标准。
注:这里我们选择第二种供电方式即USB接口供电
3.3V电压芯片选用国家半导体公司(National Semiconductor Corporation)生产的LM1117MPX-3.3型低压差(LDO)稳压器,它的输人电压典型值为5V,输出电压为3.3V,最大输出电流为0.8A。
电源电路图和其SOT223封装的管脚定义如图7所示。本次选择的3.3V电源芯片LM1117MPX-3.3有很多PIN-to-PIN可替代型号,其中包括LT1117-3.3(0.8A)、AMS1117-3.3(0.8A)等。
图表7 电源封装图和电源电路图
注:STM32F103VET微控制器外部供电电压为3.3v输入,同时在芯片内部产生1.8V电源电压供STM32F103VET内核使用(即1.8V电压由STM32F103VET芯片内部产生,外部只需要提供3.3V电压即可)。
armjishu.com经验之谈:1)那么STM32F103VET芯片内核为什么不直接使用3.3V供电呢,而还要转成1.8v?因为内核工作频率 很高,而动态功耗与电压的平方成反比,所以为了降低功耗,内核的电压一般尽量降低为好。 2)STM32F103VET芯片内核只需要1.8v供电,那么为什么一定要接入3.3v的电源供电呢?这是因为3.3v主要是芯片IO使用,与外部电 路打交道时管脚输出驱动和输入接收都要求是3.3V。
原文见于 :http://www.armjishu.com/bbs/viewtopic.php?id=1711&flag=412