Hi,
I use a Soc based on C5505 / AIC3204 codec. Codec is configured at 192 Khz in this way:
_AIC3204_rx:
; Point to page 0
AC1 = #0
AR1 = #0x0
call i2c_WriteData8
;reset codec
AC1 = #1
AR1 = #0x1
call i2c_WriteData8
; Point to page 1
AC1 = #0
AR1 = #0x1
call i2c_WriteData8
;Disable crude AVDD generation from DVDD
AC1 = #1
AR1 = #0x08
call i2c_WriteData8
;Enable Analog Blocks and LDO
AC1 = #2
AR1 = #0x01
call i2c_WriteData8
;***********************************************************************
;* PLL and Clocks config and Power Up
;***********************************************************************
; Point to page 0
AC1 = #0
AR1 = #0x0
call i2c_WriteData8
;BCLK and WCLK is set as op to AIC3204(Master) - 16 bits word
AC1 = #27
AR1 = #0x0D
call i2c_WriteData8
;PLL setting: PLLCLK <- MCLK and CODEC_CLKIN <-PLL CLK
AC1 = #4
AR1 = #0x03
call i2c_WriteData8
;PLL Power up; PLL Divider params: P = 1, R = 1
AC1 = #5
AR1 = #0x91
call i2c_WriteData8
;PLL setting: J=8
AC1 = #6
AR1 = #0x08
call i2c_WriteData8
;PLL setting: HI_BYTE(D) for D=0
AC1 = #7
AR1 = #0x07
;AR1 = #0x00
call i2c_WriteData8
;PLL setting: LO_BYTE(D) for D=0
AC1 = #8
AR1 = #0x80
;AR1 = #0x00
call i2c_WriteData8
;NDAC = 2
AC1 = #11
AR1 = #0x82
call i2c_WriteData8
;MDAC = 8
AC1 = #12
AR1 = #0x88
call i2c_WriteData8
;DOSR H (DOSR = 32)
AC1 = #13
AR1 = #0x00
call i2c_WriteData8
;DOSR L (DOSR = 32)
AC1 = #14
AR1 = #0x20
call i2c_WriteData8
;Clock Setting Register 11, BCLK N Divider N = 7
AC1 = #30
AR1 = #0x87
call i2c_WriteData8
;Power up NADC and set NADC value to 2
AC1 = #18
AR1 = #0x82
call i2c_WriteData8
;Power up MADC and set MADC value to 4 (ex 8)
AC1 = #19
AR1 = #0x88
call i2c_WriteData8
;AOSR for AOSR = 64 (ex 32)
AC1 = #20
AR1 = #0x20
call i2c_WriteData8
; Point to page 0
AC1 = #0
AR1 = #0x0
call i2c_WriteData8
; DAC PRB
AC1 = #60
AR1 = #16
call i2c_WriteData8
; ADC PRB
AC1 = #61
AR1 = #7
call i2c_WriteData8
;***********************************************************************
;* DAC ROUTING and Power Up
;***********************************************************************
;Select page 1
AC1 = #0
AR1 = #0x01
call i2c_WriteData8
;Left Channel DAC reconstruction filter's positive terminal is routed to HPL
AC1 = #12
AR1 = #0x08
call i2c_WriteData8
;Select page 0
AC1 = #0
AR1 = #0x00
call i2c_WriteData8
;Left and Right Channel have independent volume control
AC1 = #64
AR1 = #0x04
call i2c_WriteData8
;Left DAC Channel Digital Volume +24dB
AC1 = #65
;AR1 = #0x30
AR1 = #0x30
call i2c_WriteData8
;Power up left,right data paths and set channel
AC1 = #63
AR1 = #0x90
;AR1 = #0xB2
call i2c_WriteData8
;Select page 1
AC1 = #0
AR1 = #0x01
call i2c_WriteData8
;Unmute HPL , 0dB gain
AC1 = #16
AR1 = #0x00
call i2c_WriteData8
;Mute HPR
AC1 = #17
AR1 = #0x40
call i2c_WriteData8
;Power up HPL
AC1 = #9
AR1 = #0x20
call i2c_WriteData8
;DAC FILTER
;Select page 44
AC1 = #0
AR1 = #44
call i2c_WriteData8
;BIQ 1 - N0
AC1 = #12
AR1 = #0x03
call i2c_WriteData8
AC1 = #13
AR1 = #0x1A
call i2c_WriteData8
AC1 = #14
AR1 = #0x85
call i2c_WriteData8
;BIQ 1 - N1
AC1 = #16
AR1 = #0x03
call i2c_WriteData8
AC1 = #17
AR1 = #0x1A
call i2c_WriteData8
AC1 = #18
AR1 = #0x85
call i2c_WriteData8
;BIQ 1 - N2
AC1 = #20
AR1 = #0x03
call i2c_WriteData8
AC1 = #21
AR1 = #0x1A
call i2c_WriteData8
AC1 = #22
AR1 = #0x85
call i2c_WriteData8
;BIQ 1 - D1
AC1 = #24
AR1 = #0x63
call i2c_WriteData8
AC1 = #25
AR1 = #0x2F
call i2c_WriteData8
AC1 = #26
AR1 = #0xAC
call i2c_WriteData8
;BIQ 1 - D2
AC1 = #28
AR1 = #0xAE
call i2c_WriteData8
AC1 = #29
AR1 = #0xDB
call i2c_WriteData8
AC1 = #30
AR1 = #0x1C
call i2c_WriteData8
;BIQ 2 - N0
AC1 = #32
AR1 = #0x7F
call i2c_WriteData8
AC1 = #33
AR1 = #0xFF
call i2c_WriteData8
AC1 = #34
AR1 = #0xFF
call i2c_WriteData8
;BIQ 2 - N1
AC1 = #36
AR1 = #0x80
call i2c_WriteData8
AC1 = #37
AR1 = #0x00
call i2c_WriteData8
AC1 = #38
AR1 = #0x01
call i2c_WriteData8
;BIQ 2 - N2
AC1 = #40
AR1 = #0x7F
call i2c_WriteData8
AC1 = #41
AR1 = #0xFF
call i2c_WriteData8
AC1 = #42
AR1 = #0xFF
call i2c_WriteData8
;BIQ 2 - D1
AC1 = #44
AR1 = #0x7F
call i2c_WriteData8
AC1 = #45
AR1 = #0x5D
call i2c_WriteData8
AC1 = #46
AR1 = #0x67
call i2c_WriteData8
;BIQ 2 - D2
AC1 = #48
AR1 = #0x81
call i2c_WriteData8
AC1 = #49
AR1 = #0x44
call i2c_WriteData8
AC1 = #50
AR1 = #0x61
call i2c_WriteData8
@BRC0_L = #0x02FF || mmap()
;localrepeat {
; repeat(#0xFFFF)
; NOP_16
; NOP_16
;}
;***********************************************************************
;* ADC ROUTING and Power Up
;***********************************************************************
;Select page 1
AC1 = #0
AR1 = #0x01
call i2c_WriteData8
AC1 = #52
AR1 = #0xC0
call i2c_WriteData8
;CM_1 (common mode) to LADC_M through 40 kohm
AC1 = #54
AR1 = #0x03
call i2c_WriteData8
;Left MICPGA Volume Control 24dB
AC1 = #59
AR1 = #0x5F
call i2c_WriteData8
;MIC_PGA_R unmute
AC1 = #60
AR1 = #0x80
call i2c_WriteData8
;//////////// AGC CONFIGURATION - START ////////////
;Select page 0
AC1 = #0
AR1 = #0x00
call i2c_WriteData8
;Left Channel AGC Control register 1 (Enable / Disable) - Target Level / Gain Hysteresys Control
AC1 = #86
AR1 = #0x80
call i2c_WriteData8
;Left Channel AGC Control register 2 Hysteresis setting / AGC noise threshod
AC1 = #87
AR1 = #0x06
call i2c_WriteData8
;Left Channel AGC Control register 3 - Maximum gain setting
AC1 = #88
AR1 = #0x00
call i2c_WriteData8
;Left Channel AGC Control register 4 - Attack Time setting
AC1 = #89
AR1 = #0x00
call i2c_WriteData8
;Left Channel AGC Control register 5 - AGC Decay Time setting
AC1 = #90
AR1 = #0x00
call i2c_WriteData8
;Left Channel AGC Control register 6 - Noise debounce time setting
AC1 = #91
AR1 = #0x01
call i2c_WriteData8
;Left Channel AGC Control register 7 - Signal debouce time setting
AC1 = #92
AR1 = #0x01
call i2c_WriteData8
;Left Channel AGC Control register 8 - AGC GAIN FLAG
;AC1 = #93
;AR1 = #0x00
;call i2c_WriteData8
;//////////// AGC CONFIGURATION - END ////////////
;Select page 0
AC1 = #0
AR1 = #0x00
call i2c_WriteData8
;Unmute Left ADC and mute Right ADC
AC1 = #82
AR1 = #0x08
call i2c_WriteData8
;Powerup Left ADC
AC1 = #81
AR1 = #0x80
;AR1 = #0x8A
call i2c_WriteData8
;Dummy read
AC1 = 9
AR1 = 0xABAB
call i2c_ReadData8
return
I'd like to increase furthermore the amplification of my ADC input, because AGC makes it too low.
Any idea?
Thanks in advance
Paolo