TI中文支持网
TI专业的中文技术问题搜集分享网站

PurePath Studio的算法库是在哪里更新的?

我用AIC3254一段时间了,发现PurePath Studio里面的算法库算法很少。之前我看资料曾经说过算法库是定期更新的,请问在哪里更新呀?我现在只想找那个混响延时算法,就是MIC输入,加混响和延时效果之后再输出。

第二个问题:AIC3254可以同时处理和输入的独立通道太少了,只有两个模拟独立声道。是否能够有其他办法可以扩展?做到同时处理多个独立声道音频信号

Frank Pan:

Tiger,

1)你可下载新的Purepath Studio。新版软件会有些新加的库;AIC3254内部的RAM很有限,用于麦克风混响和延时多半不够用。

3)AIC3254内部只有两路ADC,对于多路输入的模拟信号,一旦经过ADC前的mixer,就变成两路了,故无法对多路模拟信号进行处理。  如果在AIC3254之前加个ADC3101,把模拟变成I2S后输给AIC3254, 加上AIC3254内部的ADC,总共可以处理4路模拟信号。如果再更多路,只能用多片AIC3254处理了。

Best Regards

Frank Pan

 

Tiger1:

回复 Frank Pan:

好的,我明白了。谢谢你的解答。关于Purepath Studio,我还有一些问题,就是生成代码的问题。用Purepath Studio生成代码之后,发现有些算法库在代码文件中并没有提供数据更新的接口。唯一提供了数据更新接口的就只有音量控制那个部件。这让我使用起来感觉非常麻烦,因为我需要从庞大的Coefficient RAM数组中找到需要更新的Coefficient RAM地址和数据。这感觉非常悲催。而从miniDSP Codec 初始化方法及示例代码 这资料中,说到的是在生成的代码文件中会提供部件的控制接口的,实际中我并没有发现。只有音量控制部件中才有,这是为何呢?

Frank Pan:

回复 Tiger1:

如上图,红框内显示的是元件的I2C起始地址。一个元件可有多个控制I2C地址,可点击鼠标右键从“help”中查找到I2C的具体地址。

也可从那个“tools/components interface overview" 查看I2C地址。

有些元件不需要控制接口,如mux元件等。

 

Best Regards

Frank Pan

Tiger1:

回复 Frank Pan:

非常感谢您。您提供出来的I2C这个接口我曾经也注意过,不过因为我一直使用的都是SPI控制接口,所以我就没再留意那些信息。请问,那个IC2提供的地址和SPI接口控制地址是一样的吗?我感觉应该是一样的,呵呵,就是想确认一下。最后我还有一个疑问就是,比如您上面列出的那个例子,那个GEQ_5_1部件,有五段音调,每一段都有多个对应的地址和数据,这些地址和数据Purepath Studio是否能够产生一个文件来提供?而不是在软件界面上面列出来,因为嘛,最终我们写程序都必须要把这些地址和数据写到文件上面,如果Purepath Studio能够产生这样一个文件,那么我们的工作量就能够大大地减少了。我疑问的就是在这里!因为我一直使用Purepath Studio产生的驱动文件,并没有发现这一类的信息。唯一有这些信息的,就只有音量控制部件,我截图给您看一下

这就是在资料手册中提到的信息。除了音量控制部件,其他部件在驱动头文件中并没有“接口段"部分。也就是没有提供控制接口,真的很郁闷。我之前都是从庞大的数组中寻找的。

Frank Pan:

回复 Tiger1:

在软件tools\components interface overview会弹出下面所示的界面,汇总列出了下图所示的元件的地址。

Best Regards

Frank Pan

Tiger1:

回复 Frank Pan:

好的,非常感谢。我研究一下,

Tiger1:

回复 Frank Pan:

您好。专家啊,你回答问题不完整哇。我研究过了,我发现确实可以找到系数内存的地址。那么第二个问题你就没回答了,第二个问题,例如一个音量控制组件,我设计的音量变化范围是-30->0->+30dB,1dB步进。那么,按照TI所提供的方法,每一次更新音量组件的音量级别数据,它就必须重新编译并产生一个驱动文件。这是非常不科学的,我很讶异一直领先科学前沿的TI,而且各个产品都无比优秀并且都充分考虑了用户的使用和方案,力求让用户用最短的时间做出最优秀的产品的TI,在 PurePath Studio这个开发软件上面会留下这么明显的缺陷。所以我严重怀疑是否还有我不清楚的 功能呢?我的意思是说,上面那个音量控制组件,能不能按照我的要求和设置,自动生成各个音量级别的系数数组文件? 这样我们这些使用者就不需要一个个地复制和制作那个庞大的数组,另外我建议TI可以参考一下ADI的做法,ADI对它们的产品各个系数都列出有详细的公式,比如上面所说的音量控制组件,它的控制系数是如何计算出来的呢?如果TI能够提供这方面完善的资料,相信TI的优势是无可超越的。ADI最比不上TI的就是它们的产品方案,没有提供完善详细的设计资料,而这方面TI做得非常好,所以 任何情况下我都愿意考虑和选择TI。先谢谢你了啊专家,麻烦帮我看看这个问题是怎么回事。

