1. 主机接口:与Baseband相连,Baseband通过它向ft1780发命令和读取状态;
2. 音频/系统引擎:芯片的核心部分,完成64和弦MIDI合成,MP3解码,七段数字均衡器,文件系统管理,系统控制等功能;
3. SD/MMC卡控制器:完成SD/MMC卡接口功能;
4. 输入/输出控制器:完成I2S接口,四路LED控制,马达和背光控制等功能;
5. 电源管理系统:可以关掉不用的功能模块,节省系统功耗;
6. 立体声耳机功放:可以直接驱动16ohm的耳机,输出功率可达到20mW以上;
7. 喇叭功放:可以直接驱动8ohm喇叭,输出功率可达到500mW以上;
ft1780芯片采用6mmx7mm 48Pin的BGA封装,与其它普通MP3解码芯片相比,它有以下几个主要特色:
1. 工作电流小,具有高效的省电设计电路,芯片内各模块可以单独控制开和关,可满足手机上不同的工作模式要求;
2. 支持全系列采样率和编码率的MP3数据,包括MPEG Version1 Layer3,MPEG Version2 Layer3和MPEG Version2.5 Layer3标准,采样率范围是8~48kHz,编码率是8~320kbps,解码品质高,声音音质好;
3. 支持64和弦的铃声,支持自有的人声音效格式(FTF格式),同时支持自然音和背景音的播放;
4. 内置SD/MMC卡的文件管理系统程序,不需要手机的基带来解析SD/MMC卡上的文件系统,基带只要发简单的命令就可以控制ft1780的播放功能,SD/MMC卡的数据可以不经过基带,由ft1780芯片自己读取和播放,这样可以大大减轻基带的负担,也因此拓宽了ft1780的应用面。
5. 内置高品质立体声耳机功率放大电路,输出功率大,并具有无耦合电容设计的耳机输出电路。普通的耳机输出需要两个较大的隔直电容,若电容容量太小,会使低频响应变差,声音低频失真。而无耦合电容设计可以节省成本,节省手机电路板宝贵的空间,增加耳机输出的保真度。
6. 内置喇叭功率放大电路,在8ohm喇叭上可以输出500mW以上的功率。
图2:典型应用示意图
ft1780芯片的曲型应用
ft1780的应用电路比较简单,所需的外围器件很少,只需要十几个电阻和电容,典型应用线路如2所示。通过调整R1和R3的比值可以调节ft1780内部输出到喇叭的增益,通过调整C1和C3可以调节喇叭输出声音的高频和低频特性,对于图中所列参数,R1=33k欧姆,C1=330pF,R3=33k欧姆,C3=0.1uF,增Gain=R1/R3=1,高频截止频率为FH=1/(2*π*R1*C1)=14.6kHz,低频截止频率为FL=1/(2*π*R3*C3)=48.2Hz。从Audio In进来的音频信号可以通过控制从喇叭或耳机出来,并且可以根据需要通过R2和C2调节它的低频响应曲线。图中,耳机的输出已用了无耦合电容设计,所以图上没有输出耦合电容,但要注意的是,耳机的公共端不是通常的“地”,需是芯片上的虚拟地脚“HPR”。另外芯片的VDDA脚可以直接与电池的正级相接,在不需芯片工作时,可以用软件来控制芯片进入"Power Down"状态,这时芯片的耗电只有几微安。
相关软件和播放流程
ft1780芯片的工作需要相应的驱动程序支持。驱动程序采用模块化结构,各功能都有相应的程序,在Design In过程中,只要修改硬件相关的地址参数,加入中断服务程序(也可以使用定时器相关的查询模式),然后调用相应的API就可以正常工作(发出声音)了。图3是软件模块示意图,下面简单介绍一下各模块的功能:
图3:软件模块示意图
1. 硬件平台相关模块:需要根据手机平台的情况修改相应的参数,主要有芯片寄存器的操作地址,输入时钟的频率等;
2. MIDI模块:MIDI数据解析和处理,MIDI播放控制和回调控制;
3. ADPCM模块:ADPCM数据解析和处理,ADPCM播放控制和回调控制;
4. FTF模块:FTF数据解析和处理,FTF播放控制和回调控制;
5. SD/MMC模块:SD/MMC命令解析和处理,SD/MMC播放控制和回调控制;
6. MP3模块:MP3数据解析和处理,MP3播放控制和回调控制;
7. 中断服务模块:对芯片的各个中断事件作相应的处理,主要补充数据,播放结束控制和出错信息处理等;
8. 驱动程序API模块:提供用户所需的所用功能的调用,用户不必关心具体底层模块的细节,只需与上层API打交道;
9. 用户参考模块:如何使用API控制播放的一个例子,也可以作为API的进一步包装,供用户直接使用。
下面我们介绍一下ft1780软件的使用方法。
播放Baseband上文件的流程
图4是播放Baseband上文件的流程图。当用户想播放Baseband上的音频数据时,首先是要对ft1780芯片做初始化,然后对要播放的数据做预处理,驱动程序会分析数据格式,并根据格式自动调用底层处理函数,再下一步是启动中断或定时器、消息等机制,这一步的目的是启动后台处理任务,当进入播放状态时,需由后台任务完成后续的处理工作,最后就是发播放开始命令,开始播放声音,进入播放状态。
图4:播放Baseband上文件的流程图
在播放状态下,ft1780芯片会根据内部运作情况发出中断请求,Baseband必需在一定时间内处理相应事件,否则会出现声音停顿,不连续等现象。在ft1780芯片内部有很大的FIFO(先进先出存储器)来保存播放的数据,可以适应低端Baseband中断反应延时比较大的问题,保证声音播放的顺畅。
在播放过程中,Baseband随时可以调用相应的API来停止当前的播放,或读取播放信息,暂停/恢复等操作。
播放SD/MMC卡上文件的流程
图5是播放SD/MMC卡上文件的流程图。当用户想播放SD/MMC卡上的声音文件时,首先是要对ft1780芯片做初始化,然后读出卡上的声音文件,选择要播放的文件,调用简单的API播放命令后,进入播放状态,芯片会自动读取卡上的数据,播放出声音,再下一步是启动中断或定时器、消息等机制,这一步的目的是启动后台处理任务,处理中断事务。
图5:播放SD/MMC卡上文件的流程图
虽然看上去与播放Baseband上文件的流程差不多,但主要有以下不同:当播放Baseband上文件时,Baseband必须不断地送数据到ft1780芯片内部,中断会比较频繁(与所播放的文件的码流率有关),而当播放SD/MMC卡上的文件时,ft1780芯片自己从SD/MMC卡里读取所需数据,不需要Baseband的干预,在播放过程中基本上没有中断任务,只有在播放结束时会发出中断告知Baseband,由Baseband决定下一步的工作,如重复播放、或播放下一个文件,所以对Baseband的要求更低,适应性更广。
在播放过程中,Baseband随时调用相应的API函数,完成停止播放,暂停/恢复等功能。