Solved
Output gain set is omitted in WM8904_Init()
Hi,
// WM8904.c
int32_t WM8904_Init(WM8904_Object_t *pObj, WM8904_Init_t *pInit)
// ...
if ((WM8904_CurrentDevices & WM8904_OUT_HEADPHONE) == WM8904_OUT_HEADPHONE)
{
ret += WM8904_SetVolume(pObj, VOLUME_OUTPUT, (uint8_t)pInit->Volume);
}
// ...
/* Store current devices */
WM8904_CurrentDevices = (pInit->OutputDevice | pInit->InputDevice);in line 4, WM8904_CurrentDevices is still 0, so the gain is not set.
I'd change the line this way:
if ((pInit->OutputDevice & WM8904_OUT_HEADPHONE) == WM8904_OUT_HEADPHONE)
{
ret += WM8904_SetVolume(pObj, VOLUME_OUTPUT, (uint8_t)pInit->Volume);
}
