Post Go back to editing

adau1701 frequency response strange issue

Category: Hardware
Product Number: ADAU1701
  1. Hi. I'm using an ADAU1701 with I2S input and DAC output as an active crossover. It takes I2S from a Bluetooth module with 6.122MHz BCLK and 96kHz LRCLK. It also has a 12.288MHz oscillator as master clock. In Sigma Studio, I've set the PLL to 256 and core rate to 2x256. What's happening is that the signal appears on the VOUT with a sort of LPF response at 12dB/decade starting from a very low frequency, about 100Hz. It was measured directly on the VOUT pins. Just for testing purposes, in Sigma Studio I have made a direct connection from the I2S input to VOUT, but I still get this "phantom" LPF response. Am I doing something wrong? I forgot to say that the I2S is reclocked using a 74HC574 before going to the ADAU1701. Thanks.
Parents
  • Hi again. I did more testing in Sigma Studio by replacing the I2S input first with separate sine wave generators for each output, then with sweep generators and the response was perfect. At this point, the problem is probably due to the I2S input, the data that actually arrives at the ADAU 1701 or how it interprets the data. Are there any parameters that can be changed in Sigma Studio regarding the way the I2S input converts to analog? Thanks.

  • Hello SantoP,

    with the 12.288MHz master clock you should set the PLL for 256 mode which will give you the base sample rate of 48kHz which is all good and it looks like you are setup correctly. 

    Then since the Bluetooth module is putting out 96kHz you do need to setup everything else for 96kHz. 

    It looks like you may have correctly setup the core rate but I am not sure since you sort of got it mixed up. The 2X setting is correct but it is 512 instructions not 256. Here is the correct setting.

    So you two of the three things set correctly. You have correct frequency clocks coming in, you have the core rate setup correctly but you made no mention of SigmaStudio being setup for 96kHz?

    You have to tell SigmaStudio to compile code for the correct sample rate:

    If you do not do this then all the frequencies are wrong. This would be the oscillators and the filters. It is also for the time constants as well. 

    Your description of the issue might be fooling me. You said "phantom" signal? Are you seeing and hearing tones when there is no signal? Search the forum for "Idle Tones" and you will find several posts where I discuss this. 

    In addition. What I also see happen often with the ADAU1701 is that people use single precision filters for low frequency filters. If you are filtering below 500Hz then you should use double precision filters. It takes more instructions so it might cause you to run out of instructions. At 96kHz you only have 512 instructions. 

    Dave T

  • Hi Dave,

       thanks for the quick reply.

    Sorry for my mistake, it is 2x256=512, and that's how it's set up. Also, everything is set up for 96kHz. Here are two images. I simplified everything to the bone to see if any instruction was causing the strange output reponse, but it's the same.

    What's happening is that sending a sine wave over blueooth that enters the ADAU1701 via I2S, the output level varies with the frequency, as if there were a low pass filter somewhere. I worked out the signal attenuates at a rate of 12dB/decade, with a corner frequency of about 100-120Hz. That's what I meant by "phantom" signal, but the term is probably worng, apologies.

    As I mentioned before, I tried using the internal oscillators and the output was absolutely perfect, so I guess that it's something to do either with the I2S signal itself, the reclocking circuit or with what the module actually outputs. 

    I just wanted to check with you if something could be wrong with the I2S settings or something I'm missing.

    Thanks again.

    Santo

  • Hi again, I forgot to ask you about the filtering, once I sort out this frequency response problem. I'm definitely using double precision filters and I need 4 high pass and 4 low pass filters, as well as an attenuator for the output, an equalizer and probably a compressor. Do you think that my setup isn't powerful enough for all this?

    Thanks again

    Santo

    1. Hi again and sorry for all these messages. I just wanted to let you know that I removed the reclocking circuitry and using a slightly jittery master clock coming from the module itself. At least I know that master clock is synchronised with the I2S signals. I sent a verified sweep signal by Bluetooth and there's still this filtered output despite me deleting everything from the Sigma Studio schematic and leaving a straight line input to output. Here's a video showing the signal measured directly on the VO UT pins of the ADAU1701. I'm quite baffled. 
  • Hello SantoP,

    This is interesting because there is no way the serial port is doing any kind of filtering. So there is something happening that we are missing. You do need to have the MCLK be synchronized to the LRCLK and the BCLK so it was good to remove your re-clocking circuitry as a test. My only theory here is if the frequencies were that slightly off then the audio would be muting for short periods of time and I did not really see that on your scope output. Again, that would not cause a filtering. A serial port is all about transferring data not changing the data in a way that acts like a filter! That would be handy if it were possible! LOL

    You did an excellent test to use an internal oscillator to drive the DACs.  The fact that it is good tells me it is the data coming from the Bluetooth module itself. Something is going wrong there but I do not have any suggestions. I would like for you to do one test if it is possible with your hardware. MP10 is the LRCLK signal for the serial output port. Set the MP10 pin for that function. Then set the serial output port into master mode. Then set the frame sync frequency to be Internal clock/1024. Then put your scope on the MP10 pin and see what frequency is coming out? It should be 48kHz. This test will tell us if the internal clocks are running at the correct rate. I expect it to be correct but this is the last bit of checking to see if it could be something in the DSP. 

    To answer your earlier question about if you have enough instructions for what you need to do. Well,.. build the project and compile it. If it is too large of a program it will give you an error message. If you do not get an error message then go to the folder where the project is kept in. There will be a folder called IC1_"your project name". In that folder is another folder called net_list_out2. Open that folder. 

    In there is a text file called compiler_output.txt. Open that file and in that report will be the number of instructions used by the program. The max is 1024. As soon as you get over around 1010 you may start to see problems because some frames need a few extra instructions when you use Safeload.

    Dave T

  • Thanks Dave, really appreciated. I'll do that test and let you know. For now, I'm trying to see if I can do something to the Bluetooth module. I'll be in touch.

    Thanks again

    Santo

  • Hi again Dave. I did the test that you suggested and the 48kHz signal is there on MP10. In any case, I eventually found the cause of the problem, believe it or not. The Bluetooth module has its own DSP (it uses a Qualcomm chipset) and it has a function called "bass enhance" which was enabled in its firmware by mistake. This gives that weird response, maybe it's meant only for use with subwoofers, who knows. Anyway, I had it disabled in firmware and everything is back to normal.

    Now I can go back to setting up the crossover frequencies and check if it works and if there are enough instructions for it.

    Thanks a million for your time, advice and patience!

    Best wishes

    Santo

