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 channelps:我现在想实现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