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.
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_i2syFM4_WM8731:Para utilizar el codec, debemos inicializar el bus
I2C, el busI2Sy el codec. La funciónFM4_WM8731_init()incluida en el móduloFM4_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);