BF706 ezlite mini input and output data types

Hi, I'm a bit lost right now. I can get the input and output from, let's say, Audio Precision, however, there is something missed.

I sent 1 kHz (100 mVRMS) to the BF706 ezlite mini and after I changed it to long fract or float, I got 0.0003. When I sent back to Audio Precision, it showed 81.2 mVRMS.

What did I miss? Do I have to do scaling rather than using lrbits or bitslr? Here's my code below, please kindly assist me. Thanks a lot.

Parents
  • void RX_ISR(uint32_t iid, void *handlerArg)
    {
        if (*pREG_DMA1_STAT & ENUM_DMA_STAT_IRQDONE)
            *pREG_DMA1_STAT = ENUM_DMA_STAT_IRQDONE;
    
        channel[codec_Left] = lrbits(bufferRx[codec_Left]);
        channel[codec_Right] = lrbits(bufferRx[codec_Right]);
    
        xS[0] = lrbits(bufferRx[codec_Right]);
    	for(i = orderS - 1; i > 0; i--)
    	{
    		xS[i] = xS[i - 1];
    	}
    
        bufferTx[codec_Left] = bitslr(output);
        bufferTx[codec_Right] = bitslr(xS[0]);
    }

Reply
  • void RX_ISR(uint32_t iid, void *handlerArg)
    {
        if (*pREG_DMA1_STAT & ENUM_DMA_STAT_IRQDONE)
            *pREG_DMA1_STAT = ENUM_DMA_STAT_IRQDONE;
    
        channel[codec_Left] = lrbits(bufferRx[codec_Left]);
        channel[codec_Right] = lrbits(bufferRx[codec_Right]);
    
        xS[0] = lrbits(bufferRx[codec_Right]);
    	for(i = orderS - 1; i > 0; i--)
    	{
    		xS[i] = xS[i - 1];
    	}
    
        bufferTx[codec_Left] = bitslr(output);
        bufferTx[codec_Right] = bitslr(xS[0]);
    }

Children
  • 0
    •  Analog Employees 
    on Apr 16, 2019 8:50 AM over 1 year ago in reply to AnthonyM

    Hi Anthony,

    Can you please explain more about your application? From your code snippet I believe you performing audio talk-through application on ADSP-BF706 mini. Correct? A simple block diagram would be helpful on assisting you better on this issue.
    You mentioned, "I sent 1 kHz (100 mVRMS) to the BF706 ezlite mini and after I changed it to long fract or float, I got 0.0003. When I sent back to Audio Precision, it showed 81.2 mVRMS.". Do you mean that you are changing the variables to long fract/float somewhere in the code? Is yes, does the code work correctly if you do not change it?

    BTW, are you implementing any filtering algorithm in the code?

    You can also take a look at the example code provided in the Board Support Package for some additional information. The path of the example code is given below
    <Installation path>\Analog Devices\ADSP-BF706_EZ-KIT_Mini-Rel1.1.0\BF706_EZ-Kit_MINI\Blackfin\Examples

    The BSP can be downloaded from the below link.
    download.analog.com/.../ADI_ADSP-BF706_EZ-KIT_Mini-Rel1.1.0.exe

    Regards,
    Lalitha S

  • Sorry, my fault. I already solved it, it's the matter of bits. At first, I used lrbits to get 32 bits data from a 24 bit ADC which is wrong. I solved by changing the ADC to 16 bits and put the data to 16 bits buffer instead. Thanks a lot for the reply, I'm really sorry for the inconvenience.

  • 0
    •  Analog Employees 
    on Apr 17, 2019 5:31 AM over 1 year ago in reply to AnthonyM

    Hi Anthony,

    Thanks for the update.

    Regards,
    Lalitha.S