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

TLV320AIC3101: page1的寄存器无法写入正确的值

Part Number:TLV320AIC3101Other Parts Discussed in Thread:TLV320AIC3104,

你好:

如题,我们想开启高通滤波器,需要在register 65和register 72分别写入相应的值,但是读出来的值是错误的,具体如下图所示。

看SPEC65和72的值应该是没超出范围的,所以不太明白是什么原因。期望回复,谢谢

Amy Luo:

您好,

您是按照下面顺序启用滤波器吗

1. 加载系数 N0, N1, D1 to Page 1 / Register 65 – 70 and Page 1 / Register 71 – 76

2. 选择可编程系数 (Go to Page 0 / Reg 107, and Set D7 = 1 and D6 = 1)

3. 启用ADC高通滤波器 ( Go to Page 0 / Register 12, you can set D7-D6 to 01, or 10, or 11). 

,

TIGER LIU:

你好,

是的,我是完全按照下面顺序操作的。目前的情况是,值可以写进去了,但是有些值必须写两遍(比如register65,第一次写0x7e读成ox7f,第二次可以正确读出来)。但是,我发现按这个操作开启高通滤波器,噪声反而明显变大了(在我另外提的一个问题,在EVM上也有类似情况:download完N0\N1\D1系数,点击开启ADC的时候,噪声反而变大了)。

因此,我的疑问是:1)要如何才能知道高通滤波器是否正确开启,我检查了好几遍寄存器,确认值是改好了的;2)能否提供个默认的N0\N1\D1的值给我们试一下,因为我不确定我算出来的对不对,如下图所示请帮忙看下;3)如果是我们设置的不对,导致无法开启高通滤波器,有没有可以排查的方向。

期望回复,谢谢

,

Amy Luo:

读取寄存器值仅是读取滤波器系数寄存器值时需要写2遍才可以,还是其他的寄存器也是这种情况?用示波器看下I2C通信波形是否存在干扰或其他异常?

,

TIGER LIU:

读取滤波器系数寄存器值时需要写2遍才可以,其他的寄存器没出现这种情况

,

Amy Luo:

TIBQ工具生成的应该是正确的系数,加载系数后,您是否配置的是 page 0, register 12, bits D7-D4 ,因为我上面回复落掉了D4-D5

使用默认系数的话,是将寄存器 page 0 register 107, bit D7-D6设置为00

您可以用示波器检查I2C通信波形吗,以查看为什么需要写入2遍,以确保通信波形没有问题,确保写入正确

,

TIGER LIU:

1)我使用TIBQ计算出来的系数,应该就不用默认系数了吧,那么page 0 register 107, bit D7-D6我是设置为11的。

2)page 0, register 12, bits D7-D4这个跟我计算出来的N0N1D1系数是不是矛盾的呀,这不是根据Fs来确认了Fc吗,那我N0N1D1系数本来也是用来确认Fc的吧

3)目前的情况就是,能正确读出值,但是开启高通滤波器的指令只到第二步(就是配置107)就生效了,第三步(就是配置12)噪声会明显变大。

,

Amy Luo:

1、

TIGER LIU 说:2)能否提供个默认的N0\N1\D1的值给我们试一下,因为我不确定我算出来的对不对,

使用默认系数的话,是将寄存器 page 0 register 107, bit D7-D6设置为00

2、关于page 0, register 12, bits D7-D4,请忽略此寄存器中的-3dB频率选择,因为在可编程情况下,实际-3dB频率由系数决定。

3、

TIGER LIU 说:但是开启高通滤波器的指令只到第二步(就是配置107)就生效了

就生效了,是什么意思?有什么现象?

,

TIGER LIU:

Amy Luo 说:使用默认系数的话,是将寄存器 page 0 register 107, bit D7-D6设置为00

不想使用默认系数,所以我在TIBQ上勾选了200Hz的High pass Filter,计算出来的系数是N0=7E32,N1=81CE,D1=7C66;

Amy Luo 说:就生效了,是什么意思?有什么现象?

我们目的是想降风噪。我在机器上先录一段声音,然后通过指令将N0,N1,D1写进去,然后再page 0 register 107, bit D7-D6设置为11,到这一步,录出来的声音就被过滤掉一些了,所以我认为是生效了。然后按照指引再去配置page 0, register 12, bits D7-D4时,录出来的声音反而更大了,甚至比一开始还打。

