摘自:中电网
作者:电子科技大学通信与信息工程学院 陈桂培 林水生
摘 要:本文介绍了一种基于TI单片机MSP430F133的用于电子导游的专用MP3播放器的软硬件设计。该播放器的硬件电路主要由微功耗单片机、MP3解码芯片、存储器等构成;软件采用模块化结构进行设计。
关键词:单片机;电子导游;存储器;MP3;I2C
引言
MP3播放器近年来发展很快,目前已有大量产品面世。旅游这个新兴行业近年来得到了蓬勃发展,电子导游与人工导游相比,能避免由于导游个人因素带来的服务质量的不稳定性,为游客提供更加全面客观的服务。
电子导游系统是将专业导游对珍贵文物、旅游景点的介绍进行录音,并转换为MP3格式文件,以减小数据的存储量,按景点分割成不同的文件,通过USB接口下载到MP3中,然后通过红外自动或人工手动选择播放、收听各个文物、景点的介绍。
电子导游系统包括微机、电子导游、选曲控制器三个部分。微机用于对旅游景点的资料录入、存储、编辑和格式转换,为电子导游提供足够的原始素材。
选曲控制器安装在各个文物展台、旅游景点,定时发射景点编码信号。电子导游接收到景点编码信号后,进行解码并选择相应的内容进行播放。
电子导游由游客携带,但之前需要通过USB接口从微机中下载景点资料。本文主要介绍电子导游的软硬件设计。
电子导游硬件电路结构 电子导游的硬件结构框图如图1所示,主要包括用于主控的MSP430单片机,MP3解码及D/A转换芯片,存储旅游景点介绍信息的FLASH存储器以及景点选择控制接口、人机交互接口、USB接口等。
MSP430单片机及外围接口电路
TI公司的MSP430F133单片机具有16位RISC结构,内部有2个16位的定时器、1个12位高速A/D转换器和串行接口。内设JTAG模块,具有在线调试和在线编程功能。具有低电压和多种低功耗工作模式,待机模式电流仅1.3 A,关闭RAM时的待机电流低至0.15 A。数控振荡器使得从低功耗模式唤醒仅需6 s,非常适合于便携式应用场合。 [imga]../../upload/2006/05/08/232910.jpg[/imga]
MSP430单片机的6个8位的IO端口与外围芯片连接,其连接关系如表1所示。 [imga]../../upload/2006/05/08/232934.jpg[/imga]
按键电路采用行列扫描键盘结构,按键功能包括选曲控制、模式选择、音量控制等。液晶显示屏用于显示曲目的序号和播放状态,该接口包括数据、时钟等6根接口信号线。
红外管接收的信号经过放大整形后,送入到MSP430单片机解码,并由单片机根据解码结果进行选曲播放。
本系统采用NAND FLASH存储器,该类存储器有8根数据信号和6根控制信号。信号线的数目与存储器芯片的容量无关,便于存储器容量升级。
解码电路
MAS3507D是Micronas公司推出的单片MP3解码芯片,能够对8KHz、11.025KHz、12KHz和24KHz、44.1KHz等多种采样速率的音频数据流解码,具有I2C控制接口、异步MPEG位流输入接口、I2S解码数据流输出接口。内建DC/DC升压模块,适用于单节电池供电。电路图连接如图2所示。 [imga]../../upload/2006/05/08/233008.jpg[/imga]
DAC3550A是Micronas公司推出的与MAS3507D配套的音频D/A转换及放大芯片,如图3所示。MSP430通过I2C总线能够对DAC3550进行音量控制、均衡控制等。该芯片不仅能接收来自I2S总线的音频数据流,而且提供了多个模拟输入接口。 [imga]../../upload/2006/05/08/233045.jpg[/imga]
软件设计
软件结构
图4为电子导游的软件结构,包括初始化、FLASH存储器操作、USB接口驱动、人机交互模块和解码模块等,直接控制硬件的程序模块采用汇编语言编程。 [imga]../../upload/2006/05/08/233134.jpg[/imga]
初始化模块主要包括时钟频率设置、LCD显示器初始化、音效音量和播放模式的设置等。
人机交互模块主要是在下载或者播放过程中给用户信息提示。根据提示信息,用户可以对电子导游进行相应的控制。如音量的增减、播放、快进、快退、暂停、音效的设定、直选曲目、停止等。
解码模块的核心是比特流传输。在传输前,要对解码芯片进行相应的初始化操作。
NAND FLASH存储器操作模块实现存储器的物理检查、存储器链表建立和映射、存储器读写访问等。
时钟系统初始化模块
MSP430单片机是多时钟芯片,在降低系统功耗的同时,为了充分发挥其性能,需要对系统时钟进行编程。
系统将XT2外接8MHz晶振,获得8MHz的主系统时钟MCLK。而子系统时钟SMCLK为DCO振荡器产生的频率为800KHz的信号。时钟调整程序为:
BIS.W #OSCOFF,SR ;关闭LFXT1振荡器
BIC.B #XT2OFF,&BCSCTL1 ;启动XT2振荡器
SETUPOSC:
BIC.B #OFIFG,&IFG1 ;清除振荡器失效中断
MOV.W #0FFh,R15
SetupOsc1:
DEC.W R15 ;计算等待时间至"0"
JNZ SetupOsc1 ;等待循环
BIT.B #OFIFG,&IFG ;测试振荡器失效中断标志
JNZ SETUPOSC ;重复测试,直至标志始终复位
BIC.B #OFIFG,&IFG1 ;清除振荡器失效中断
BIS.B #80H,&BCSCTL2;选择SMCLK时钟源
模拟I2C总线模块
MSP430F133没提供I2C的硬件电路,因此需要用IO口线模拟。用于通过I2C来控制MAS3507D和DAC3550A。模拟I2C时序的程序包括启动模块、停止模块、发送一个字节模块、接收一个字节模块、主应答模块(MACK)、主非应答模块(MNACK)、从应答模块(CACK)等。
在程序设计中,充分利用了MSP430F133 I/O端口的特性,减少相关寄存器的操作次数,简化接口控制,缩小代码量。下列程序段是模拟I2C总线的启动功能。要求置时钟线为高,数据线为下降沿触发。
BIC.B #SCL+SDA,&PORT_DIR
BIS.B #SDA,&PORT_DIR ;SDA为输出
BIS.B #SCL,&PORT_DIR ;SCL为输出
RET
位流传输模块
当解码芯片的请求信号有效时,单片机要从外挂的FLASH中读取存放的数据,发送给解码芯片。数据是按逐位传输的,先传输高位,后传输低位,在SIC时钟下降沿锁存位数据到解码芯片。
DATA_TO_MAS: BIT.B #REQ,&P1DIR
JZ DATA_TO_MAS
;REQ为0表示MAS不需要数据
CALL #BYTE_READ
;从FLASH读一个字节到RAM
MOV.B #8,R4 ;用R4计数
TRANSFER: RLA.B &READ_BYTE_A
JC BIT_1
BIT_0: BIC.B #SID,&P5OUT
JMP LOCK_BIT
BIT_1: BIS.B #SID,&P5OUT
LOCK_BIT: BIS.B #SIC,&P5OUT
BIC.B #SIC,&P5OUT
DEC.B R4
JNZ TRANSFER
结束语
本文设计的电子导游以TI公司的MSP430F133为主控制芯片,使用Micronas公司的解码芯片MAS3507D以及配套的D/A转换芯片。本系统不仅具备了MP3播放器的全部功能,而且可作为便携式存储器,用于存储文件、相片等。其特定的设计功能不仅可用于电子导游,还可用于公交报站、博物馆、展览馆、无人值守交通路口的语音提示等。 |