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.

Downloading Hybrid Flow to TAS5756M over I2C

Other Parts Discussed in Thread: TAS5754M

We have a board with a TAS5757M hooked up to our processor through I2C.

We are trying to download a Hybrid Flow file dumped from PurePath Console.

Monitoring the I2C traffic with an I2C analyzer, we can see all the data go across, and the chip is ACKing at the proper time.

We can read back register values, such as A & B volume, and they contain the values sent over.

We can vary the values in registers 0x3D and 0x3E for volume A & B, and read back the data correctly, but the audio level never changes.

We are using the .h file dumped from PurePath Console without any changes, just including it in our project.

Any help would be greatly appreciated.

  • Hi, Christopher,

    Welcome to E2E, Thanks for your interest in our products!.

    Did you dumped the register file after stopping the HybridFlow?, if so, there is a shutdown sequence written by the GUI when stopping the HybridFlows, so you may need to modify the exported file.

    It seems you asked about this in another E2E thread, where Claude provided information that could be helpful for you.

    Best Regards,

      -Diego Meléndez López
       Audio Applications Engineer

  • Hi Diego,
    I tried the suggestion from Claude, but with no success.
    I am just trying to change the volume registers 0x3d and 0x3e in page 0 as a simple first test, but whatever value I put in those locations, (which I can verify by readback), the audio level never changes.

    Regards,
    Chris Kepner
  • Hi, Christopher,

    Sorry for the delay in getting back to you. Can you please let me know which HybridFlow is used in your application?. If the amplifier is streaming audio, and the audio content you are hearing corresponds to the HybridFlow setting, I think the lack of volume level change may be related to something in the audio processing, perhaps DRC. It would be helpful if you can send the .xml file that can be exported from PPC2. 

    Best Regards,

      -Diego Meléndez López
       Audio Applications Engineer

  • Hi Diego,

    I don't see any method of attaching a file.

    Thanks,
    Chris
  • Hi, Christopher,

    Please refer to this link: http://e2e.ti.com/group/helpcentral/w/e2e/148.4-5-attaching-a-file

    Regards,

      -Diego Meléndez López
       Audio Applications Engineer

  • minus2 and a half volume.h

    Here is the flow that we are trying to use.  It is the header file exported from PurePath.

  • Hi, Christopher,

    Thanks for the information, however, I have no way to try the code. Can you please send me the actual PPC2 settings you used?, the software is able to export the settings in .XML format, you can save them by clicking in the Save Settings button on the lower right corner of the GUI. That way I can check the HybridFlow used and configuration of the amplifier's audio processing.

    Best Regards,

      -Diego Meléndez López
       Audio Applications Engineer

  • Hi Diego,

    I don't have access to the PurePath Console, and the hardware engineer is out of town right now.

    But all he did was to launch PurePath Console, do nothing else besides lower the volume 2.5 db and dump the file.

    That is all we are trying for our test case.  Nothing complicated.

    Regards,

    Chris

  • Any action here?

    I've got the president of my client company calling me wanting updates every day, and I keep having to tell him I've heard nothing from TI.

  • Christopher,

    I was pretty busy this week, but I was able to look in detail the code generated, and it seems fine. Have you tried adding the burst write lines Claude suggested before?. It seems the amplifier is being configured with a specific HybridFlow as the settings don't match with the ones exported without an Hybrid Flow configured. Can you please ask your engineer to export a .xml file with "save Settings" function on the software, then send it to me? This way I will be able to analyze the configuration done in the software and try finding the root cause of your issue. As you mentioned the amplifier is working, but the volume level is not changing, I think the issue could be related to the amplifier's configuration. 

    Best Regards,

      -Diego Meléndez López
       Audio Applications Engineer

  • Hi Diego,

    Thanks for the reply.

    I have left it doing single register writes, as that is what the function in the TI generated header file uses.

    It is also far simpler, and doesn't require going through the exported header file, setting all the hi-bit register values, which is error prone.

    I'm using the file as generated by PurePath.

    The hardware engineer is out of town for another week, but if you want to get the exact xml file,  all he did was open PurePath, select Hybrid Flow 4, knock the volume down 2.5 db, and save a file.  Nothing else was done.

    Regards,

    Chris

  • Hi, Christopher,

    I performed some tests, it seems that in your code, the HybridFlow configuration is not the same as default HybridFlow 4. I think the easiest way to check the correct communication of the device is testing the amp without loading any HybridFlow. By default, the amplifier starts in normal operation mode, so when you apply correct I²S data after power up, you will be able to stream audio. So, the test I suggest to do is to modify the volume registers, with every other setting in default, then, if you are not able to change the volume level, the problem is not with the IC, perhaps the communication is incorrect.

    I was able to make the amp work in my side, just writing the default HF4 register settings exported from PurePath Console and changing the volume via I²C. Also, I noticed that PPC exports the last register (in the .h register dump file) with a comma before the last bracket, what seems to be incorrect. I will continue checking this and will get back to you if i find something else. 

    Best Regards,

      -Diego Meléndez López
       Audio Applications Engineer

  • Hi Christopher,

    I just noticed this thread and was curious to know if you are doing this test/development activity on the TAS5754/56M EVM. I ask because I have seen something similar to what you describe and wonder if you might be having the same issue.

    I took a look at the .h file you sent but, unfortunately, I can't tell from this code snippet which device you're addressing. What is the I²C address of the device you're writing to/reading from? We've seen before where a user might have a speaker or the measurement equipment connected to, say, the stereo device on the EVM, but accidently be reading and writing to the mono device. This is very easy to get swapped around in the GUI, so what happens is that you might be writing to and reading back from one device, and it may very well seem to be working correctly since it ACKs and the registers change accordingly. However, since you're measuring/listening to the other device (which is receiving the same audio input signal but not receiving the I²C instructions) it  would appear to not be responding to the I²C commands when you listen to the speaker or measuring with an AP, even though it seems like it should...

    Could you take a quick look?
    Cody

  • Hi Cody,

    I am working with our hardware, not the EVM.

    Both address pins are wired high, so the I2C address I'm using is 0x9E.

    There is only one TI chip on the board.

    Regards,

    Chris

  • Ok,

    Ok, I see… so you’re using your own hardware… got it.. Did you already write P0-R43 to 00011111?
     
     
    Best regards,
    Cody
     
  • Hi Cody,

    The first simple test we tried was to open PurePath Console, select Hybrid Flow 4, knock the volume control setting down 2.5 dB, and dump the header file. At power-up, that header file is dumped to the chip. I looked at that header file just now, and it sets P0-R43 (0x2b) to 0x01.

    The next simpler test I've tried, is to send nothing at power-up, but every second, write to P0-R61 and 62 with a decreasing value.
    I've never been able to hear any difference in the audio level.

    Regards,
    Chris
  • Hi Chris,
     
    Ok. If you chose HF4, then I assume you have a mono system, likely a subwoofer, which you are using in this application- is that correct? I ask because the GUI is set-up in such a way that HF4 is only available for use on the mono device.

    I still think you might be having trouble with addressing. Can we have a call tomorrow afternoon to discuss further? I’d like for Diego, you and I to chat so we can get you taken care of quickly. Do you have some time after 3P CST?
     
    Best regards,
    Cody
  • Hi Cody,

    Yes, a phone call would be good.
    My cell # is 408-799-2838.

    I think the address is correct, as I can see the bytes being ACK'd on the I2C analyzer.
    If I change the address in my firmware to something else, I get no ACK's, and there is nothing else on this I2C bus.

    Regards,
    Chris
  • Hi Cody,

    I was thinking about our phone call and one thing came to mind.
    The only board I have in the office blew up on me the other night.
    They are shipping me a new board that will arrive some time on Wednesday, but it could be at any time.
    Is it possible to do the phone call on Thursday, so I could have the working board ready to try anything you suggest?
    I don't want to miss the opportunity here for your support, so we can do it without the board, if Thursday doesn't work.

    Regards,
    Chris
  • Hi, Christopher,

    We can move the call to Thursday, can you please share your email so i can send you the meeting details?

    Thanks,

    Best Regards,

      -Diego Meléndez López
       Audio Applications Engineer

  • Hi Diego,

    Thanks for moving the call. I think it makes more sense for me to have the board in front of me when we talk.
    Email is : ChrisK@GeminiConsulting.biz

    Regards,
    Chris
  • Hi Cody, Diego,

    So the basic operation is working great now for our first product that only sets the volume registers to one value or the other, based on a switch position.  This version only required writing three locations, so not to tough.

    The next version of the product actually has to send over a Hybrid Flow.  The parameters are: Hybrid Flow 1, Filter 1 high-pass, Butterworth 2, center frequency 100 Hz.  (the xml file is attached).

    We get no audio coming out of the system when we use this file.  Nothing we have tried to dump out of Pure Path has ever worked.

    What we thought we should be able to do, is use Pure Path Console, set up the parameters the way we want, dump a .h file and just include that in our firmware.

    Our firmware just writes out the contents of the .h file over the I2C bus.  If this is not a reasonable way to get results, please let us know.  If not, I don't know why TI put the feature into PurePath inPoEHighZ 7-21.hPoEhighpass100.xml the first place.

    Trying to interpret the registers that are being written to by the header file is very difficult as many of the registers are not included in the Jan. 15 datasheet for the part.  If there is a complete document for the register set, we would like to get our hands on it.

  • Hi, Christopher,

    Thanks for the feedback. About the registers missing from the D/S, you may take a look to the TAS5754M Datasheet, this device and the '56M have the same register map. We are working to fix the missing register map, we apologize for any inconvenience.

    About your question, you may try configuring register 43 (0x2B) with a value of 0x1F to configure the amplifier to use the DSP program loaded in the RAM. 

    Best Regards,

      -Diego Meléndez López
       Audio Applications Engineer

  • Hi Diego,

    Thanks for the link to the other datasheet.  I see if that is more complete.

    As far as writing register 43 to 0x1F, we had tried that with no success.

    I did check the file I posted and it didn't have it in that file.  I have tried manually adding a write to that register at the end of register dump, and also tried changing it in the page 0 section at the end of the header file.

    Some of the .h files we have dumped from Pure Path have this register value set, and some to not.  Not sure why it isn't consistent.

    Regards,

    Chris

  • The dump files often include a mute or shutdown command as part of creating the dump file. Can you check and make sure that the device is not muted or otherwise shutdown via the registers?
     
    Best regards,
    Cody
  • Hi Cody,

    I did check for any mute conditions and I even manually changed register values to make sure it wasn't muted.
    Some configurations we have gotten audio out, but we purposely created a configuration where the audio would be so affected, that it would be obvious that the Hybrid Flow was running. We have never been able to create any configuration where the audio was changed by a Hybrid Flow. The only thing we have ever been able to make work is the up/down volume register changes, which don't require a Hybrid Flow to be running.

    Regards,
    Chris
  • Hi, Chris,

    Sorry for the delay. After a couple tests, I found out that your code does not have the HF1 loaded.I managed to test your file in my EVM by changing the C format to CFG, and verified that only the volume can be changed and HF1 had no effect. While working with your XML file, I performed a new register dump after loading your HybridFlow, and it worked as expected in both .CFG and .H generated files. I compared your code with mine, and it seems that your code was dumped before loading the HybridFlow to the amplifier. The dump feature of PPC exports the register settings inside the amplifier, so if you don't load the HybridFlow into the amplifier, the generated code will contain the default processing. 

    I am attaching the .h file I created. it includes the Exit Shutdown sequence.

    TAS5756M_HF1-GeminiConsulting.h

    Best Regards,

      -Diego Meléndez López
       Audio Applications Engineer

  • Hi Diego,

    Thanks for getting back to us.

    That makes sense with what we have been experiencing.

    One question I have, is do we need to add/subtract anything from the .h file that is dumped by Pure Path?

    Regards,

    Chris

  • Hi, Chris,

    You may need to add only the exit shutdown sequence I added to the file. The registers can be exported only after stopping the HybridFlow, this stop process includes a shutdown sequence so it is necessary to add an exit SD sequence to return to normal operation.

    Best Regards,

      -Diego Meléndez López
       Audio Applications Engineer

  • Hi Diego,
    First I would like to thank you for assisting us in resolving this problem.

    Second, I would like a little more clarification.

    The header file adds a Post-Initialization section. When I compare this section to your "Exit SD" section, I see that you first call up page 0 {0x00, 0x00}. This was done in the Post-Initialization section just 5 commands before, so I don't see that this is necessary. Then you "un-mute" both channels {0x03, 0x00} which was also done in the post-initialization section. Skip your 3rd command for a minute. After this you take the amp out of powerdown and standby states {0x02, 0x00}, which is also done in the post-initialization. Finally, you set the volume (0x3d and 0x3e). I suspect that this would default to the default value 0x30.

    Back to your 3rd command, which assigns DAC outputA to channel A and DAC B to channel B. This is crucial, because when the hybridflow is stopped (as it must be to create a dump) it sets register 0x2a to 00. This sets both DACs to zero data (mute) ! So there is no data coming out of the mini-DSP.

    Apart from setting the volume level in your "Exit SD" code, assigning the DAC state is the only command that is not duplicated in the Post-Initialization section of the dump file. If my analysis is correct, I suggest that TI strongly consider adding this command to the postinitialization section of the dump file.

    Am I missing something?
  • Hi, Tom, 

    Thanks a lot for your feedback. You are right, the addition of the sequence repeats a couple registers already added by the GUI, as I added a generalized sequence I used before. I agree with you, we will consider adding the 0x2A register command to the post-initialization section.

    Thanks again for your comments, please let us know if you need further assistance.

    Best Regards,

      -Diego Meléndez López
       Audio Applications Engineer