,

TIGER LIU:

Amy Luo 说:关于page 0, register 12, bits D7-D4,请忽略此寄存器中的-3dB频率选择,因为在可编程情况下,实际-3dB频率由系数决定

你好,这句话可以理解为page 0, register 12, bits D7-D6,D5-D4不管是设置成01、10、11都没影响吗?都是由系数决定。

 

,

Amy Luo:

您可以把您录的声音和寄存器配置发给我吗?

,

TIGER LIU:

可以的,请帮忙看下。

目的:开启高通滤波器,降低风噪

1,使用TIBQ计算出200Hz高通滤波器对应的系数:N0=0x7E32、N1=0x81CE、N0=0x7C66

2,通过串口连接方式,使用secureCRT发送指令开启高通滤波器

1)写page1 skl_device -P "0x00,0x01;"2)加载系数 register left65-70 L channel 200Hz单击此处播放此音频剪辑
(function(id)
{var v = document.getElementById(id);var op = v.style.position, ol = v.style.left, or = v.style.right, fe = [],checkVideo = function() {if (!v.canPlayType || v.error) {while (v.childNodes.length > 0) {v.parentNode.insertBefore(v.childNodes[0], v);}v.parentNode.removeChild(v);} else if (v.readyState == 0) {window.setTimeout(checkVideo, 249);}},checkVideoRendered = function() {if (v.networkState == 1 && v.readyState == 4) {v.style.position = op;v.style.left = ol;v.style.right = or;for (var i = 0; i < fe.length; i++) {fe[i].parentNode.removeChild(fe[i]);}} else {window.setTimeout(checkVideoRendered, 249);}}if (navigator.userAgent.indexOf('iPad') == -1 && navigator.userAgent.indexOf('iPhone') == -1 && navigator.userAgent.indexOf('iPod') == -1) {window.setTimeout(checkVideo, 249);}
})('a_0c3b033f6b8b42f99e89a2a9665491b9');skl_device -P "0x41,0x32;0x42,0x7e;" N0skl_device -P "0x43,0xce;0x44,0x81;" N1skl_device -P "0x45,0x66;0x46,0x7c;" D13)写page0skl_device -R "0x00,0x00;"4)选择使用可编程系数 register 107skl_device -R "0x6b,0x80;" L channel5)启动滤波器 register 12skl_device -R "0x0c,0xc0;" L channel

ps:我现在想实现L、R ADC分别对应两个不同位置的mic,做到一个mic开启HPF,另外一个可以不开HPF,

所以这个指令我是把L channel的系数配置了上去,R channel的没有。但目前没有实现。

3,将录的声音放到goldwave查看

,

Amy Luo:

对于这个问题,我咨询了美国的资深工程师,他说“

If loading the coefficients activated the user HPF then ignore the last step.

Likely it automatically enables it.”

如果加载系数激活了用户的高通滤波器,那么就忽略最后一步。很可能它会自动启用它。

,

Amy Luo:

TIGER LIU 说:你好,这句话可以理解为page 0, register 12, bits D7-D6,D5-D4不管是设置成01、10、11都没影响吗?都是由系数决定。

关于您的这个问题,我是看了下面链接FAQ才回复您的,这个FAQ是关于产品TLV320AIC3104的,但是我认为TLV320AIC3101的滤波器是基于同样的原理的,因此其中的最后一句话“lease ignore the -3dB frequency selection in this register, because in the programmable case, the real -3dB frequency is determined by the coefficients.”也适用于TLV320AIC3101。

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/773075/faq-tlv320aic3104-how-do-you-program-the-aic3104-1st-order-hp-filter?tisearch=e2e-sitesearch&keymatch=%5BFAQ%5D%20TLV320AIC3104%20How%20do%20you%20program%20the%20AIC3104%201st%20order%20HP%20filter#

,

TIGER LIU:

我想请问下有没有关于TIBQ的使用指南,我算出来的系数感觉逻辑是不对的。

比如我在同个环境下测试,分别开启100Hz、200Hz、400Hz、600Hz、1000Hz的高通滤波器,

但结果是混乱的,开启600Hz HPF的时候,噪声甚至更大了。

我在论坛能找到的资料好像没有介绍开启ADC High pass Filter的 ,只有N0、N1、D1三个系数的,

能帮忙协助下嘛。谢谢

,

Amy Luo:

好的,我去确认下您的这个问题

