TLV3254工作电流怎么这么大30mA?不是说只有几个毫安吗
我的3254只提供一个MCLK,BCLK和WCLK OUTPUT,采用44.1K的采样率,GDE里面如下
CS里面设置生成的的文件如下
{ 0,0x00},
// # reg[ 0][ 1] = 0x01 ; Initialize the device through software reset
{ 1,0x01},
{254,0x0A},
{ 0,0x01},
// # reg[ 1][ 1] = 0x08 ; Power up AVDD LDO; Disable weak AVDD to DVDD connection; Enable Master Analog Power Control, AVDD LDO Powered; Disable weak AVDD to DVDD connection
{ 1,0x08},
// # reg[ 1][ 2] = 0x00 ; Enable Master Analog Power Control
{ 2,0x00},
// # reg[ 1][ 71] = 0x32 ; Set the input power-up time to 3.1ms
{ 71,0x32},
// # reg[ 1][123] = 0x01 ; Set REF charging time to 40ms (automatic)
{123,0x01},
{255,0x00},
{255,0x01},
{ 0,0x00},
// # reg[ 0][ 60] = 0x00 ; DAC prog Mode: miniDSP_A and miniDSP_D NOT powered up together, miniDSP_A used for signal processing
{ 60,0x00},
// # reg[ 0][ 61] = 0x00 ; Use miniDSP_A for signal processing
{ 61,0x00},
// # reg[ 0][ 17] = 0x08 ; 8x Interpolation
{ 17,0x08},
// # reg[ 0][ 23] = 0x04 ; 4x Decimation
{ 23,0x04},
{ 15,0x03},
//
{ 16,0x88},
//
{ 21,0x03},
//
{ 22,0x88},
{ 0,0x08},
// # reg[ 8][ 1] = 0x04 ; adaptive mode for ADC
{ 1,0x04},
{ 0,0x2C},
// # reg[ 44][ 1] = 0x04 ; adaptive mode for DAC
{ 1,0x04},
//
{ 0,0x00},
//reg[ 0][ 5] = 0x91 ; P=1, R=1, J=8
{ 5,0x91},
//reg[ 0][ 6] = 0x08 ; P=1, R=1, J=8
{ 6,0x08},
// reg[ 0][ 7] = 0x00 ; D=0000 (MSB)
{ 7,0x00},
//reg[ 0][ 8] = 0x00 ; D=0000 (LSB)
{ 8,0x00},
// reg[ 0][ 4] = 0x03 ; PLL_clkin = MCLK, codec_clkin = PLL_CLK, PLL on
{ 4,0x03},
// reg[ 0][ 12] = 0x88 ; MDAC = 8, divider powered on
{ 12,0x88},
// reg[ 0][ 13] = 0x00 ; DOSR = 32 (MSB)
{ 13,0x00},
// reg[ 0][ 14] = 0x20 ; DOSR = 32 (LSB)
{ 14,0x80},
// reg[ 0][ 18] = 0x02 ; NADC = 2, divider powered off
{ 18,0x02},
// reg[ 0][ 19] = 0x88 ; MADC = 8, divider powered on
{ 19,0x08},
// reg[ 0][ 20] = 0x20 ; AOSR = 32
{ 20,0x80},
// reg[ 0][ 11] = 0x82 ; NDAC = 2, divider powered on
{ 11,0x82},
// # reg[ 0][ 27] = 0x0C ; BCLK WCLK OUTPUT
{27,0x0c},
// # reg[ 0][ 30] = 0x81 ; BCLK OUTPUT DACCLK
{30,0x81},
{27,0x4c},
{ 0,0x01},
// ADC POWER TUNE //# reg[ 1][ 61] = 0xff ; PTM_R1
{61,0xFF},
// LEFT DAC POWER TUNE //# reg[ 1][ 03] = 0x08 ; PTM_P1
{03,0x08},
// RIGHT DAC POWER TUNE //# reg[ 1][ 04] = 0x08 ; PTM_P1
{04,0x08},
{ 0,0x01},
// # reg[ 1][ 51] = 0x40 ; Mic Bias enabled, Source = Avdd, 1.25V
{ 51,0x40},
// # reg[ 1][ 52] = 0x44 ;input routing
{ 52,0x44},
// # reg[ 1][ 54] = 0x40 ;
{ 54,0x40},
// # reg[ 1][ 55] = 0x44 ;
{ 55,0x44},
// # reg[ 1][ 57] = 0x40 ;
{ 57,0x40},
// # reg[ 1][ 59] = 0x00 ; Enable MicPGA_L Gain Control, 30dB rage (0~0x5f)
{ 59,0x10},
// # reg[ 1][ 60] = 0x00 ; Enable MicPGA_R Gain Control, 30dB
{ 60,0x10},
{ 0,0x00},
// # reg[ 0][ 81] = 0xc0 ; Power up LADC/RADC
{ 81,0xC0},
// # reg[ 0][ 82] = 0x00 ; Unmute LADC/RADC
{ 82,0x00},
{ 0,0x01},
// # reg[ 1][ 20] = 0x25 ; De-pop: 5 time constants, 6k resistance
{ 20,0x25},
// # reg[ 1][ 12] = 0x08 ; Route LDAC to HPL
{ 12,0x08},
// # reg[ 1][ 13] = 0x08 ; Route RDAC to HPR
{ 13,0x08},
// # reg[ 1][ 14] = 0x08 ; Route LDAC to LOL
{ 14,0x08},
// # reg[ 1][ 15] = 0x08 ; Route LDAC to LOR
{ 15,0x08},
{ 0,0x00},
// # reg[ 0][ 63] = 0xd4 ; Power up LDAC/RDAC w/ soft stepping
{ 63,0xD4},
{64,0x00},
{65,0x00}, //DAC 24dB Gain
{66,0x00},
{ 0,0x01},
// # reg[ 1][ 16] = 0x00 ; Unmute HPL driver, 0dB Gain
{ 16,0x00},
// # reg[ 1][ 17] = 0x00 ; Unmute HPR driver, 0dB Gain
{ 17,0x00},
// # reg[ 1][ 18] = 0x00 ; Unmute LOL driver, 0dB Gain
{ 18,0x00},
// # reg[ 1][ 19] = 0x00 ; Unmute LOR driver, 0dB Gain
{ 19,0x00},
// # reg[ 1][ 9] = 0x3c ; Power up HPL/HPR and LOL/LOR drivers
{ 9,0x30},
{ 0,0x00},
// # reg[ 0][ 64] = 0x00 ; Unmute LDAC/RDAC
{ 64,0x00},
// # reg[0][82] = 0
{ 82,0x00},
// # reg[0][83] = 0
{ 83,0x00},
// # reg[0][86] = 32
{ 86,0x20},
// # reg[0][87] = 254
{ 87,0xFE},
// # reg[0][88] = 0
{ 88,0x00},
// # reg[0][89] = 104
{ 89,0x68},
// # reg[0][90] = 168
{ 90,0xA8},
// # reg[0][91] = 6
{ 91,0x06},
// # reg[0][92] = 0
{ 92,0x00},
// # reg[0][84] = 0
{ 84,0x00},
// # reg[0][94] = 32
{ 94,0x20},
// # reg[0][95] = 254
{ 95,0xFE},
// # reg[0][96] = 0
{ 96,0x00},
// # reg[0][97] = 104
{ 97,0x68},
// # reg[0][98] = 168
{ 98,0xA8},
// # reg[0][99] = 6
{ 99,0x06},
// # reg[0][100] = 0
{100,0x00},
};
请问大神们,这个配置哪里有问题?为什么电流会有30多毫安?而且启动时间(由IIC写完初始化寄存器到出声音)需要1秒多?
你好:
{254,0A}并不是真正的写254寄存器写0A,而是一个延迟指令。
(255,0)也不是写255寄存器0,而是写MiniDSPA的配置。同理(255,01)是写MINIDSPD的数据。你用GDE生成的配置文件中会有写。
Dear Derek Xie:
谢谢你,你说的这三个我知道,我也正确做了延时和写入相应的MINIDSP,现在的问题是,声音有出来,就是工作电流好大有30多mA, 然后就是从写完DSP初始化指令后到处声音也需要1秒多的是延时,这两个问题是哪里的错了?怎么能把电流减小,把延时减少?
你好:
要减少等待时间只能增加你I2C的写的数据,比如多个Byte写。你的输出启动了耳放吗?并且接着负载?
你好:
MINIDSP的数据我都是一次一页全写进去的,从开始到写完大概时间是500ms,然后再到有有声音出来又需要1秒多的时间,请问这个一秒多的时间是由什么引起的?怎么才能降下来?耳放我有用,就是那个HP Output Gain我有打开,在空载的状况下也是30多mA的电流。
我在想是不是因为我的PLL配置有问题,配置图如下
外部只提供一个11.2896MHz的MCLK,通过PLL倍频输出CODEC_CLKIN,采样率是44.1khhz,BCLK和WCLK都是输出
。是不是因为PLL倍频的这个过程引起的启动延时长和功耗大?
你好:
我把HP OUTPUT Gain 和 LINE OUTPUT Gain 都Mute了,电流依然还是那么大。
你好:
如果你的MCLK是11.2896M的话,可以不使用PLL的,这样功耗也能省点。
建议你复位下芯片,然后看电流是多大。
你的输出有延迟可能是AGC和DRC的作用,你做一个最简单的流程在测试下。
做一个简单的测试流程看看会不会延迟很大。
你好:
PLL关掉之后,用您说的配置,试了一下,现象有以下几点:1. 电流减少到10mA左右,2.延时会稍微减少一点点 大概300ms左右,3噪音很大,在开发板上的现象是:可以听到声音,但是声音变高变大就会出现刺耳的噪音非常大,用我自己板子试一下只有噪音,而且噪音又大又刺耳。
DSP中用了您所画的流程之后,时间减少的只有一点点,用示波器测了一下,大概减少的是IIC写入3254的时间两次寄存器总量的差。另外我也测了这时的功耗,电流几乎没有变化,是一样的。
现在的问题是:1. 关掉PLL后,功耗是降下来了但是噪音极大,我自己的板子几乎全是噪音根本不能用。这个噪音怎么引起?要怎么消除?2.启动延时的主要部分还是3254的时间,就算减少寄存器的写入量,流程简单化,也解决不了延时问题,讲不到几百个毫秒级。
你好:
PLL关掉听到噪声的原因是因为你的配置有问题,你默认的配置CLOCK_IN是从PLL来的。而且你的Divider的分频系数也要改,并不是单使用PPS GDE就能配置好的。你的I2C的速率是多少的?可以尝试提高频率。还有就是你直接用PPS软件下载到开发板的时间和你的MCU写的方式的写入时间一致吗?
你好,
1.关于clock 设置的问题,我是按您给的设置图在CS中设置,并用Command-line Interface 去记录寄存器(图1)设置在搬到我的头文件里的,如图2。不知道是哪里出了问题导致的噪音?
图1 CS中记录的clock 设置
图2 程序头文件中的 clock 设置端
2.在你上面说的最简流程下 开发板在PPSGDE从按下run按钮到output框出现done用了2.22S,我板子上的IIC写入时间是260ms。
3.当我启动听到声音后,再软件复位后的电流只有8mA,差不多是MCU的功耗。
4.如果我加大外部给的频率功耗和延时会不会减少?外部最大的频率支持到多少?我想用45.1584MHZ和90.3168MHZ试一试。
你好:
你在哪里测试的?EVM板子?还是自己的板子?
w 30 00 00
w 30 05 11
w 30 00 00
w 30 04 00
w 30 00 00
w 30 0B 81
w 30 00 00
w 30 0C 82
w 30 00 00
w 30 12 81
w 30 00 00
w 30 13 82
试下这个配置时钟。
你好,
是在我的板子上测试的。这个配置我试过了,和我上面设置是一样的,有很大噪音。
你好,
帮我下面这个流程加回音处理和环境噪音消除处理。谢谢。
你好:
噪声消除加在你的Process flow中的最前面。
您好,
我现在就是从麦克风进来的声音,在人声和噪音差不多大的情况下,噪音会比人声还大点,怎么样才能把外面进来的噪音减小把真正需要的人声音放大些?需要什么算法元件?能给个图吗?最好在下面的图上加出来?
你好:
有一种方法是在MIC进来的时候加RC滤波器来减少噪声的输入,还有一种方法是在数字信号处理流程中加入带通滤波器(20-20KHz)来减少带外的噪声。
如果你的噪声在音频中,这个就需要专门的DSP来处理里。还有就是你改下你的MIC的灵敏度,是不是灵敏度太高了,所以采集的时候噪声也比较大。
你噪声大的时候声音有失真吗?是不是输入的增益太大?我建议检查噪声来源来抑制。
您好,
1 能够确定噪音主要是来自MIC输入,在上面说的在MIC进来的时候加RC滤波器是在硬件上加一个RC去滤波,还是说在GDE里面Dec4xIn后面加?如果是在GDE里面加,是加哪一个元件?是这个吗?
那个带通滤波器是在DSP_A_DSP_D前面加入吗?
2.我的MIC灵敏度挺大的,我想问问,现在我做的不是用来放音乐是一个类似于助听器的,收音的范围半径8到10米,模拟收入,在经过3254处理(去噪,放大)在模拟输出,现在听到的从MIC进来的噪音比正常人说话的声音还要大点,而且重要的是离的远了只能听见人说话,但是说的内容听不清,这个什么原因?是因为DB太大而失真吗?要怎么做才好?
你好:
1.在硬件上也可以。当然在软件中也可以加。有一个Biquad Filter可以选。
2,.你去掉nrvar那个控件后试一下。DB太大失真是一种可能。你试试把增益调小试下。
您好,
1.前级输入进来,就加了滤波,但是那个噪音还是挺大的,有没有把声音保留放大而把这些莎莎的噪音减小的算法元件?我的增益 这样分布的 MIC PGA 7DB ,ADC 0 DB,DAC 6 DB,HP OUTPUT Gain 29 DB 。这样子的噪音大,声音也有但是听不是很清楚。
2. 3254 做一个类似于助听器的东西,能不能收听到半径8到10米的人说话的声音,信噪比实在太低了,远处的听不清,增益缩小了又听不到的远处的声音,很矛盾。
你好:
你有安装PPS吧,在你安装的目录下能找到一些例子,有一个叫Audio ZOOM你参考它的调节下看是否有效果。
C:\Users\user name\Documents\Texas Instruments Inc\PurePath Studio (Portable Audio) MiniDSP 5.95\MyProcessFlows\Example Process Flows\Audio Zoom\AIC3254
您好,
1.那个例子我试过了,效果基本差不多,噪音还是有比较大。
2.增益放大时会箫叫,我既想增益大一点又不想箫叫,有什么好的办法没?我试验的增益都是快箫叫的情况下进行,可能是增益太大的原因。
3.远处的声音还是很小,而且听不清。怎么设置可以使MIC的收集声音的能力变好一点?
您好,
那个耳机靠近MIC的时候,会有很刺耳的尖叫,能用哪个元件可以消除?跪求大神解答
Hi,
这是正常现象,MIC和耳机靠很近时,直接耦合正反馈自激振荡了。正常使用时不要将MIC靠近耳机,实在要去掉时,就需要防啸叫反馈抑制算法,这都是用在卡拉OK上的专业音响的技术手段。