Frank Pan:

回复 Tiger1:

很佩服你作为工程师的探索精神!

但问题远比你想象的复杂。

你用鼠标右键点击音量元件,选择help,打开help文件,里面有一个音量~系数表。你把需要的系数写进音量元件的I2C地址就可控制音量了。比如,你要调节音量到-20dB,你只要把0x666666写入音量I2C地址就可以了。控制音量只要根据自己的需要用这个系数表建立自己的查找表就可以了。

另外,控制音量还可以用DAC音量进行控制。缺点是没有miniDSP音量元件控制范围大,优点是 不占用miniDSP的资源。

Best Regards

Frank Pan

Tiger1:

回复 Frank Pan:

专家,您好。您说的方法我都一直在用,问题就是有很多部件在帮助文件中没有提供系数表的。我需要从庞大的系数数组中,抽取各个控制级别的控制系数值出来,然后再组成另外一个数组,供程序来调用。所有的时间都花在这上面了,感觉非常郁闷和枯燥。今天我又发现了一个问题了,在I2C组件接口界面中,有些部件列出的I2C页地址和起始寄存器地址好像是错的。

专家,请看,这是软件给出的地址。下面我上传在软件生成的 驱动文件  中的地址

I2C页地址没有在上面的图中,I2C的页地址在驱动文件中 是11  .也就是说,无论是页地址还是寄存器地址,那个I2C组件接口界面列出来的和生成的驱动文件中的是不一样的 。请问到底怎么办哪         

Frank Pan:

回复 Tiger1:

Tiger,

好像没有这么麻烦。下面是我使用过的调音量的代码。 其中的查找表就是从volume元件的help提供的表得到的。/* ******************************************************************************* *//* 32 stage volume: 6dB, 4dB, 2dB, 0dB, -2dB, -4dB,…-56dB */     const char DAC[] = { 0x00, 0x19, //-56dB 0 0x00, 0x20, //-54dB 1 0x00, 0x29, //-52dB 2 0x00, 0x33, //-50dB 3 0x00, 0x41, //-48dB 4 0x00, 0x52, //-46dB 5 0x00, 0x67, //-44dB 6 0x00, 0x82, //-42dB 7 0x00, 0xA3, //-40dB 8 0x00, 0xCE, //-38dB 9 0x01, 0x03, //-36dB 10 0x01, 0x46, //-34dB 11 0x01, 0x9B, //-32dB 12 0x02, 0x06, //-30dB 13 0x02, 0x8C, //-28dB 14 0x03, 0x35, //-26dB 15 0x04, 0x09, //-24dB 16 0x05, 0x15, //-22dB 17 0x06, 0x66, //-20dB 18 0x08, 0x0E, //-18dB 19 0x0A, 0x24, //-16dB 20 0x0C, 0xC5, //-14dB 21 0x10, 0x13, //-12dB 22 0x14, 0x3D, //-10dB 23 0x19, 0x7A, //-8dB 24 0x20, 0x13, //-6dB 25 0x28, 0x61, //-4dB 26 0x32, 0xD6, //-2dB 27 0x40, 0x00, //0dB 28 0x50, 0x92, //2dB 29 0x65, 0x6E, //4dB 30 0x7F, 0xB2 //6dB 31 }; void SetVolume(int nVolume) {  unsigned char mstVolume[2];   mstVolume[0]=DAC[2*nVolume];  mstVolume[1]=DAC[2*nVolume+1];   I2C_singleWrite(PCM3070_Device_Address,0x00, Page_Volume);    I2C_multiWrite(PCM3070_Device_Address, Reg_Volume, 2, mstVolume);     Switch_ADC_Buffer();    I2C_singleWrite(PCM3070_Device_Address,0x00, Page_Volume);   I2C_multiWrite(PCM3070_Device_Address, Reg_Volume, 2, mstVolume);}  

从生产的h文件中一个个去找系数还没尝试过,应当不需要这么麻烦。你能把PPS文件上传吗?你需要的是那个元件的系数?我印象中需要提供系数的元件,在help文件中都有系数表,不需要从生成的h文件中去找。

Best Regards

Frank Pan

赞(0)
未经允许不得转载:TI中文支持网 » PurePath Studio的算法库是在哪里更新的?
分享到: 更多 (0)