STM32F769IDiscovery  1.00
uDANTE Audio Networking with STM32F7 DISCO board
wm8994.h
Go to the documentation of this file.
1 
39 /* Define to prevent recursive inclusion -------------------------------------*/
40 #ifndef __WM8994_H
41 #define __WM8994_H
42 
43 /* Includes ------------------------------------------------------------------*/
44 #include "../Common/audio.h"
45 
70 /******************************************************************************/
71 /*************************** Codec User defines ******************************/
72 /******************************************************************************/
73 /* Codec output DEVICE */
74 #define OUTPUT_DEVICE_SPEAKER ((uint16_t)0x0001)
75 #define OUTPUT_DEVICE_HEADPHONE ((uint16_t)0x0002)
76 #define OUTPUT_DEVICE_BOTH ((uint16_t)0x0003)
77 #define OUTPUT_DEVICE_AUTO ((uint16_t)0x0004)
78 #define INPUT_DEVICE_DIGITAL_MICROPHONE_1 ((uint16_t)0x0100)
79 #define INPUT_DEVICE_DIGITAL_MICROPHONE_2 ((uint16_t)0x0200)
80 #define INPUT_DEVICE_INPUT_LINE_1 ((uint16_t)0x0300)
81 #define INPUT_DEVICE_INPUT_LINE_2 ((uint16_t)0x0400)
82 #define INPUT_DEVICE_DIGITAL_MIC1_MIC2 ((uint16_t)0x0800)
83 
84 /* Volume Levels values */
85 #define DEFAULT_VOLMIN 0x00
86 #define DEFAULT_VOLMAX 0xFF
87 #define DEFAULT_VOLSTEP 0x04
88 
89 #define AUDIO_PAUSE 0
90 #define AUDIO_RESUME 1
91 
92 /* Codec POWER DOWN modes */
93 #define CODEC_PDWN_HW 1
94 #define CODEC_PDWN_SW 2
95 
96 /* MUTE commands */
97 #define AUDIO_MUTE_ON 1
98 #define AUDIO_MUTE_OFF 0
99 
100 /* AUDIO FREQUENCY */
101 #define AUDIO_FREQUENCY_192K ((uint32_t)192000)
102 #define AUDIO_FREQUENCY_96K ((uint32_t)96000)
103 #define AUDIO_FREQUENCY_48K ((uint32_t)48000)
104 #define AUDIO_FREQUENCY_44K ((uint32_t)44100)
105 #define AUDIO_FREQUENCY_32K ((uint32_t)32000)
106 #define AUDIO_FREQUENCY_22K ((uint32_t)22050)
107 #define AUDIO_FREQUENCY_16K ((uint32_t)16000)
108 #define AUDIO_FREQUENCY_11K ((uint32_t)11025)
109 #define AUDIO_FREQUENCY_8K ((uint32_t)8000)
110 
111 #define VOLUME_CONVERT(Volume) (((Volume) > 100)? 100:((uint8_t)(((Volume) * 63) / 100)))
112 #define VOLUME_IN_CONVERT(Volume) (((Volume) >= 100)? 239:((uint8_t)(((Volume) * 240) / 100)))
113 
114 /******************************************************************************/
115 /****************************** REGISTER MAPPING ******************************/
116 /******************************************************************************/
120 #define WM8994_ID 0x8994
121 
126 #define WM8994_CHIPID_ADDR 0x00
127 
143 /*------------------------------------------------------------------------------
144  Audio Codec functions
145 ------------------------------------------------------------------------------*/
146 /* High Layer codec functions */
147 uint32_t wm8994_Init(uint16_t DeviceAddr, uint16_t OutputInputDevice, uint8_t Volume, uint32_t AudioFreq);
148 void wm8994_DeInit(void);
149 uint32_t wm8994_ReadID(uint16_t DeviceAddr);
150 uint32_t wm8994_Play(uint16_t DeviceAddr, uint16_t* pBuffer, uint16_t Size);
151 uint32_t wm8994_Pause(uint16_t DeviceAddr);
152 uint32_t wm8994_Resume(uint16_t DeviceAddr);
153 uint32_t wm8994_Stop(uint16_t DeviceAddr, uint32_t Cmd);
154 uint32_t wm8994_SetVolume(uint16_t DeviceAddr, uint8_t Volume);
155 uint32_t wm8994_SetMute(uint16_t DeviceAddr, uint32_t Cmd);
156 uint32_t wm8994_SetOutputMode(uint16_t DeviceAddr, uint8_t Output);
157 uint32_t wm8994_SetFrequency(uint16_t DeviceAddr, uint32_t AudioFreq);
158 uint32_t wm8994_Reset(uint16_t DeviceAddr);
159 
160 /* AUDIO IO functions */
161 void AUDIO_IO_Init(void);
162 void AUDIO_IO_DeInit(void);
163 void AUDIO_IO_Write(uint8_t Addr, uint16_t Reg, uint16_t Value);
164 uint8_t AUDIO_IO_Read(uint8_t Addr, uint16_t Reg);
165 void AUDIO_IO_Delay(uint32_t Delay);
166 
167 /* Audio driver structure */
169 
170 #endif /* __WM8994_H */
171 
188 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
uint32_t wm8994_Pause(uint16_t DeviceAddr)
Pauses playing on the audio codec.
Definition: wm8994.c:670
void AUDIO_IO_Init(void)
Initializes Audio low level.
uint32_t wm8994_Play(uint16_t DeviceAddr, uint16_t *pBuffer, uint16_t Size)
Start the audio Codec play feature.
Definition: wm8994.c:654
uint32_t wm8994_SetVolume(uint16_t DeviceAddr, uint8_t Volume)
Sets higher or lower the codec volume level.
Definition: wm8994.c:759
uint32_t wm8994_ReadID(uint16_t DeviceAddr)
Get the WM8994 ID.
Definition: wm8994.c:640
uint32_t wm8994_Init(uint16_t DeviceAddr, uint16_t OutputInputDevice, uint8_t Volume, uint32_t AudioFreq)
Initializes the audio codec and the control interface.
Definition: wm8994.c:136
void AUDIO_IO_DeInit(void)
DeInitializes Audio low level.
void AUDIO_IO_Write(uint8_t Addr, uint16_t Reg, uint16_t Value)
Writes a single data.
uint32_t wm8994_Reset(uint16_t DeviceAddr)
Resets wm8994 registers.
Definition: wm8994.c:1012
AUDIO_DrvTypeDef wm8994_drv
Definition: wm8994.c:88
uint32_t wm8994_Resume(uint16_t DeviceAddr)
Resumes playing on the audio codec.
Definition: wm8994.c:689
uint32_t wm8994_SetFrequency(uint16_t DeviceAddr, uint32_t AudioFreq)
Sets new frequency.
Definition: wm8994.c:957
uint8_t AUDIO_IO_Read(uint8_t Addr, uint16_t Reg)
Reads a single data.
uint32_t wm8994_SetMute(uint16_t DeviceAddr, uint32_t Cmd)
Enables or disables the mute feature on the audio codec.
Definition: wm8994.c:835
uint32_t wm8994_SetOutputMode(uint16_t DeviceAddr, uint8_t Output)
Switch dynamically (while audio file is played) the output target (speaker or headphone).
Definition: wm8994.c:870
void AUDIO_IO_Delay(uint32_t Delay)
AUDIO Codec delay.
void wm8994_DeInit(void)
Deinitializes the audio codec.
Definition: wm8994.c:629
uint32_t wm8994_Stop(uint16_t DeviceAddr, uint32_t Cmd)
Stops audio Codec playing. It powers down the codec.
Definition: wm8994.c:713