TLV320AIC23的应用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TLV320AIC23的应用相关的知识,希望对你有一定的参考价值。

参考技术A

TLV320AIC23的应用:
基于DDK的TLV320AIC23型编解码器的驱动设计
DSP/Bios Driver Developer’s Kit(DDK)是TI为简化驱动程序开发为TMS320系列DSP及其EVM板等提供的驱动程序开发套件。该套件为TMS320系列各种外围器件提供完整的标准化驱动程序模型,使得驱动程序可以很方便地移植到其他应用中,大大提高驱动程序开发的效率。DDK是对每种TMS320系列DSP都提供的芯片支持库(Chip Support Library—CSL)的补充,CSL提供对外围器件寄存器配置及初始化等的低级控制,DDK完全通过CSL来对外围器件进行控制。简单地说。DDK建立在CSL上层.所以用DDK来开发驱动程序将更为快捷且可移植性更好。
DDK为开发驱动程序定义了标准模型和一系列的API。为简化程序设计。标准模型又被分为二个层次.其中高层称为Class driver,低层称为Mini—driver。Class drivei与器件相对独立.完成诸如缓冲区管理和请求同步等功能.同时扮演着与API和Mini—driver二者接口的角色。Mini—driver完成特定的器件初始化和控制功能.它符合IOM(I/O Mini—driver)的接口标准。DDK的这种分层结构使得驱动开发人员仅需了解单一的Mini—driver API就可以完成整体外围器件的驱动设计,而且这一过程比设计整个驱动程序要简单得多,因为Class driver控制了缓冲区管理和同步等。DDK提供3种Class driver.分别为SIO/DIO、PIP/PIO和GIO,它们都可以和任何Mini—driver结合使用。
2 TLV320AIC23的驱动设计基础
DDK的标准模型结构如图1所示。高层的应用和底层驱动相互没有直接的关联,开发中只需通过Class driver控制Mini—driver。
下面以DM642 EVM板为例.说明基于DDK的TLV320AIC23的驱动程序设计方法。
首先,需要使用配置工具建立驱动程序的入口。在DSP/BIOS con_fig下的cdb文件中.依次选择In-puffOutplut---Deviee Drivers→User→defined Drivers.在这些例程中一般已经添加了udevCodec.如果需要的话,用户可以自行添加或编辑。右键单击选择Properties选项来编辑其属性,其属性应设置如下:
Comment:可以加入自己的注释
lnit function:键入EVMDM642_EDMA_AIC23一init
Function table ptr:键入 EVMDM642_EDMA_A-IC23一Fxn8
Function table type:选择IOM_Fxns
Deviceid:该项会被自动忽略.因为DM642 EVM板上只有一块TLV320AIC23
Device params ptr:TLV320AIC23参数结构的入口指针.使用缺省参数时设为0x0
Device global data ptr:必须设置为OxO
正确配置驱动程序入口后.就要按照需要设置相关的参数。下面具体讨论TLV320AIC23参数的设置。
TLV320AIC23的参数结构体原型如下:
typedef struct
在一般应用中。上述结构体的大多数参数无需更改,需要修改的主要是aie23Config.它是TLV320AIC23控制寄存器值.需要通过它来控制TLV320AIC23的工作模式、输入/输出选择、采样率等重要参数。
除了复位寄存器外.TLV320AIC23共有9个控制寄存器.每个寄存器控制字长为9bit.地址位为7bit,共有16bit。地址位为高7位而控制字在低9位。具体如下:
Register0:左声道输入音量控制,缺省值为 0x0017
Register1:右声道输入音量控制,缺省值为 0x0017
Register 2:左声道输出音量控制。缺省值为Ox01F9
Register 3:右声道输出音量控制,缺省值为Ox01F9
Register 4:模拟音频通道设置.缺省值为Ox0011
Register 5:数字音频通道设置。缺省值为0x0000
Register 6:节电模式控制.缺省值为0x0000
Register 7:数字音频接口格式控制,缺省值为0x0043
Register 8:采样率控制,缺省为48kHz,对DM642EVM板.缺省值为Ox0002
Register 9:数字音频接口激活开关.缺省值为0x0001
通常情况下需要修改的寄存器包括4号和8号寄存器.即选择是由mic输入还是由line in输入和根据需要选择采样率。这2个寄存器的详细配置如下:
4号寄存器配置见表1,其中,D2位。INSEL(In-put select for ADC)是输入选择,“O”为line in;“l”为mic.D1位MICM(Microphone mute)是mic静音开关.为“l”表示静音。DO位MICB(Microphone boost)如设置为“1”将为mic输入提供20dB的增益。8号寄存器配置见表2,其中,采样率控制位为D5~D2的SR[3:O]。对于DM642 EVM板,设置方式见表3。
可见.需要通过4号寄存器的D2来选择输入,同时考虑Dl和DO对mic的控制;采样率的控制通过设置8号寄存器的SR[3:0]来实现。
3 TLV320AIC23的驱动配置方法
很多初学者在运行DM642 EVM的echo或其他音频例程时,最容易碰到的问题是通过line in输入时有输出.而通过mic输入时没有输出,更不要说改变采样率了。即使参考资料编辑aic23-h和emvdm642_edma_aic23.h修改Dcfauh参数仍然无法解决。
出现这样的问题时。首先要了解TLV320AIC23的模拟音频输入为mic和line in二选一的,其次要知道如何能够正确配置TLV320AIC23的参数使之满足特定应用的需要。如果仔细分析echo例程和其他音频例程的话,可以发现只有在echo例程中包含了aie23.h和emvdm642_edma_aie23.h 2个头文件。其实在echo例程中.所包含的这2个头文件和TLV320AIC23的初始化语句实际并未使用。如果屏蔽掉对这2个头文件的包含以及TLV320AIC23的初始化语句,会发现编译后仍然能够正常运行。实际上echo例程中的TLV320AIC23初始化语句只是提供了对Ⅱ,V320AIC23进行配置的一种方法而并未直接使用。该方法在DDK包的emvdm642部分说明文件中也已提及。
由于在echo例程中初始化驱动程序人口和其他的音频例程一样使用了默认参数,而默认参数是通过调用DDK包中的evmdm642_edma_aic23.164库获得的.该库不变则配置也不变,于是就会出现上述问题。
在明确了以上原理后.通过实践证明,本文提供的以下三种配置方法可以适应各种应用。
方法一
既然默认参数是通过调用evmdm642_edlna_a-ic23.164库获得的.那么自然可以通过修改该库来达到修改参数的目的。TI提供的DDK包中包含了各种库的源代码.这使得修改库文件成为可能。本文用到的库生成工程是tiddksrc\\audio\\evmdm642目录下的evmdm642_edma_mc23_64.pjt,只需要打开该工程.修改其中aic23.h中的默认参数,重新编译就能生成新的库文件。这样,所有的音频例程都会默认按修改过的参数运行。
这种方法适合TLV320AIC23参数配置相对固定的应用场合。配置完全通过调用evmdm642_ed_ma_aic23.164库初始化时进行.不用在应用工程文件中添加任何附加代码.使得工程文件更简洁.可移植性更高。
方法二
自定义符合标准结构EVMDM642_EDMA_A.IC23一DevParams的结构体,例如:
然后将“_myParms”作为Device params ptr在指定人口指针时替代默认的0x0。这就符合TI推荐的方法,在echo例程中的相关代码也说明了这种方法。
这种方法能够适应几乎任何使用情况,初始化参数自定义非常明确,代码易读性较高。但是不建议像echo例程中那样直接包含默认参数的头文件.最好参照该头文件定义自己的结构体。
方法三
通过仔细分析生成evmdm642_edma_aic23.164库的源代码,可以发现对TLV320AIC23寄存器的设置是通过AIC23_setParams()函数来完成的。在大多数情况下,只要修改寄存器值而不必修改标准结构EVMDM642_EDMA_AIC23_DevParams结构体中的其他变量。所以可以调用AIC23_setParams()函数来完成对TLV320AIC23参数的配置。这样就只需要定义1个符合标准的寄存器数组.将数组名作为参数来调用AIC23_setParamsf()函数就可以达到目的。
这种方法使用灵活,代码长度很短,含义非常明确,可以用不同参数多次调用.尤其适用于TLV320AIC23参数可变的特殊场合。
在实际工作基础上对TLV320AIC23参数配置提出了3种方法,各有特点且都十分实用。在进行基于DDK的TLV320AIC23驱动程序设计时.可以根据需要方便地选用。