Reply
  • Hi again Dave. I did the test that you suggested and the 48kHz signal is there on MP10. In any case, I eventually found the cause of the problem, believe it or not. The Bluetooth module has its own DSP (it uses a Qualcomm chipset) and it has a function called "bass enhance" which was enabled in its firmware by mistake. This gives that weird response, maybe it's meant only for use with subwoofers, who knows. Anyway, I had it disabled in firmware and everything is back to normal.

    Now I can go back to setting up the crossover frequencies and check if it works and if there are enough instructions for it.

    Thanks a million for your time, advice and patience!

    Best wishes

    Santo

Children
  • Hi again. I'm not sure I should be using this same thread to continue the discussion, please let me know if I need to open a new one. I just need to ask you a couple of things that have arisen during testing.

    First, I added a two-way crossover filter for a coaxial driver that I'm using and configured it for Linkwitz-Riley 12 for the woofer/mid, and Linkwitz-Riley 24 for the tweeter, with a common crossover point of 3kHz. With this configuration, no signal comes out, but if I set Linkwitz-Riley 12 or 24 or for both, then it does. Is this something known? Do both sections need to have the same filter type?

    Then, I have added a compressor on each of the four outputs. I liked the standard RMS type as it has lots of flexibility but it's only available in stereo and I have four mono signals. For all four outputs, I tried splitting the signal with a T Connection, sending the two identical signals into both channels of the compressor, then merging the two compressor outputs back into one to get my mono signal back. Almost as expected, it didn't work, I had no signal on the output, but logically the principle should have worked. Do you have any idea if this is possible or am I missing something? Or is there a mono version of this compressor that I am not seeing? This is the compressor I was thinking of, only available in stereo.

    Thanks in advance.

    Santo

  • Sorry, I made a mistake about the crossover: it doesn't work either with Linkwitz-Riley 24 set on both low and high sections. It works with both on 12, but there's a big hole in the frequency response. I'm trying to follow the driver manufacturer's recommendations of 3kHz crossover frequency with 12dB/octave for the mid-woofer and 18db/octave for the tweeter (which isn't available in Linkwitz-Riley, hence I used 24).

    Thanks