cancel
Showing results for 
Search instead for 
Did you mean: 

EVAL_AUDIO Codec Configuration STM32F4 Discovery

epalaima
Associate II
Posted on July 13, 2016 at 18:56

Hi, I am working with the STM32F4 discovery board and I'm trying to use the built in codec. I am trying to configure it to play audio from 2 alternating buffers I create. I have set up my callback function to start playing the next buffer once the previous buffer is finished. Currently for testing purposes I set all values in one buffer to 0 and all in the other to 32767, which creates a crude square wave, but I am not getting any audio out, can anyone see what I am missing?

I start audio playback in my main via:

&sharpdefine MY_BUFSIZE 1024

static volatile uint8_t nextbuf;

static volatile uint16_t bufferNumber;

static int16_t buf0[MY_BUFSIZE];

static int16_t buf1[MY_BUFSIZE];

int main(void){

  SystemInit();

  EVAL_AUDIO_SetAudioInterface(AUDIO_INTERFACE_I2S);

  EVAL_AUDIO_Init(OUTPUT_DEVICE_BOTH, 100, 48000);

  compute_buffer(buf0, MY_BUFSIZE, 0);

  compute_buffer(buf1, MY_BUFSIZE, 1);

  Audio_MAL_Play((uint32_t)buf0, MY_BUFSIZE / 2);

 //EVAL_AUDIO_Play((uint16_t*)buf0, MY_BUFSIZE/2);

 while(1){

}

}

Here is my callback function:

void EVAL_AUDIO_TransferComplete_CallBack(uint32_t pBuffer, uint32_t Size)

{

    if(nextbuf == 0) { ;

        Audio_MAL_Play((uint32_t)buf0, MY_BUFSIZE);

        nextbuf = 1;

    } else {

        Audio_MAL_Play((uint32_t)buf1, MY_BUFSIZE);

        nextbuf = 0;

    }

}

Here is how I fill the buffers:

void compute_buffer(int16_t *pbuf, int bufsize, uint16_t bufferNumber)

{

    int i;

    for(i = 0; i < bufsize / 2; i+=2) {

        pbuf[i] = bufferNumber * 32767;

        pbuf[i + 1] = bufferNumber * 32767;

    }

}

Do I need to use the DAC instead of I2S, or is there something else I need to configure? I was having a hard time finding how the EVAL_AUDIO_TransferComplete_CallBack function is connected to the Audio_MAL_Play function. I also tried using EVAL_AUDIO_Play, with the same results.

#stm32f4discovery-audio-codec
0 REPLIES 0