向应用添加应用内购买会影响已购买该应用的用户吗?

【中文标题】向应用添加应用内购买会影响已购买该应用的用户吗?【英文标题】:Will adding in-app purchases to an app affect users who already bought it? 【发布时间】:2011-10-18 17:34:19 【问题描述】:

我有一个要添加应用内购买的应用。

我的问题是这样的。该应用程序使用我的其他几个应用程序使用的开发和分发证书,这些应用程序没有应用内购买。

由于我现在要添加应用内购买,因此我必须更改此应用的 APP ID,以便为应用内购买创建配置文件。此更改会以任何方式影响应用程序吗?我的意思是,我能否使用另一个 AppID 生成的不同临时配置文件上传新的二进制文件?老用户还能升级吗?

【问题讨论】:

【参考方案1】:

您的应用必须具有相同的捆绑包 ID。它是 Info.plist 文件中的字符串。如果保持不变,用户升级将没有问题。

如果我正确理解了您的问题,您在首次提交此应用程序时有一个通配符分发配置文件?只要新的配置文件仍然与 Info.plist 中的包 ID 匹配,就可以。

【讨论】:

是的,我有一个通配符分布配置文件。我现在需要做的是使用这个新的 AppleID 创建一个新的 AppID 和一个新的开发人员/分发配置文件,并将其绑定到旧应用程序。我的问题是要知道这种结构变化是否会影响用户。显然,我会保持捆绑 ID 不变。谢谢。 其实是很常见的情况,不用担心;)【参考方案2】:

您可能在我们提供应用内购买或推送通知服务之前创建了一个应用 ID。也许您认为自己不需要这些并想要创建一套类似的应用程序。现在你想要这些功能。

假设您的应用 ID 为:

com.mycompany.appsuite.*

您的应用的捆绑包 ID(在 plist 和其他地方)是:

com.mycompany.appsuite.mycoolapp

为了能够更改应用内购买或推送通知的应用 ID,那么您应该去 developer.apple.com 配置门户添加一个新的应用 ID:

com.mycompany.appsuite.mycoolapp

此 App ID 与您的 Bundle ID 相匹配,因此您的用户无需重新购买您的应用,而且它还使您的应用符合应用内通知或推送通知的条件。

【讨论】:

+1 好东西。知道这如何适合应用内购买的测试过程吗?我需要切换到非通用 App ID,但是……我是否需要等到我的应用上传后才能测试现有捆绑包的应用内购买?谢谢!

以上是关于TLV320AIC23的应用的主要内容,如果未能解决你的问题,请参考以下文章

根据dts文件compatible字段查找对应驱动源文件

根据dts文件compatible字段查找对应驱动源文件

根据dts文件compatible字段查找对应驱动源文件

TLV320ADC3101这颗立体声 ADC芯片分析体验及总结

基于DSP的声反馈抑制系统的研究与实现_爱学术——免费下载

转载看懂通信协议:自定义通信协议设计之TLV编码应用