3.2 Generación de señales analógicas

Para trabajar con señales analógicas, la placa FM4-176L-S6E2CC-ETH incorpora un codec de audio estéreo (WM8731) con dos conversores analógico-digital (ADC) y dos digital-analógico (DAC). Está diseñado para señales estéreo (canal izquierdo y derecho).

La configuración del codec se realiza mediante el bus serie I2C (MFS2), que conecta el microprocesador con el codec. Los datos de audio se transmiten a través del bus serie I2S.

fig3-6

Figura 3-6. Diagrama de bloques de la placa de desarrollo, se han marcado las conexiones del codec..

3.2.1 Configuración del codec:

Utilizaremos funciones que se encuentran en los módulos HAL_FM4_i2c, HAL_FM4_i2s y FM4_WM8731:

Para utilizar el codec, debemos inicializar el bus I2C, el bus I2S y el codec. La función FM4_WM8731_init() incluida en el módulo FM4_WM8731, realiza estas tareas de inicialización. Esta función, configura el codec para trabajar a una :underline: frecuencia de muestreo de 48 kHz, con datos de 16 bits y 2 canales.

  • El código a incluir en la función main.c es el siguiente:

    #include "HAL_FM4_i2s.h"   // Bus serie I2S
    #include "FM4_WM8731.h"    // Codec de Audio
    
    // Inicialización del I2C, I2s y codec
    FM4_WM8731_init (FS_48000_HZ,              // Frecuencia de muestreo
                    WM8731_LINE_IN,            // Puerto de entrada de audio
                    WM8731_HP_OUT_GAIN_0_DB,   // Ganancia salida de HP (dB)
                    WM8731_LINE_IN_GAIN_0_DB); // Ganancia entrada línea (dB)
    // Puesta en marcha del I2S
    I2S_start ();
    

3.2.2 Escritura de datos en el codec:

Una vez configurado el bus I2C, el codec y el bus I2S, se pueden mandar los valores de amplitud al codec por el bus I2S. Utilizaremos la función FM4_WM8731_Wr() disponible en el módulo FM4_WM8731:

/**
* @brief  Escribe datoL y datoR en WM8731.
*
* @param [out] datoL  Dato canal izquierdo.
* @param [out] datoR  Dato canal derecho.
*
* @return     void
*/
void FM4_WM8731_wr(int16_t datoL, int16_t datoR);