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.

TAS5806MEVM: Minimal I2C configuration without using the PurePath Console or a PPCMB

Part Number: TAS5806MEVM
Other Parts Discussed in Thread: TAS5806M, TAS3251

Hi everyone,

(Note: I finally found the solution myself while writing this post. Read my own answer if you're looking for a solution.)

I'm currently working with a TAS5806M EVM and I don't have a "PurePath Console Motherboard" attached. In fact I don't want one.

I have connected a Raspberry Pi model 3B to the I²S and I²C ports of my EVM (I²S: LRCLK, SCLK, SDIN1 ; I²C: SCL, SDA ; of course the GND is also connected to my RPi). The audio output format is I²S @ 48kHz, 32-bit, stereo. I know that the I²S bus works for sure because I manage to get sound out of a TAS3251 EVM with tha RPi as an audio source.

Problems arise when I want to configure my TAS5806M through I²C.

  1. No device answers at address 0x58 or 0x5A, I have an answer from 0x54 instead. As soon as the cable between the RPi and the EVM is removed, nothing is visible. Thus I assume that 0x54 corresponds to an address of some chip on the EVM, but which one?
  2. As soon as the RPi and EVM  are connected together, the 3.3V LED lits up even without any external power source. I've verified my connections and I'm 100% I have no short. The DVDD voltage at U1 is approximately 2.75V whereas the J6 jumper is out (DVDD1 disconnected from DVDD). Is it some sort of back-powering from the I²C bus?
  3. Absolutely all read operation to 0x54 answers 0xff... I precise my I²C bus runs @ 400kHz (verified on a oscilloscope).
  4. I get two more devices when DVDD is up: 0x2C and 0x2D.

No DVDD supplied:

# sudo i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- 54 -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

DVDD On:

# sudo i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- 2c 2d -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- 54 -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

Can someone please give me a way of to configure my TAS5806M through I²C to at least get a sound at the output? I must say the datasheet is not really crystal clear about the configuration registers...

Thanks

  • And now my problem has been solved... by myself. I post my solution for further reference since it could help you :-)

    The clue is that 'i2cdetect', 'i2cset' and 'i2cget' tools from the "i2c-tools" package take addresses on 7 bits:

    • 0x2C shifted to left by 1 position is 0x58 => this is the "first" TAS5806M (U1)
    • 0x2D shifted to left by 1 position is 0x5A => this is the "second" TAS5806M (U2)
    • 0x54 shifted to left by 1 position is 0xA8 => this one is the EEPROM of the evaluation board (24LC512-I/ST configured to be at address b1010100x).

    Here is how I make the first amplifier to go out of reset then play:

    # move to book 0x00
    sudo i2cset -y 1 0x00 0x00
    sudo i2cset -y 1 0x7F 0x00
    # move to page 0x00 (of the current book)
    sudo i2cset -y 1 0x00 0x00
    
    # go out of reset
    sudo i2cset -y 1 0x03 0x00
    # set outputs to High-Z and wait 100ms (at least 5ms are needed)
    sudo i2cset -y 1 0x03 0x02
    sleep 0.1
    # play
    sudo i2cset -y 1 0x03 0x03

    The above registers addresses are taken from the TAS5806M datasheet.

    And I'm also able to set the volume:

    # move to book 0x8C
    sudo i2cset -y 1 0x00 0x00
    sudo i2cset -y 1 0x7F 0x8C
    # move to page 0x2A (of the current book)
    sudo i2cset -y 1 0x00 0x2A
    
    # set L&R volumes to the required value
    # left volume (default value)
    sudo i2cset -y 1 0x24 0x00 0x80 0x00 0x00 i
    # right volume (default value)
    sudo i2cset -y 1 0x28 0x00 0x80 0x00 0x00 i

    The above registers addresses are taken from the Application Note SLOA263A ("TAS580xM Process Flows").

  • As it is resolved, i will submit close it.