This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] AIC3204双四通道滤波器DOM' T工作

Guru**** 2343170 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/602401/aic3204-biquad-filters-don-t-work

大家好,我正在使用编解码器AIC3204。

我使用的是192 KHz采样速率。 我希望我的ADC通过频率在300-1600 Hz范围内  

我配置了如下编解码器:

_AIC3204_init:
	;指向第0页
AC1 =#0
AR1 =#0x0
调用i2c_WriteData8

;重置编解码器
AC1 =#1
AR1 =#0x1
调用i2c_WriteData8

	;指向第1页
AC1 =#0
AR1 =#0x1
调用i2c_WriteData8

;禁用DVDD的原始AVDD生成
AC1 =#1
AR1 =#0x08
调用i2c_WriteData8

;启用模拟块和LDO
AC1 =#2
AR1 =#0x01
调用i2c_WriteData8

;*******************************************************
;* PLL和时钟配置和开机
;*******************************************************

;指向第0页
AC1 =#0
AR1 =#0x0
调用i2c_WriteData8

;AIC是1.288 MHz晶体的主要运行方式
;BCLK和WCLK被设置为AIC3204 (主)- 16位字的操作
AC1 =#27
AR1 =#0x0D
调用i2c_WriteData8

;PLL设置:PLLCLK <- MCLK和CODEC _CLKIN <-PLL CLK
AC1 =#4
AR1 =#0x03
调用i2c_WriteData8

;PLL通电;PLL分压器参数:P = 1,R = 1
AC1 =#5
AR1 =#0x91
调用i2c_WriteData8

; PLL设置:J=8
AC1 =#6
AR1 =#0x08
调用i2c_WriteData8

;PLL设置:用于D=0x0780 (或1920十进制)的hI_byte(D)
AC1 =#7
;AR1 =#0x07
AR1 =#0x00
调用i2c_WriteData8

;PLL设置:用于D=0x0780的LO_BYTE(D)
AC1 =#8
;AR1 =#0x80
AR1 =#0x00
调用i2c_WriteData8

;NDAC = 2
AC1 =#11
AR1 =#0x82
调用i2c_WriteData8

;MDAC =8
AC1 =#12
AR1 =#0x88
调用i2c_WriteData8

;DOSR H (DOSR = 32)
AC1 =#13
AR1 =#0x00
调用i2c_WriteData8

;DOSR L (DOSR = 32)
AC1 =#14
AR1 =#0x20
调用i2c_WriteData8

;时钟设置寄存器11,BCLK N除法器N =7
AC1 =#30
AR1 =#0x87
调用i2c_WriteData8

;打开NADC电源并将NADC值设置为2
	AC1 =#18
	AR1 =#0x82
	调用i2c_WriteData8

	;启动mAdc并将mAdc值设置为8
	AC1 =#19
	AR1 =#0x88
	调用i2c_WriteData8

	;AOSR对于AOSR =32
	AC1 =#20
	AR1 =#0x20
	调用i2c_WriteData8


	;指向第0页
AC1 =#0
AR1 =#0x0
调用i2c_WriteData8

		;DAC PRB
		AC1 =#60
AR1 =#21
调用i2c_WriteData8

;ADC PRB
		AC1 =#61
AR1 =#8
请致电i2c_WriteData8

;***********************************************************************
;* DAC路由和通电
	;***************************************************************


;选择第1页
AC1 =#0
AR1 =#0x01
调用i2c_WriteData8

;LDAC ATIR路由到HPL
AC1 =#12
AR1 =#0x08
调用i2c_WriteData8

;RDAC ATIR路由到HPR
AC1 =#13
;AR1 = 0x08
AR1 =#0x00
调用i2c_WriteData8

;选择第0页
AC1 =#0
AR1 =#0x00
调用i2c_WriteData8

;左vol=右vol
AC1 =#64
AR1 =#0x02
调用i2c_WriteData8

;左DAC增益至0dB VOL;右磁道左
AC1 =#65
AR1 =#0x00;无DRC
;AR1 = 0x18;带有DRC
调用i2c_WriteData8

;DRC

;DAC =>为左信道启用DRC,阈值=-24 db,滞后=3 dB
;AC1 =#0x44
;AR1 =#0x5F
;调用i2c_WriteData8.

;DRC保持=0 ms,增益变化率= 0.5 dB/FS'
;AC1 =#0x45
;AR1 =#0x00
;调用i2c_WriteData8.

;攻击速率=1.9531e-4 dB/帧,DRC衰减速率=2.4414e-5 dB/帧
;AC1 =#0x46
;AR1 =#0xB6
;调用i2c_WriteData8.

;结束DRC

;打开左,右数据路径并设置通道
AC1 =#63
;AR1 =#0x92
AR1 =#0xB2
调用i2c_WriteData8

;选择第1页
AC1 =#0
AR1 =#0x01
调用i2c_WriteData8

;取消静音HPL,0dB增益
AC1 =#16
AR1 =#0x00
调用i2c_WriteData8

;静音HPR,0dB增益
AC1 =#17
AR1 =#0x00;#0x40
调用i2c_WriteData8

;启动HPL
AC1 =#9
;AR1 = 0x28 --精密
AR1 =#0x30
调用i2c_WriteData8

		;选择第0页
