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.

TAS5782M: PPC3 generated initializtion fails

Part Number: TAS5782M

I'm developing a 2.1 audio system with TAS5782 in stereo mode and TAS5760 in mono mode. I'd like to use the TAS5782 as I2S master. MCLK is generated by external 24.576Mhz oscillator. I used PPC3 for basic configuration. Since not all register are configurable via the tuning GUI I worked with the Register view to configure I2S master mode and the clock dividers. I then dumped the current state to a header file and downloaded everything to the target. Unfortunately it didn't work.

I now noticed that some settings, for example the SCLK & LRCLK output settings, aren't even dumped into the header file. The clock divider settings neighter. Even worse, when I reopen the register map view, the clock divider settings are resetted to 0! 

According to the section "Power Up Sequence" of the document "TAS5782M process flows" I now tried to manually set the serial audio port settings and download the ppc3 generated array after this, but it overwrites my settings.

Can you help me with the procedure to initialize the target?

  • Hi Micha,
    We are looking into this issue and Andy will get back to you later. Thanks for your patience.
    Best regards,
    Shawn Zheng
  • Hi Micha,

    If I remember correctly, for now PPC3 GUI will not dump the Page 0 into the header file since it assumes that the TAS5872M device is running in auto set mode, which means the internal clocking tree is configured completely by itself.

    In your case, you have two options.
    a) Modify the header file and add your clock settings.
    b) Download your clocking configurations after the header file is downloaded.

    Andy
  • Hi Andy

    I think I expressed myself vague. I use the clock auto set mode. Anyway I have to set the SCLK & BCLK Clock dividers because I use the device as I2S master.
    I forgot to set the clock dividers functional after changing the divider values. After modifying the header file at the proper position, the clock tree now works, no error flags are set.
    According to the document "TAS5782 process flows" you have to initialize the clocks before downloading the DSP values, so i assume your option b) might not really work (I didn't test ist).

    In my opinition it's very confusing that I can change values in the register map, which in the end have no effect to the header file. Especially when some other settings from page 0, like sdout settings, are dumped into the header file.

    Unfortunately I didn't get the device working. I2S clocks are beeing generated and the bluetooth module sends audio data. I'm also able to send these data to the TAS5760, which is connencted to GPIO2, configured as SDOUT. SDOUT is the DSP input (pre-processing).
    I've seen that in register 0x6c (analog mute monitor) right an left channel are muted. But I can't find any informations why this happens an how i can change it. At the Input of the DSP data have to be correct, otherwise TAS5760 on sdout would not work. Any suggestions?
  • Hi Micha,

    If I remember correctly, we assumed the TAS5782M would be used as an I2S slave when the TAS5872MEVM was designed. It would not be easy to debug the TAS5782MEVM if TAS5782M acts as I2S master.

    Do you see any problem if TAS5782M is configured an I2S slave? Are you sure your issue is due to the master mode settings?

    Andy
  • Hi Andy

    It's an education project and for cost savings I directly designed my own hardware without buying TAS5782MEVM.

    Because of the chosen parts for my hardware, I can't test TAS5782M as I2S slave.

    I'm pretty shure, the issue i have now, is not because of the master mode settings. As far as I've seen, the only difference between master and slave mode is,
    that in master mode SCLK and LRCK are generated by TAS5782M. Since these clock signals are correctly generated I assume it's another problem.

    As i wrote in my previous post, I'm able to send data to the TAS5782M from a bluetooth module and to route them to a TAS5760 when GPIO2 is configured as SDOUT (pre processing).
    When i change the configuration for SDOUT to post processing I have no data on SDOUT. My conclusion is, that the DSP is not working properly. But how am I able to check this? I haven't seen
    something like a DSP status register.
    I dumped all registers from page 0 after complete init of the TAS5782M. There is one register which shows unexpected values:

    Register 106 (0x6c) Analog Mute Monitor
    Value: 0x00 --> right & left channel analog muted

    I can't find any informations about analog mute in the datasheet, so it's difficult to debug.

  • Hi Andy

    I have a little update. With a litte workaraound I'm now able to use TAS5782 in slave mode for testing.
    To my surprise the amplifier now works. So it seems to be a problem with I2S master mode. 

    I tried several methods to get the device working as I2S master but i didn't succeed. I always get the device to generate the I2S clocks,
    but the DSP never boots up (checked with dsp boot flag on GPIO0) and the output stage is always shut down.

    I use a PPC generated header file and only added the commands to put the device into master mode. In my opinion the correct position would be after the first 13 commands before
    the device is put in normal mode and then enable the external MCLK and wait at least 5ms before sending the remaining commands including the dsp values.

    I just found a little note in the datasheet on page 38:

    I haven't used any pull-up resistors so I'm gonna try this. But which sleep mode do you mean? I can't find any information about a sleep mode in the datasheet.

    Micha

  • Hi Andy

    Tried it with 10k pull-up resistors on SCLK and LRCK, still the same behaviour. I can dynamically change between master and slave mode without shutting down the device. In slave mode it always works, but not in master mode.
  • Hi Micha,

    I'm checking with my colleagues to see whether we have code examples for configuring the master mode.

    Andy
  • Hi Andy

    Have you found something that could help me?
    I tried all I could, but still no success. I really think I'm doing something wrong or a little sequence is missing dudring init.
    So a code example would help me a lot.

    Micha
  • Hi Micha,

    We don't see a way to enable TAS5782M directly in master mode after checking with our colleagues. I would suggest you let TAS5782M start running in the slave mode then switch to master mode.

    Andy
  • Hi Andy

    Hmm, would be nice if such things would be held down in the datasheet.
    How should this be done? As I wrote in one of the previous posts, the device works as long as it acts as slave. But as soon as I change it to master, it stops working.
    Do you have any sample code for switching to master mode when the device was started in slave mode?

    Micha

  • Hi Micha,
    We are lookin into this, and Andy will get back to you later.
  • Any updates about using TAS5782 in master mode?

  • Hi Micha,

    Try to output the internal PLL clock to one of the GPIOs.  Let me know what you can see.

    Andy