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