您好,
我们正在通过miniDSP测试192kHz采样率。 我们尝试配置过滤器B的使用,它将引入-24dB增益错误,该错误应该通过+4位移来修复(更多信息)。 AIC3254位于一个产品上,在该产品中,我具有i2c通信(通过) DSP驱动程序和AIC3254与DSP之间的McASP接口。 因此,我们通过i2c解释pps驱动程序文件寄存器设置,并在没有EVM板的情况下配置编解码器。
尝试复制与 此开机自检类似的内容
一旦配置了miniDSP_A的使用,ADC样本就全部为零。
我一直在尝试为miniDSP配置以下简单的流程流:
使用的框架不是默认的192kHz帧结构,因为我想使用过滤器B作为带宽,我假定使用的帧结构使用过滤器B
工艺流程设置如下:
使用SystemSettings代码,按如下方式编辑:
(我正在对所有DAC设置进行注释,因为现在我只想让ADC通过miniDSP运行,这是否正常?)
(我还对任何初始化,加电,路由和时钟设置进行了注释,因为这是在miniDSP驱动程序中完成的,我将提供进一步的详细信息)
----------------------------------
;软件重置
;------------------
;REG[0][1]= 0x01 ;通过软件重置初始化设备
;REG[254][0]= 0x0a ;延迟10ms
;------------------
;配置电源
设备;------------------
%%IF (%%prop (TargetBoard)== 2)
;AIC3254EVM-U特定配置
;reg[1][2]= 0xa9 ;启动AVDD LDO
;reg[1][1]= 0x08 ;禁用弱AVDD到DVDD连接
;reg[1][2]= 0xa1 ;启用主模拟电源控制,AVDD供电LDO
%%else
;AIC3254EVM-K特定配置
;REG[1][1]= 0x08 ;禁用弱AVDD到DVDD连接
;REG[1][2]= 0x00 ;启用主模拟电源控制
%%endif
;REG[1][71]= 0x32 ;将输入开机时间设置为3.1毫秒
;REG[1][123]= 0x01 ;将REF充电时间设置为40毫秒(自动)
; ;REG[254][0]= 0x28 ;REF开机延迟40毫秒
;------------------
;加载miniDSP代码
----------------------------------
program_adc ;miniDSP_A系数和指令
;program_dac ;miniDSP_D系数和指令
;------------------
;信号处理设置
;------------------
;REG[0][60]= 0x00 ;使用miniDSP_D进行信号处理
REG[0][61]= 0x00 ;使用miniDSP_A进行信号处理
%%IF ("%%prop (FrameworkType)"=="AIC3254App8x4x")
REG[0][17]= 0x08 ;Interpolation
reg 0];[0x23] 4x小数
%%endif
%%prop (FrameworkType)"=="AIC3254App4x2x")
reg[0][17]= 0x04 ;4x Interpolation
reg[0][23]= 0x02 ;2x decimation
%%endif
("%%prop (FrameworkType)"=[0x23] Appreg 0;2x0]
1x抽取
%%endif
;IDAC =%%prop(miniDSP_D_CYCLES)
IADC =%%prop(miniDSP_A_CYCLE)
%%if (%%prop(miniDSP_a_Adaptive)==1)
;REG[8][1]=0x04 ;ADC自适应模式
%endif%if (%%diprop(dsp_adaptive)%)=-1--!--
-1----
;时钟和接口配置
;------------------
;USB音频支持8kHz至48kHz采样率
;88.2kHz至192kHz采样率需要外部音频接口
;----------------------------------
%%IF (%%prop (SampleRate)== 17.64万 ||%prop (SampleRate)== 19.2万)
;REG[0][5]= 0x91 ;P=1,R=1,J=8
;REG[0][6]= 0x08 ;P=1,R=1,J=8
;REG[=00;SS0];0=0[0=0]
PLL_CLKIN = MCLK,CODCOD_CLKIN = PLL_CLK,PLL打开
;REG[0][12]= 0x88 ;MDAC =8,分配器通电
;REG[0][13]= 0x00 ;DOSR =32 (MSB)
REG[0][14]= 0x20 ;DOSR =32 (LSB)[
0x0] NADC =2,分配器电源关闭
reg[0][19]= 0x88 ;mAdc =8,分配器电源
打开reg[0][20]= 0x20 ;AOSR =32
reg[0][11]= 0x82 ; NDAC =2,分配器通电
%%endif
(%%prop (SampleRate)== 8.82万 ||%%prop (SampleRate)== 9.6万)==9.6万) reg[0][5]=0x91
;P=1,R=1,J=8
reg[0][6]=0x08 ;P=1,R=1[0x00]
reg ;0[=0[0] reg=0[=00]
d=0000 (LSB)
reg[0][4]= 0x03 ;PLL_CLKIN = MCLK,CODE_CLKIN = PLL_CLK,PLL on
reg[0][12]= 0x88 ;MDAC =8,分配器通电
reg[0][13]= 0x00 ;DOSR =64 (MSB)
reg =0[ 0x40] ;0x14] DOSR =64 (LSB)
REG[0][18]= 0x02 ;NADC =2,分配器断电
REG[0][19]= 0x88 ;mAdc =8,分配器通电
REG[0][20]= 0x40 ;AOSR =64
REG[0][11]= 0x82 ; NDAC = 2,分配器通电
%%endif
(%%prop (SampleRate)== 4.41万||%%prop (SampleRate)== 4.8万)
reg[0][5]= 0x91 ;P=1,R=1,J=8
reg[0][6]= 0x08 ;P=1,R=1[
0x00] reg;0[=0[0xD]
d=0000 (LSB)
reg[0][4]= 0x03 ;PLL_CLKIN = MCLK,CODE_CLKIN = PLL_CLK,PLL on
reg[0][12]= 0x88 ;MDAC =8,分配器通电
reg[0][13]= 0x00 ;DOSR =128 (MSB)
reg =0[;0x14] DOSR =128 (LSB)
REG[0][18]= 0x02 ;NADC =2,分配器电源关闭
REG[0][19]= 0x88 ;mAdc =8,分配器电源
打开REG[0][20]= 0x80 ;AOSR =128
REG[0][11]= 0x82 ; NDAC =2,分配器通电
%%endif
(%%prop (SampleRate)== 3.2万)
reg[0][5]=0x91 ;P=1,R=1,J=8
reg[0][6]=0x08 ;P=1,R=1,J=8
reg[0][7]=0x00 ;D](0x00)[ 0)]
d=0000 (LSB)
reg[0][4]= 0x03 ;PLL_CLKIN = MCLK,CODE_CLKIN = PLL_CLK,PLL on
reg[0][12]= 0x88 ;MDAC =8,分配器通电
reg[0][13]= 0x00 ;DOSR =192 (MSB)
reg =0[ ;0x14] DOSR =192 (LSB)
REG[0][18]=0x02 ;NADC =2,分配器电源关闭
REG[0][19]=0x8c ;mAdc =12,分配器电源
打开REG[0][20]=0x80 ;AOSR =128
REG[0][11]=0x82 ; NDAC = 2,分配器通电
%%endif
(%%prop (SampleRate)== 2.205万 ||%%prop (SampleRate)== 2.4万
) reg[0][5]= 0x91 ;P=1,R=1,J=8
reg[0][6]= 0x08 ;P=1,R=1[
0x00] reg;0[=0] reg=0[0xD]
d=0000 (LSB)
reg[0][4]= 0x03 ;PLL_CLKIN = MCLK,CODE_CLKIN = PLL_CLK,PLL on
reg[0][12]= 0x88 ;MDAC =8,分配器通电
reg[0][13]= 0x01 ;DOSR =256 (MSB)
reg =0[ 0x00] ;0x00] DOSR =256 (LSB)
REG[0][18]= 0x02 ;NADC =2,分配器电源关闭
REG[0][19]= 0x90 ;mAdc =16,分配器电源
打开REG[0][20]= 0x80 ;AOSR =128
REG[0][11]= 0x82 ; NDAC = 2,分配器通电
%%endif
%%prop (SampleRate)== 1.6万
) reg[0][5]= 0x91 ;P=1,R=1,J=24
reg[0][6]= 0x18 ;P=1,R=1,J=24
reg[0][7]=0x00 ;D](0x00) reg[0]
d=0000 (LSB)
reg[0][4]= 0x03 ;PLL_CLKIN = MCLK,CODE_CLKIN = PLL_CLK,PLL on
reg[0][12]= 0x88 ;MDAC =8,分配器通电
reg[0][13]= 0x01 ;DOSR =384 (MSB)
reg =0[;0x14] DOSR =384 (LSB)
REG[0][18]= 0x02 ;NADC =2,分配器电源关闭
REG[0][19]= 0x98 ;mAdc =24,分配器电源
打开REG[0][20]= 0x80 ;AOSR =128
REG[0][11]= 0x82 ; NDAC =2,分配器通电
%%endif
(%%prop (SampleRate)== 1.1025万)
reg[0][5]= 0x91 ;P=1,R=1,J=16
reg[0][6]= 0x10 ;P=1,R=1,J=16
reg[ 0][7]=0x00 ;D](0x00)[ 0)]
d=0000 (LSB)
reg[0][4]= 0x03 ;PLL_CLKIN = MCLK,CODE_CLKIN = PLL_CLK,PLL on
reg[0][12]= 0x88 ;MDAC =8,分配器通电
reg[0][13]= 0x02 ;DOSR =512 (MSB)
reg =0[ 0x00] ;0x00] DOSR =512 (LSB)
REG[0][18]=0x02 ;NADC =2,分配器电源关闭
REG[0][19]=0xa0 ;mAdc =32,分配器电源
打开REG[0][20]=0x80 ;AOSR =128
REG[0][11]=0x82 ; NDAC =2,分配器通电
%%endif
%%prop (SampleRate)== 8000
) reg[0][5]=0x91 ;P=1,R=1,J=24
reg[0][6]=0x18 ;P=1,R=1,J=24
reg[0][7]=0x00 ;D=0[0x00] reg[=0]
d=0000 (LSB)
reg[0][4]= 0x03 ;PLL_CLKIN = MCLK,CODE_CLKIN = PLL_CLK,PLL on
reg[0][12]= 0x88 ;MDAC =8,分配器通电
reg[0][13]= 0x03 ;DOSR =768 (MSB)
reg =0[ 0x00] ;0x00] DOSR =768 (LSB)
REG[0][18]= 0x02 ;NADC =2,分配器电源关闭
REG[0][19]= 0xb0 ;mAdc =48,分配器电源
打开REG[0][20]= 0x80 ;AOSR =128
REG[0][11]= 0x82 ; NDAC =2,分配器已通电
%%endif
;------------------
; ADC信道配置
----------------------------------
;REG[1][51]= 0x40 ;已启用麦克风偏置,源= AVDD,1.25V
%IF (%%prop (TTargetBoard)==2)
;AIC3254EVM-U特定配置
;REG[1][52]= 0x10 ;将IN2L路由到具有10K输入阻抗的Left_P
;REG[1][54]= 0x40 ; 将CM1L路由到具有10K输入阻抗的Left_M
;REG[1][55]= 0x10 ;将IN2R路由到具有10K输入阻抗
%%else的Right_P
;AIC3254EVM-K特定配置
;REG[1][52]= 0x40 ;将IN1L路由到具有10K输入阻抗的Left_P
;REG[1][54]= 0x40 ; 将CM1L路由到具有10K输入阻抗的Left_M
;REG[1][55]= 0x40 ;将IN1R路由到具有10K输入阻抗
%%endif
的Right_P;REG[1][57]= 0x40 ;将CM1R路由到具有10K输入阻抗的Right_M
;REG[1][59]= 0x00 ; 启用MicPGA_L增益控制,0dB
;REG[1][60]= 0x00 ;启用MicPGA_R增益控制,0dB
;REG[0][81]= 0xc0 ;打开LADC/RADC电源
;REG[0][82]= 0x00 ;取消LADC/RADC静音
;------------------
; DAC信道配置
----------------------------------
;REG[1][20]= 0x25 ;去弹:5个时间常量,6k电阻
;REG[1][12]= 0x08 ;将LDAC路由到HPL
;REG[1][13]= 0x08 ;将RDAC路由到HPR
;REG[1][14]= 0x08 ;将LDAC路由到LOL
;REG[1] 15]= 0x08[ ; 将LDAC路由到Lor
;reg[0][63]= 0xd4 ;启动LDAC/RDAC,带软步进
;reg[1][16]= 0x00 ;取消HPL驱动程序静音,0dB增益
;reg[1][17]= 0x00 ;取消静音HPR驱动程序,0dB增益
;reg[1][18]= 0x00 ; 取消OLL驱动器静音,0dB增益
;REG[1][19]= 0x00 ;取消Lor驱动器静音,0dB增益
;REG[1][9]= 0x3c ;打开HPL/HPR和LOL/Lor驱动
程序;REG[0][64]= 0x00 ;取消LDAC/RDAC静音
如上所示,以下是一些突出显示的配置设置(它们是否正确)?
时钟设置:
PLL被使用= 98.304MHZ = CODEC CLKIN
NADC = 2
mAdc =8
AOSR = 32
CODCOD_CLKIN = NADC x mAdc x ADC_FS = 2 x 4x 19.2万 = 98.304MHZ (是否正确?)
我在时钟分配树中看到一个指示,即在NADC之后,小型DSP时钟生成分支关闭了,这是否仍意味着我的时钟设置正确,对我来说有点混乱?
另外,在参考文章中,他们使用2倍的小数位,我不清楚为什么以及2倍的小数位来自何处,因为我的印象是,小数位是在基于框架的miniDSP之前,使用硬件过滤器(过滤器C)完成的。 它如何与时钟频率设置和采样频率相适应?
如果需要,我已附上流程流: