STM32F769I-DISCO: No audio output from wm8994
Posted on October 14, 2017 at 03:33
With STM32CubeF7 V1.8.0, there is no audio output from the wm8994 audio chip via the 3.5 mm blue audio output jack on the STM32F769I-Discovery board when parameter OUTPUT_DEVICE_HEADPHONE (or alias OUTPUT_DEVICE_HEADPHONE1) is passed to BSP_AUDIO_OUT_Init().
As a result, example SAI_AudioPlay in folder 'STM32Cube_FW_F7_V1.8.0\Projects\STM32F769I-Discovery\Examples\SAI\SAI_AudioPlay' does not work.
The problem does not occur with STM32CubeF7 V1.7.0.
In file wm8994.c of STM32CubeF7 V1.8.0 (in folder 'STM32Cube_FW_F7_V1.8.0\Drivers\BSP\Components\wm8994'), the following 'cold / warm / soft start' code (lines 470 to 496) has been added since V1.7.0 that gets run when OUTPUT_DEVICE_HEADPHONE is passed to BSP_AUDIO_OUT_Init():
if (output_device == OUTPUT_DEVICE_HEADPHONE)
{
/* Select DAC1 (Left) to Left Headphone Output PGA (HPOUT1LVOL) path */
counter += CODEC_IO_Write(DeviceAddr, 0x2D, 0x0100);
/* Select DAC1 (Right) to Right Headphone Output PGA (HPOUT1RVOL) path */
counter += CODEC_IO_Write(DeviceAddr, 0x2E, 0x0100);
/* Startup sequence for Headphone */
if(ColdStartup)
{
counter += CODEC_IO_Write(DeviceAddr,0x110,0x8100);
ColdStartup=0;
/* Add Delay */
AUDIO_IO_Delay(300);
}
else /* Headphone Warm Start-Up */
{
counter += CODEC_IO_Write(DeviceAddr,0x110,0x8108);
/* Add Delay */
AUDIO_IO_Delay(50);
}
/* Soft un-Mute the AIF1 Timeslot 0 DAC1 path L&R */
counter += CODEC_IO_Write(DeviceAddr, 0x420, 0x0000);
}This code gets run INSTEAD of this existing output configuration code that starts:
else
{
/* Analog Output Configuration */
...Solution: I've found that increasing the first delay in the new code from 300 to 350 (i.e. AUDIO_IO_Delay(350)) solves the problem. I've not investigated why this works or whether it is a complete solution.
A workaround, that doesn't involve editing wm8994.c, is to call BSP_AUDIO_OUT_Init() twice.
*** Moderator: Please pass this information to the relevant (STM32CubeF7) personnel. ***
JB.
Bug in wm8994.c in STM32CubeF7 V1.8.0 re audio output.
#stm32f769i-disco #wm8994 #no-audio-output #stm32f7cube