AC1 =#0
AR1 =#0x00
调用i2c_WriteData8

		@BRC0_L =#0x02FF || mmap()
		localrepeat {
			REPEAT (#0xFFFFff)
			NOP_16
			NOP_16}
		

		;*******************************************************************************
;* ADC路由和通电
		;***************************************************************

		;选择第8页
AC1 =#0
AR1 =#0x08
调用i2c_WriteData8

;双四轮A
;N0
AC1 =#36
AR1 =#0x00
调用i2c_WriteData8

AC1 =#37
AR1 =#0x26
调用i2c_WriteData8

AC1 =#38
AR1 =#0x56
调用i2c_WriteData8

;N1
AC1 =#40
AR1 =#0x00
调用i2c_WriteData8

AC1 =#41
AR1 =#0x26
调用i2c_WriteData8

AC1 =#42
AR1 =#0x56
调用i2c_WriteData8

;N2
AC1 =#44
AR1 =#0x00
调用i2c_WriteData8

AC1 =#45
AR1 =#0x26
调用i2c_WriteData8

AC1 =#46
AR1 =#0x56
调用i2c_WriteData8

;D1.
AC1 =#48
AR1 =#0x7B
调用i2c_WriteData8

AC1 =#49
AR1 =#0x23
调用i2c_WriteData8

AC1 =#50
AR1 =#0x56
调用i2c_WriteData8

;D2
AC1 =#52
AR1 =#0x89
调用i2c_WriteData8

AC1 =#53
AR1 =#0x5E
调用i2c_WriteData8

AC1 =#54
AR1 =#0x31
调用i2c_WriteData8

;双四轮B
;N0
AC1 =#56
AR1 =#0x7F
调用i2c_WriteData8

AC1 =#57
AR1 =#0xFF
调用i2c_WriteData8

AC1 =#58
AR1 =#0xFF
调用i2c_WriteData8

;N1
AC1 =#60
AR1 =#0x80
调用i2c_WriteData8

AC1 =#61
AR1 =#0x00
调用i2c_WriteData8

AC1 =#62
AR1 =#0x01
调用i2c_WriteData8

;N2
AC1 =#64
AR1 =#0x7F
调用i2c_WriteData8

AC1 =#65
AR1 =#0xFF
调用i2c_WriteData8

AC1 =#66
AR1 =#0xFF
调用i2c_WriteData8

;D1.
AC1 =#68
AR1 =#0x7E
调用i2c_WriteData8

AC1 =#69
AR1 =#0xC7
调用i2c_WriteData8

AC1 =#70
AR1 =#0x8F
调用i2c_WriteData8

;D2
AC1 =#72
AR1 =#0x82
调用i2c_WriteData8

AC1 =#73
AR1 =#0x6A
调用i2c_WriteData8

AC1 =#74
AR1 =#0xf8
调用i2c_WriteData8

		;选择第1页
	AC1 =#0
	AR1 =#0x01
	调用i2c_WriteData8

		AC1 =#52
	AR1 =#0x30
	将i2c_WriteData8;CM_1

		(通用模式)调用到40千欧的LADC_M
	AC1 =#54
	AR1 =#0x03
	呼叫i2c_WriteData8

		;MIC_PGA_L取消静音
	AC1 =#0x3B
	AR1 =#0x5D
	呼叫i2c_WriteData8

		;MIC_PGA_R取消静音
	AC1 =#0x3C
	AR1 =#0x80
	调用i2c_WriteData8

;选择第0页
AC1 =#0
AR1 =#0x00
调用i2c_WriteData8

;Powerup左ADC
AC1 =#81
AR1 =#0x80
;AR1 =#0x8A
调用i2c_WriteData8

;取消左ADC静音和右ADC静音
AC1 =#82
;AR1 = 0x00 --精密
AR1 =#0x08
调用i2c_WriteData8

;虚拟读取
AC1 = 9
AR1 = 0xABAB
调用i2c_ReadData8

我的问题是,我看到频率超过30kHz从DAC传输。

有什么建议?

提前感谢

Paolo

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Paolo,

    您能否提供有关双屏显示过滤器配置的详细信息? 您是如何选择这些值的? 您是否尝试过TI biquad过滤器工具: www.ti.com/.../COEFFICIENT-CALC

    请记住,当修改双四倍滤波器系数时,关闭ADC和DAC块的电源。

    此致,
    Luis Fernando Rodríguez ñ o S.
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Luis,
    如您所见,我在配置Biquad滤波器后打开了左ADC和DAC的电源。

    我没有保存代码中报告的滤波系数,但保存了另一个版本。 使此版本的效果完全相同。
    我报告TIBQ工具建议的配置:

    文本"*采样率= 19.2万"
    文本"*滤波器1高通二级Linkwitz-Riley,300 Hz FC 6.8 dB"
    文本"*滤波器2低通二阶Linkwitz-Riley,1836 Hz FC 6.1 dB"

    文本"* BQ:H (z)=(N0 + 2* N1/z + N2/(Z2))/(838.8608万 - 2* D1/z - D2/(Z2))"
    文本"*滤波系数,格式为N0,N1,N2,D1,D2"

    文本"* 1O:H (z)=(N0 + N1/z)/(838.8608万 - D1/z)"
    文本"*滤波系数,格式为N0,N1,D1"

    文本"*过滤器1 BQ"
    0x7FFFFFFF
    0x80.0001万
    0x7FFFFFFF
    0x7EBFDD
    0x827D24
    文本"*过滤器2 BQ"
    0x0.0382万C
    0x0.0382万C
    0x0.0382万C
    0x7.888万F
    0x8E8052
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Luis,

    Mary我是否配置缓冲区A和B,即使未使用调整过的过滤?

    谢谢

    Paolo