,

Amy Luo:

TIGER LIU 说:

我想请问下有没有关于TIBQ的使用指南,我算出来的系数感觉逻辑是不对的。

比如我在同个环境下测试,分别开启100Hz、200Hz、400Hz、600Hz、1000Hz的高通滤波器,

但结果是混乱的,开启600Hz HPF的时候,噪声甚至更大了。

对于您的这个问题,我想确认下,您在以上几个截止频率操作时,您是否忽略了最后一步?因为根据美国工程师的反馈,滤波器很可能它会自动启用它。

,

TIGER LIU:

是的,以上几个截止频率操作的时候,我都是配置完register 107就启动了,没有进行配置register 12这一步。

我在TIBQ上计算出N0=0x7E32,然后我把32写到register 65,7E写到register 66(left channel);

同理,N1=81CE,我把CE写到register 67,81写到register 68(left channel);

这样对不对呢?

寄存器配置的指令我上次已经发出来啦

,

Amy Luo:

这里反了,register 65是高8位,register 66是低8位,7E写到register 65,32写到register 66;

系数N1、D1同样,如下datasheet截图:

我估计上述问题应该是这里的问题,您重新操作下看是否解决问题?

,

TIGER LIU:

我都试过了,一开始就是按7E写到65,32写到66这个顺序的,但发现实际录出来的声音反而被放大了。

然后我才试的把7E32分开反过来写入,这时候就是有滤波的效果的。我不太明白是怎么回事。实际效果如下图1所示,声音变小了一些。

我现在的问题就是,按照TIBQ计算出来的N0、N1、D1系数,开启的滤波效果是很不一样的。实际效果如下图2所示.

另外我注意到一个现象,配置register 107以后,录的风声会变小,但好像是整体变小的(信号的毛刺还在)。

然后配置register12以后,录得风声变得更大了,但是信号的毛刺没了。具体请参考图1。谢谢

 图1

 图2

,

Amy Luo:

首先请按照datasheet 中要求的MSB 和LSB (即高8位和低8位)对应的寄存器地址配置寄存器;

图2 您是按照正确的高低8位寄存器地址配置的效果图吗?如果是的话,那么是不是都没有进行配置register 12这一步?如果是的话,您可以附上上面对应的截至频率的滤波器系数吗

,

TIGER LIU:

如上图所示,是按照MSB 和LSB (即高8位和低8位)对应的寄存器地址配置寄存器。

没有配置register 12这一步,使用TIBQ计算出来的对应的截至频率的滤波器系数如图所示。

normal状态下滤波器地址也有值:N0=7FEA、N1=8016、D1=7FD5,默认寄存器register 12是打开的,但是register 107没有调用,显示0x00

,

Amy Luo:

通过下面帖子,N1、D1需要除以2后才是写入寄存器的值,您将产生的N1、D1除以2,然后配置看效果怎样?

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/916067/tlv320aic3204-how-to-convert-generated-biquad-eq-coefficients-back-to-original-filter-parameters/3384942?tisearch=e2e-sitesearch&keymatch=TIBQ#3384942

,

TIGER LIU:

Amy Luo 说:您将产生的N1、D1除以2,然后配置看效果怎样

结果如图所示,录的声音甚至更大了些。

我想知道如何确定自己已经成功开启了HPF呢?有没有哪里可以查看得到?

因为在试验过程中有时候发现刚把N0\N1\D1系数输进去,还没配置107寄存器,它录得声音已经降下来了。

谢谢

,

TIGER LIU:

Amy Luo 说:首先请按照datasheet 中要求的MSB 和LSB (即高8位和低8位)对应的寄存器地址配置寄存器

补充一下,现在已经是按这个MSB和LSB的顺序配置寄存器了。

我在想有没有必要试下反过来的?毕竟之前按LSB、MSB这种格式是可以降噪的

,

TIGER LIU:

hello,我再补充一下,因为我们设备上一开始已经有了一套系数N0\N1\D1,然后register 107没配置(显示0x00),register 12配置了(显示0xf0)。

然后我发现现在的情况是,不管系数是什么(是我输入的也好,原本的系数也好),只要将register 107配置成0xc8(使系数生效),或者,将register 12先配置成0x00再配置成0xf0。他的结果都是实时录出的声音会变大。

这让我怀疑这个开启高通滤波器的方法,还是说我们通过串口这种方式去实现比较难?要写成代码去实现嘛

