《[计算机软件及应用]简易音频播放处理系统的设计理工.doc》由会员分享,可在线阅读,更多相关《[计算机软件及应用]简易音频播放处理系统的设计理工.doc(40页珍藏版)》请在三一办公上搜索。
1、简易音频播放/处理系统的设计实例第十一章 简易音频播放/处理系统的设计实例本章介绍了基于TI公司的一款高性能、低价格和低功耗的16位定点DSP TMS320VC5501(简称C5501),来描述一个简易音频播放/处理系统的设计实例。该系统能够实现对音频信号的录音、播放及效果处理等应用。C5501主要负责执行音频流的输入/输出及音频算法;系统采用TLV320AIC32音频编解码器(CODEC)对音频信号采样成数字音频流(Audio Stream),以及对音频流进行回放(Playback);系统还用到了Silabs公司的高性能混合信号USB闪存单片机C8051F340,主要负责一些辅助工作,如管理
2、SD/MMC卡文件系统、以及提供点阵LCD用户图形界面(GUI)等;TMS320VC5501与C8051F340之间的通信采用的是DSP的主机接口(HPI),实现了主机C8051F340对TMS320VC5501的控制。11.1系统结构概述11.1.1系统硬件结构概述该系统的硬件结构可分为以下部分:TI公司的TMS320VC5501 16位定点数字信号处理器 (DSP),最高处理速度为300MIPS 300MHz,芯片采用LQFP-176封装;Silicon Laboratories C8051F340高性能增强型MCS-51系列单片机,与TMS320VC5501通过16-bit HPI(Ho
3、st Port Interface)接口连接,作为DSP的主机(Host),芯片采用TQFP-48封装;点阵液晶显示模块(Dot-Matrix LCD Module),其内部控制芯片为韩国Samsung公司S6B1713,屏幕分辩率为128x64,由C8051F340单片机控制,通过16针插座与单片机连接,传输方式为8位并行 (8-bit Paralleled);模拟键盘,作为输入设备,其内部由电阻串并联网络构成,通过C8051F340的集成A/D转换器进行电平采样及按键识别,用以完成对图形界面的操作,因此它与主机的连接只有2根线;SD/MMC卡座,可插入SD/MMC卡,作为该系统的海量存储载
4、体,通过SPI四线接口与C8051F340单片机连接;USB 2.0接口,与PC机连接,可供上传下载文件到SD/MMC卡;RS-232接口,与PC机通过超级终端通信,可供在线调试单片机系统的程序;Hynix(韩国现代公司)HY57V281620同步动态随机存储器(SDRAM),与DSP的 16-bit EMIF接口连接,作为DSP的外部扩展存储器,其容量为128M-bit (16Mbytes);Texas Instruments TLV320AIC32可编程低功耗立体声音频编/解码器(CODEC Coder&Decoder),可提供16/20/24/32-bit A/D D/A采样精度,采样频
5、率范围为8kHz96kHz,通过McBSP及I2C接口与DSP连接。该系统的硬件结构框图如图11-1所示。图11-1 硬件系统结构框图本系统的固件可分两部分单片机固件和DSP固件。1. 单片机固件单片机固件的开发环境为KEIL Vision2,用C语言编写。该固件基于KEIL提供的RTX-51 Tiny实时操作系统(Real-time Operating System RTOS),以及Silicon Laboratories提供的USB海量存储设备参考设计(USB Mass Storage Device Reference Design - USB-MSD-RD AN282)。该固件要完成的主
6、要任务有:1) 控制LCD显示,提供图形界面支持,如文字、窗口、滚动菜单的显示等;2) 监视识别模拟键盘的输入,由A/D采样值判断是哪个键按下,以执行相应的操作(滚动菜单、选择菜单、退出等);3) 驱动SD/MMC存储卡的存取操作,并在SD/MMC上提供FAT文件系统支持;4) 执行USB 2.0协议中的海量存储设备(Mass Storage Device)协议;5) 驱动RS-232程序调试接口,通过该接口向PC输出显示系统状态,支持简单的命令行操作;6) 作为DSP的主机,该固件还要负责复位DSP、启动DSP通过HPI向DSP的引导区写入程序代码,启动后还要给DSP提供音频数据及一些简单的
7、命令。2. DSP固件DSP固件的开发环境为CCSv 3.1,固件基于TI公司提供的DSP/BIOS实时操作系统、及芯片支持库(Chip Support Library - CSL)。该固件要完成的主要任务有:1) 与TLV320AIC32通信来实现音频的采样与播放,其连接是通过两个总线来完成:I2C作为控制总线,McBSP作为数据总线;2) 接收来自MCU的音频数据及指令,实现音频文件的播放;3) 向MCU反馈信息,如程序运行状态,以及要在LCD上显示的数据等(如想要在LCD上以图形方式显示的FFT结果);4) 控制SDRAM时序(其实这主要是是由EMIF硬件来完成的,但是软件需要对EMIF
8、进行初始化工作,设定SDRAM的时序参数,比如CAS to RAS latency等);5) 对音频数据按照一定的算法进行处理(如FIR,FFT等)。同时为了提高开发效率,还使用了TI公司专门为TLV320AIC32设计的一个开发工具AIC32 Configuration Tool,基于JAVA语言,该工具提供了TLV320AIC32的所有内部寄存器的图形化设置,从而大大简化了程序的开发。11.1.2 SD/MMC存储卡SD/MMC卡是专门为满足消费类电子产品的数据存储需求而产生的,近年来得到众多厂商与消费者的广泛支持。它具有高容量、高速度、体积小巧、价格低和数据安全性高等诸多优点,是便携式数
9、字产品的理想数据载体,特别适合用于存放大容量音/视频数据(如数码相机,手机等)。由于SD卡与MMC卡在一般应用场合下都是兼容的(下文将阐述一些特例),因此为简明起见,以下称SD/MMC卡为SD卡。除非特殊说明,SD卡的特性同样适用于MMC卡。1.SD卡系统特性整体来说,通常SD卡具有以下特性:最大支持1GB容量(本系统目前不支持更高容量的SD卡);兼容SD卡协议;支持SPI接口传输模式;电源电压范围:2.73.6V;SPI时钟频率范围:025MHz;具有写保护开关(仅通过机械开关支持,系统必须根据开关的位置来决定是否对其进行写保护);卡状态检测(插入/拔除,仅通过机械开关支持);最多可重写约1
10、0,000次。2.SD卡物理特性SD卡的物理特性主要包括有重量: 2.0 g;长度:32mm 0.1mm;宽度:24mm 0.1mm;厚度:2.1mm 0.15mm。其详细尺寸及各引脚的位置如图11-2所示。图11-2 SD卡详细尺寸及各引脚的位置3.SD卡总线拓扑结构SD卡有两种总线模式:分别为SD模式和SPI模式,本系统采用SPI模式。在SPI模式下,SD卡的SPI接口与市场上的大多数主机(单片机)的SPI接口兼容,其中包括以下四根线:1) CS:主机到卡线选信号(Host to card Chip Select signal);2) CLK:主机到卡时钟信号(Host to card c
11、lock signal);3) DataIn:主机到卡数据信号(Host to card data signal);4) DataOut:卡到主机数据信号(Card to host data signal);可见,在SPI模式下数据是串行传输的,而且是全双工的(收/发线独立)。而在SD模式下,则有4根数据线(DAT0.3)构成4-bit并行接口,收/发线复用。这种传输模式理论上可以达到4倍于SPI模式的传输率(12MB/s),但是它违背了“串行化”的大方向,是一种颇有争议的接口。更由于MMC卡不支持SD模式,这种模式如今已很少有人使用,本文将不再叙述。4. SPI模式下的SD卡引脚定义SD卡上
12、共有9个引脚,这与MMC卡的引脚(7个)有所不同,但是在SPI模式下,SD卡比MMC卡多的两个引脚(Pin-8, Pin-9)是保留的,没有定义。因此SD卡与MMC卡只有在SPI模式下才互相兼容,这也是为什么大多数SD卡读卡器(或其它设备)都选用SPI模式而不用SD模式的原因。SPI模式下的SD卡引脚定义如表11-1所示。表11-1 SPI模式下的SD卡引脚定义引脚号名称电气类型SPI定义1CS输入片选Chip Select(低电平有效)2DataIn输入主机到卡命令与数据Host to Card Commands and Data3VSS1电源电源地Supply Voltage Ground
13、4VDD电源电源Supply Voltage5CLK输入时钟Clock6VSS2电源电源地Supply Voltage Ground7DataOut输出卡到主机命令与数据Card to Host Commands and Data8保留输入保留Reserved9保留输入保留Reserved5. SD卡座容易理解SD卡座就是用于承载SD卡的一个插座,需要将它焊到电路板上。由于各个厂家生产的卡座都不完全一样,在制作PCB时需要将所有的卡座引脚按实际尺寸准确地画出来,从而生成PCB引脚图(Footprint)。还要说明的是SD卡座除了引出SD卡上的9个引脚之外,还有一个写保护开关脚(写保护关闭时接地
14、,否则悬空),卡检测脚(卡插入时接地,否则悬空),这些脚可以接到单片机的输入PORT上,并接上拉电阻,程序在对卡进行操作前需要检测这些管脚上的逻辑值。其余4个脚容易看出是固定脚(其实严格来说只有3个,有一个是插拔动作检测脚,但是一般情况不用)。11.1.3 有关USB海量存储设备(USB-MSD-RD)简介前面提到了本系统的单片机固件主要基于Silicon Laboratories提供的USB海量存储设备参考设计(USB Mass Storage Device Reference Design - USB-MSD-RD AN282,以下简称USB-MSD-RD)。顾名思义,这是官方提供的为了简
15、化开发过程的现成程序,供开发人员参考,程序可用于C8051F340单片机。在此简要地介绍一下USB-MSD-RD。在众多流行操作系统支持的USB设备中,USB海量存储设备(USB Mass Storage Device,以下简称USB-MSD)得到了最广泛的支持,我们常说的U盘就是USB-MSD类的一种。这一类的USB设备可以使用PC操作系统(如Windows XP)上自带的驱动程序,因此在很多操作系统上不用安装驱动程序就可以使用,更不需要专门开发驱动程序,非常方便。USB-MSD-RD固件可以工作在以下两种方式下:1) 海量存储设备模式 (Mass Storage Device Mode),
16、连接到PC机的USB接口;2) 独立的嵌入式系统模式(Independent Embedded System Mode),连接到PC机的RS-232接口。在海量存储设备模式中,系统将会以USB海量存储设备(U盘)的形式出现在PC机上,该模式用到的模块有:“USB”、“Mass Storage Device”、“SCSI”、“ Sector Server” 和“Media Access”。在嵌入式系统模式中,系统可以通过UART外壳(Shell)接受来自连接到PC机上的RS-232接口命令,该模式会用到外部RS232 收发器(如MAX232,MAX3221)、一些片上外设(如ADC,UART)以
17、及模块:“Example Application”、“File System ”、“Sector Server”和“Media Access”。USB-MSD-RD(AN282)提供的一些用来访问SD卡上的文件系统的应用程序接口(Application Program Interface - API),是以C语言函数的形式出现的。编程人员不需要知道这些程序内部是具体怎样实现的(如SD卡的时序如何,怎样设诸多寄存器等等),只要知道它的接口是怎样的,也就是怎样调用这些API函数,产生怎样的结果等等。USB-MSD-RD在这里提供的API比较类似与计算机C语言中的磁盘I/O头文件,只是功能上有些简化
18、。有关USB-MSD-RD中提供的与SD卡相关的API函数(摘USB-MSD-RD编程者手册,见参考文献1)。有关程序作者是经过修改的,若有需要请与作者联系,我们会提供光盘给读者。由于本系统是基于USB-MSD-RD的,也就是说我们除了要USB-MSD-RD的功能之外还要加一些自己的应用程序,即以下要讲的LCD图形界面、模拟键盘、HPI控制等。可见任务很多,很难用C语言的循环体来实现,因此我们用了KEIL提供的多任务实时操作系统小型版RTX51 Tiny关于RTX51 Tiny的详细介绍,您可从以下地址获得:,用以支配多任务之间的配合。因篇幅所限,这里不作详述。11.1.4 S6B1713点阵
19、LCD显示及用户图形界面(GUI)1. S6B1713液晶模块与单片机的接口本设计使用大连天马公司的液晶模块,内部编号是TM90AQ,用到的控制芯片是韩国三星S6B1713(以下称本液晶模块为S6B1713)。S6B1713液晶模块与C8051F340单片机通过16针双排插座连接,其引脚功能定义如表11-2。表 11-2 S6B1713液晶模块引脚功能定义引脚号名称电气类型SPI功能定义1GND电源电源地2VDD电源电源3NC悬空无4A0(RS)输入地址线0(寄存器选择)5RES输入复位(低电平有效)6WR输入写信号(低电平有效)714DB0.7输入/输出8位双向数据总线CS为高时该总线呈高阻
20、15CS输入片选(低电平有效)16RD输入读信号(低电平有效)单片机与LCD的连接如图11-3所示,连接方式如下:1) DB0.7 与单片机的P2口连接,用于单片机和LCD之间并行数据的双向传送;2) RES与单片机P3.3口连接,用于复位LCD,上电时必须由单片机给出10ms低电平复位信号;3) CS与单片机的P3.0口连接,用于片选LCD;4) A0与单片机的P3.3口连接,用于区分控制寄存器(0)与地址寄存器(1);5) RD与单片机的P3.1口连接,用于从LCD读出数据(低电平有效);6) WR与单片机的P1.8口连接,用于向LCD写入数据(低电平有效)。S6B1713用总线保持器(B
21、us Holder)和内部数据总线(Internal Data Bus)来进行数据传输。S6B1713用总线保持器(Bus Holder)和内部数据总线(Internal Data Bus)来进行数据传输,其读/写时序如图11-4所示。折腾11.1.5用户图形界面(GUI)的实现目前,嵌入式系统中大多数的用户图形化界面(GUI)都是在操作系统的支持下,调用系统的各种API函数实现的。这些操作系统为实现GUI提供了大量的库函数,也为编程人员提供了界面设计的良好平台。本系统的LCD图形界面全部在KEIL环境下用C语言编写,按程序层次从低向高排列,可划分为LCD时序驱动层、图形支持层、字体支持层、用
22、户图形界面层和简易文件浏览器,以下是一些简单介绍。1. LCD时序驱动层(LCD Driving Layer)单片机对LCD的操作是通过一些特定的时序来完成的,每一个对LCD的指令或数据都需要通过这种特定的时序来完成,如换行,清屏,写数据等,然而这些时序对于每个不同型号的LCD来说都是不一样的。为了使程序具有很强的适应性和兼容性,我们需要对硬件的一些细节进行隔离,使下一层不必了解对LCD硬件操作的细节,只要访问驱动程序就行了。本层主要负责操作LCD接口时序,如写一个字节,读取状态等,以及对LCD内部寄存器进行设置。2. 图形支持层(Graphic Suppot Layer)本层为图形显示层提供
23、一个显示缓存(Display Buffer),由于S6B1713横向分为8页,每页8行,共64行,纵向分为128列,因此整个屏幕的像素数为128*64,这也就需要8*128字节来存放整个屏幕的显示数据。在C程序里声明一个长度为8*128=1024字符的二维数组,并定期(约50ms)将显示缓存内的全部显示数据写入到LCD的DDRAM内,完成显示刷新。因此本层对硬件操作进行了隔离,使下一层不必了解对LCD硬件操作的细节。利用上一层(LCD时序驱动层),本层为下一层(高层)提供了一个128*64点的一个绘图平面坐标系,从而高层程序可以间接地使LCD屏幕上的每一点亮(写1)或灭(写0),这样一来,任何
24、对LCD的操作将都可以转化为对坐标系中像素(点)的操作(坐标的原点在屏幕的左上角)。除此之外,此层还提供了一些画线,画方等操作,由于篇幅所限在这里不一一介绍。3.字体支持层(Font Support Layer)利用图形支持层,本层可以在LCD的任何位置显示出5种不同大小的字体,其中还含有变宽字体。在坐标系上,点(x,y)为左上角,以字体sysfont8显示字符c, 着色为color,返回宽度。4. 用户图形界面层(GUI Layer)利用图形支持层和字体支持层,本层为用户提供了一个简单的图形界面,如显示一个对话框(Dialog box),弹出窗口(Pop-up Message),滚动菜单(S
25、croll Menu)等。5. 简易文件浏览器(Simple File Explorer)建立在所有层之上,并且用到了USB-MSD-RD API函数,本应用层对文件系统进行分级显示。用于启动文件浏览器,用户通过键盘在图形界面中选择文件,文件被选定后这个函数将返回被选定文件的指针。11.2 TMS320VC5501与C8051F340的连接及通信协议TMS320VC5501是为实现低功耗、高性能而专门设计的定点DSP芯片,该芯片的内部结构与TMS320C54x不同,它是属于TI公司TMS320C5000系列的定点DSP芯片,其应用软件的开发可在TI公司提供的开发环境中进行。首先用户用C/C+语
26、言或汇编语言编写源文件,经C编译器、汇编器生成COFF格式的目标文件,再用链接器进行链接,生成在C55x上可执行的目标代码,然后利用调试工具对可执行的目标代码进行仿真和调试。当调试完成后,通过Hex代码转换工具,将调试后的可执行目标代码转换成EPROM编程器能接受的代码,并将该代码固化到EPROM中或加载到用户的应用系统中,以便DSP目标系统脱离计算机单独运行。11.2.1 TMS320C5501的主要特点及内部结构1.TMS320C5501的主要特点TMS320VC5501芯片是一种特殊结构的微处理器,为了快速地实现数字信号处理运算,它采用了流水线指令执行结构和相应的并行处理结构,可在一个周
27、期内对数据进行高速算术运算和逻辑运算,其具有以下特点:1) 高性能、低功耗、定点TMS320C55x数字信号处理器(DSP);2) 16K*16-Bit (32KB)片内RAM,由4块4K*16-Bit双访RAM(DARAM)组成;3) 16K*16-Bit (32KB)片内单等待周期只读存储器(ROM);4) 最大8M*16-Bit(16MB)可寻址内存空间;5) 采用1.26V核心电源,3.3V I/O电源。2. TMS320C5501的CPU主要结构1) 优化的CPU结构。内部有4个40位的基本逻辑单元(A单元、D单元、P单元和I单元),4个40位的累加器, 2个1717的乘法器;2)
28、有6条内部总线。1条程序总路线、3条内部数据/操作数读总线、2条内部数据/操作数写总线;3) 3.33ns指令周期,工作于300MHz主频;4) 16KB指令缓存(I-Cache);5) 每指令周期执行单/双指令;6) 双乘法器,最多每秒钟可以执行600M条乘累加(MMAC);7) 两个算术逻辑单元(ALU);8) 内部集成了维特比加速器,用于提高维特比编译码的速度。3. TMS320C5501的片上外设1) 6通道直接内存访问(DMA)控制器;2) 2个多通道续存串口(McBSP);3) 可编程模拟锁相环(APLL);4) 通用I/O(GPIO)引脚和一个专用输出引脚(XF);5) 8-Bi
29、t主机接口 (HPI);6) 4 个定时器,包括2个64位通用定时器;7) 64位可编程看门狗;8) 64位DSP/BIOS计数器。4.TMS320C5501的芯片封装该芯片采用LQFP(Low-profile Quad FlatPack)封装,有176个引脚,脚间距为0.5 mm,封装俯视图如图11-5所示。图11-5 TMS320VC5501的芯片封装11.2.2 TMS320C5501的主机接口(HPI)1.TMS320C5501主机接口HPI组成DSP芯片中的HPI(主机接口)是为了满足DSP与其它微处理器接口而专门设计的。它分为HPI-8和HPI-16,分别针对具有8位和16位数据线
30、的单片机。每一种又分为标准型和增强型,两者的区别在于标准型只可以访问固定的地址空间,而增强型可以访问整个DSP的片内存储器。HPI主机由以下几个部分组成: 9) HPI存储器(DARAM)。HPI RAM主要用于DSP与主机之间传送数据,也可以用作通用的双寻址数据RAM或程序RAM。 10) HPI地址寄存器(HPIA)。它只能由主机对其直接访问,该寄存器中存放着当前寻址的HPI存储单元的地址。 11) HPI数据锁存器(HPID)。它也只能由主机对其直接访问,如果当前进行读操作,则HPID中存放的是要从HPI存储器中读出的数据; 如果当前进行写操作,则HPID中存放的是将要写到HPI存储器的
31、数据。 12) HPI控制寄存器(HPIC)。DSP和主机都能对它直接访问。13) HPI控制逻辑。用于处理HPI与主机之间的接口信号。HPI有两种工作方式: 14) 共用寻址方式(SAM),这是常用的操作方式。在SAM方式下,主机和DSP都能寻址HPI寄存器,异步工作主机的寻址可以在HPI内部得到同步。如果DSP与主机的周期发生冲突,主机有优先权。 15) 仅主机寻址方式(HOM)。在HOM方式下,只能让主机寻址HPI存储器,DSP则处于复位状态或所有内部和外部时钟都停止的IDLE2空转状态(最小功耗状态);下面主要介绍TMS320VC5501与C8051F340的连接及通信协议。标准HPI
32、口是一个8位并行接口,可以用来实现和主设备或者处理器接口。双方通过共享TMS320VC5501的片上处理器完成通信。单片机为主控部分,采用端口方式直接访问HPI口。HPI口主要由地址寄存器(HPIA)、控制寄存器(HPIC)、数据寄存器(HPID)、HPI存储器和HPI控制逻辑组成。对单片机进行读和写需要三个步骤:设置控制寄存器,写地址寄存器,读写数据寄存器。在寄存器读写过程中,单片机通过端口发送控制信号,检测状态信号,完成对HPI口访问的时序模拟。TMS320VC5501的HPI接口内部逻辑电路如图11-6所示。图11-6 HPI接口内部逻辑电路2. HPI设计原理框图一般采用共用寻址方式(
33、SAM)。在SAM方式下主机和DSP都能访问HPI存储器,整个通信过程以各部分状态的变化来推进。DSP和单片机通过向对方发送中断,通知对方数据已经准备好,再通过检测对方设置的状态,判断对方是否准备好接收数据。图11-7是单片机和TMS320VC5501 DSP的HPI接口硬件连接电路原理框图。 图11-7 单片机和TMS320VC5501的HPI接口硬件连接电路原理框图3.HPI时序图图11-8是HPI逻辑时序图。根据该逻辑时序图可以对DSP进行编程,完成其与主机的通信。工程包含的信息也将被载入。图11-8 HPI时序图11.3音频编解码器TLV320AIC32TLV320AIC32是该音频系
34、统的子系统,本系统为什么要选用TLV320AIC32,简单来说有以下几个原因:16) TI公司的新产品,可以获得大量的技术支持及软件支持,甚至可以获得免费样片(如果运气好的话);17) 与TMS320C55x系列DSP兼容性好,兼容McBSP接口,它们是都是TI公司的产品;18) 有完整的C程序库函数和驱动程序可供调用(虽然还存在一些BUG),以及一个基于JAVA图形界面的配置工具AIC3X Configuration Tool,TI内部编号:SBAA148;但是选用该芯片的最困难之处就是它的QFN封装,是无引脚封装,非常小,在后面的章节会详细说明。11.3.1 TLV320AIC32纵览TL
35、V320AIC32是一个带立体声耳机放大器的低功耗立体声音频转换器,它有多个输入和输出,可以用程序设置为单边或差分模式。该转换器具备大量的电源管理控制寄存器,在3.3V模拟电源电压下,它可以仅仅用14mW的功耗提供48kHz采样率的数模回放(Playback),这使得它特别适用于电池供电的便携音频和电话应用。TLV320AIC32的录音通路(Record path)包括了集成麦克风偏置输出、数字控制的立体声麦克风前置放大器(Pre-amp)和自动增益控制器(AGC),它们都具有混音/多路选通(MUX)功能,可以在多个输入端口之间切换和混音。它的回放通路(Playback path)也具有混音/
36、多路选通(MUX)功能,可以在DAC输出和被选择的多个输入端口之间切换和混音,这些信号经过可编程音量控制器,最后被输出到多种输出端口。TLV320AIC32还包括了4个功率输出驱动器(High-power output driver)和2个全差分线性输出。功率输出驱动器可以驱动若干种不同形式的负载,这包括4个声道的16单边交流耦合的耳机或16无电容(Capless)耳机输出模式。除此之外,一对功率驱动器可以用来驱动推挽(BTL)模式的8扬声器,在此配置下可以达到每声道500mW的输出功率。立体声音频DAC支持从8kHz到96kHz的采样频率,并且在DAC的通路上提供了可编程数字滤波器,可以用来
37、在32kHz、44.1kHz和48kHz的采样频率下提供3D、低音(Bass)、高音(Treble)、中音(Midrage)、均衡器(Equalization)和去加重(De-emphasis)等数字特效。立体声音频ADC同样也支持从8kHz到96kHz的采样频率。为了调节录音音量,在ADC之前的通路上设有可编程增益放大器(PGA),能提供最大+59.5dB的模拟增益,可用于放大麦克风的低电平输入信号。串行控制总线支持I2C协议,串行音频数据总线则可以采用I2S、左/右对齐、DSP(McBSP)和TDM模式。为了得到准确的时钟,此芯片还集成了一个可高度编程的锁相环(PLL),可以从各式各样的M
38、CLK主时钟输入,生成出适合采样频率的时钟。MCLK的输入频率范围可以低至512kHz,高至50MHz,尤其重视常用的系统时钟频率如12MHz、13MHz、16MHz、19.2MHz和19.68MHz。TLV320AIC32的模拟电源电压范围是2.7V3.6V,数字核心电源电压的范围是1.525V1.95V,数字I/O电源电压的范围是1.1V3.6V。以下是该芯片的内部结构简图。图11-9 TLV320AIC32内部结构简图11.3.2 TLV320AIC32芯片封装及引脚及其定义1. TLV320AIC32芯片封装目前该芯片的唯一封装为5x5mm,32脚QFN封装,这属于晶片尺寸级封装(Ch
39、ip Scale Package)。无脚(Lead-less)的意思是没有露在外边的引脚线(Lead),而引脚盘(Pad)都在芯片的底部,所以在芯片的正面看上去好像没有引脚。芯片下方的中心还设有一个正方形的热引脚盘(Thermal Pad),是一块正方形的金属片,与芯片的核心(Die)紧紧连接,用于提高芯片的散热性能。这种封装芯片的好处是占用PCB面积小,散热性能良好。但是焊接的难度也大大增加,给设计者带来了很大的麻烦。在整个系统中,这款芯片是手工最难焊接的。图11-10(a) QFN-32封装的引脚图11-10(b) QFN-32的尺寸(mm)2. TLV320AIC32芯片引脚及其定义TL
40、V320AIC32的引脚原理图和定义请参见图11-11和表11-3。芯片共有32个引脚(外加一个中心散热盘,在原理图上标记为33脚),在功能上大致可以分为:1) 电源:包括数字核心电源(32)、数字I/O电源(7)、模拟驱动电源(18,24)、 模拟转换器电源(25)、数字接地(6)和模拟接地(17,26,21);2) 音频输入:包括3对(6个)单边输入声道,每对都由左和右组成, (10, 11, 12, 13, 14, 16),外加一个麦克风偏置输出(15),用于对驻极体麦克风提供约1mA的偏置电流;3) 音频输出:包括两对差分功率输出,左+(19),左-(20),右+(23),右-(22)
41、,以及两对差分线性输出,左+(27),左-(28),右+(29),右-(30);4) 控制总线:采用I2C总线,包括串行同步时钟SCL(8)和串行数据SDA(9);5) 时钟和数据:包括主时钟MCLK(1)、位时钟BCLK(2)、字时钟WCLK(3)、音频数据输入(4)和音频数据输出(5)。图11-11 TLV320AIC32的引脚图表11-3 TLV320AIC32的外部引脚表引脚号名称电气类型引脚定义1MCLK输入主时钟输入Master clock input2BCLK输入/输出音频串行数据总线位时钟输入/输出Audio serial data bus bit clock input/ou
42、tput3WCLK输入/输出音频串行数据总线字时钟输入/输出Audio serial data bus word clock input/output4DIN输入音频串行数据总线数据输入Audio serial data bus data input5DOUT输出音频串行数据总线数据输出Audio serial data bus data output6DVSS电源数字核心 / I/O接地 0 VDigital core / I/O Ground Supply 0 V7IOVDDt电源数字I/O电源 1.13.6VDigital I/O voltage supply 1.13.6V8SCL输入
43、I2C串口时钟输入I2C serial clock input9SDA输入/输出I2C串口数据输入/输出I2C serial data input/output10MIC1L/LINE1L输入左声道1输入 Left input 111MIC1R/LINE1R输入右声道1输入 Right input 112MIC2L/LINE2L输入左声道2输入 Left input 213MIC2R/LINE2R输入右声道2输入 Right input 214MIC3L/LINE3L输入左声道3输入 Left input 315MICBIAS输出麦克风偏置电压输出Microphone bias voltage
44、 output16MIC3R/LINE3R输入右声道3输入 Right input 317AVSS1电源模拟ADC电源接地 0VAnalog ADC ground supply 0 V18DRVDD电源模拟ADC驱动输出级电源电压 2.73.6VAnalog ADC and output driver voltage supply 2.73.6V19HPLOUT输出功率输出驱动(左声道+)High power output driver (left +)20HPLCOM输出功率输出驱动(左声道- 或多功能)High power output driver (left - or multi-fu
45、nctional)21DRVSS电源模拟ADC驱动输出级电源接地0 VAnalog output driver ground supply 0 V22HPRCOM输出功率输出驱动(右声道- 或多功能)High power output driver (right - or multi-functional)表11-3 TLV320AIC32的外部引脚表(续)23HPROUT输出功率输出驱动(右声道+)High power output driver (right +)24DRVDD电源模拟ADC驱动输出级电源电压 2.73.6VAnalog output driver voltage supp
46、ly 2.7V3.6V25AVDD电源模拟DAC电源电压 2.73.6V Analog DAC voltage supply 2.7V3.6V26AVSS2电源模拟DAC电源接地0 VAnalog DAC ground supply 0 V27LEFT_LOP输出左声道线性输出(+) Left line output (+)28LEFT_LOM输出左声道线性输出(-) Left line output (-)29RIGHT_LOP输出右声道线性输出(+) Right lineo output (+)30RIGHT_LOM输出右声道线性输出(-) Right line output (-)31RESET输入复位(低电平有效) Reset (Low active)32DVDD电源数字核心电源电压1.525V1.95VDigital core voltage supply 1.525V1.95V简易音频播放/处理系统硬件实物主板相片如图11-12所示。图11-12 硬件实物主板(正面)附录A 简易音频播放/处理系统的核心程序清单A.1 DSP&HPI主机接