Post Go back to editing

ADSP BF706 EZ-kit Filter Example

Category: Software
Product Number: EVAL-BF706M-EZlite


I was playing around with the example code that has a High Pass and Low Pass Filter cycled through for the EVAL-BF706M-EZLITE Evaluation Board. I wanted to try creating my own effects and basing the backbone off the example code. The function AudioFilter(const fract32 dataIn[], fract32 dataOut[]) is called and the input is the audio samples that are being communicated to the DSP and the output is being directly copied to the Tx Buffer. So I figured that if I made a function in place of the iirdf1_fr32 function found in AudioFilter.c, I would be able to manipulate the dataIn and write the manipulated data to the Tx Buffer. However when I attempted this I heard a High pitch noise when I press the button that calls the filter function. After I noticed this I tried just directly writing the dataIn[] structure to the dataOut[] without calling the iirdf1_fr32 function and the noise appears again when the filter is enabled. However when I write the input data directly to the output when the iirdf1_fr32 function is called the noise is not present. The noise reappears again if the filter initialization is not called. Is the iirdf1_fr32 function altering the data in in some way that I'm missing? Or is it possible there is something that is happening with the delay lines during the filter initialization that prevents the high pitch noise that I am hearing?

Sorry if the description of the problem is kind of vague, I can provide any information that is necessary!

Thank you,


Thread Notes

  • void AudioFilter(const fract32 dataIn[], fract32 dataOut[])
    int n;
    int i;

    /* separate channels (2D DMA would be better) */
    i = 0;

    for (n=0; n<SAMPLES_PER_CHAN; n++){
    inRight[n] = dataIn[i++];
    inLeft[n] = dataIn[i++];

    /* left channel filter */

    //iirdf1_fr32 (inLeft, outLeft, SAMPLES_PER_CHAN, &stateLeft);    *************When these functions are commented the noise appears.*********************

    /* right channel filter */
    // iirdf1_fr32 (inRight, outRight, SAMPLES_PER_CHAN, &stateRight); *********When they are not commented and input is directly sent out the noise is not there******

    /* combine channels (2D DMA would be better) */
    i = 0;
    for (n=0; n<SAMPLES_PER_CHAN; n++){
    dataOut[i++] = inRight[n];    //outRight[n]; ************************ Here I send the input straight to the output ************************************************
    dataOut[i++] = inLeft[n];      //outLeft[n];

  • Hi,

    The ADAU1761 codec driver when using adi_sport_ConfigClock() with the bFallingEdge parameter being incorrectly true. A bug whereby the bFallingEdge parameter was not being handled correctly, and this may trigger the problem with the ADAU1761 driver examples you have encountered.

    We have a patch for you to apply to adi_adau1761.c at
    C:\Analog Devices\ADSP-BF706_EZ-KIT_Mini-Rel1.1.0\BF706_EZ-Kit_MINI\Blackfin\src\drivers\codec\adau1761\

    For the two calls of adi_sport_ConfigClock() replace the fourth parameter (true,) in each with:

    #if __CCESVERSION__ >= 0x02040000
    false, /* CCES-11151 fixed */
    true, /* passing true compensates for CCES-11151 */

    Can you please replace the codec driver with the attached one in the below installation path and let us know the results.

    <installation_path>\Analog Devices\ADSP-BF706_EZ-KIT_Mini-Rel1.1.0\BF706_EZ-Kit_MINI\Blackfin\src\drivers\codec\adau1761

    If you are still facing the issue, could you please share us the modified project that replicates the issue.

    This would be helpful for us to assist you better.

    Best Regards,

  • Hi Santha,

    I made this edit to the adi_sport_ConfigClock() before trying to mix around the example.. I tried replacing the audio code file entirely with the one located here and the problem still persists.

    After playing around a little I found out that I had accidentally written the headphone volume for the RHeadphone and LHeadphone to a decimal value instead of the Hex value that I meant to assign to it. Thank you for your help though!