,

Amy Luo:

我先确认下TIBQ的使用方法

,

Amy Luo:

TIGER LIU 说:还是说我们通过串口这种方式去实现比较难?要写成代码去实现嘛

您这里说的串口具体是什么串口呢?TLV320AIC3101 控制接口是I2C,我不知道您是怎样通过串口配置寄存器的,不确定是不是这里的问题?

,

TIGER LIU:

我们是通过一个串口板连接到待测设备的DSP,然后通过指令修改寄存器,比如skl_device -P "0x41,0x32;0x42,0x7e;" ,就是在register写入N0=0x7e32。

这个

,

TIGER LIU:

加载测试驱动:modprobe tlv320aic3xxx-core-interface

查看所有寄存器:skl_device -A

修改寄存器:skl_device -P "0x41,0x32;0x42,0x7e;"  //在register写入N0=0x7e32

刚刚没写清楚,我觉得这种方式应该是没问题的,因为读写寄存器都是正常的。

现在就是感觉HPF这一块有问题,他这个系数不知道怎么计算的

,

Amy Luo:

我找到了一个TIBQ文档:

1273.TIBQ.pdf

,

TIGER LIU:

我看了这个文档,那说明我们之前操作没问题呀。计算出来的系数没问题,寄存器位置没问题,配置完以后确实值也已经写入了。

为啥效果会是反的呢?开启滤波器以后风声应该是会变小的呀。我将数值反过来输入风声又能变小,感觉不符合逻辑。

请问之前有没有人咨询过关于开启高通滤波器的问题呢?

,

Amy Luo:

我没有遇到过,我在E2E论坛检索了很多类似的帖子,没有人反馈说是您描述的这种现象。

我建议您使用I2C控制接口去配置寄存器,看是否还是这种现象?

,

TIGER LIU:

我们其实就是通过I2C配置寄存器的,因为codec 没有串口,就一个I2C配置寄存器。

我们的DSP就是一个host,通过I2C控制 codec。

另外,像0x7e32这数值,你确定是按MSB(0x7e)在前,LSB(0x32)在后这样输入是吧?

因为我反过来输入是有效的。所以想再确认下

,

Amy Luo:

寄存器高低字节反过来输入是完全有效的吗?或者说不管在什么情况下都是有效的?

,

TIGER LIU:

并不完全是,我试了将寄存器高低字节反过来写入,发现100、200、400、1000Hz是有效降低了,但是600Hz反而会升高,奇怪….

这是我今天使用200Hz的系数高低字节反过来输入验证的结果(TEST FW)就是输入了滤波器系数的,请参考下。

每一次试都是100%生效的。

 play song

 play voice

,

Amy Luo:

我去确认下,TIBQ生产的滤波器系数是不是直接写入,还是需要怎样的调整。

,

TIGER LIU:

hello,请问滤波系数的问题是否有消息呢?

另外想提个新问题,我们想打开AGC功能,但是看3101的data sheet有点不太明白。

请问有没有别的文档或者案例可以参考一下呢?我们使用的是tlv320aic3101,感谢

,

Amy Luo:

TIBQ生成的滤波器系数可以直接写入寄存器,不需要做调整。

关于新的问题,建议您重新发帖,以便于其他客户检索,谢谢~

,

TIGER LIU:

好的,那MSB和LSB呢?为什么要调过来才会生效

,

Amy Luo:

如您之前测试所述,并不是100%生效的。我去问问100Hz、200Hz、400Hz、600Hz、1000Hz的高通滤波器对应的N0、N1、D1系数应该怎样产生,对应的结果是什么。

,

Amy Luo:

我收到的回复如下:

Attached is an apps. note that has more detail on configuring the coefficients.

Section 7 talks about configuring the codec.

https://www.ti.com/lit/an/slaa447/slaa447.pdf

关于这个高通滤波器的配置,如果您存在疑问,我建议您自己将问题发布在E2E英文技术论坛上,将由资深的英文论坛工程师为您提供帮助。

英文论坛对应子论坛链接:https://e2e.ti.com/support/audio-group/audio/f/audio-forum

赞(0)
未经允许不得转载:TI中文支持网 » TLV320AIC3101: page1的寄存器无法写入正确的值
分享到: 更多 (0)

© 2024 TI中文支持网   网站地图 鲁ICP备2022002796号-1