stm32h747/stm32h747i-disco/CM7/Drivers/BSP/Components/wm8994/wm8994.h
Go to the documentation of this file.
1 
21 /* Define to prevent recursive inclusion -------------------------------------*/
22 #ifndef WM8994_H
23 #define WM8994_H
24 
25 /* Includes ------------------------------------------------------------------*/
26 #include "wm8994_reg.h"
27 #include <stddef.h>
28 
44 typedef int32_t (*WM8994_Init_Func) (void);
45 typedef int32_t (*WM8994_DeInit_Func) (void);
46 typedef int32_t (*WM8994_GetTick_Func) (void);
47 typedef int32_t (*WM8994_Delay_Func) (uint32_t);
48 typedef int32_t (*WM8994_WriteReg_Func)(uint16_t, uint16_t, uint8_t*, uint16_t);
49 typedef int32_t (*WM8994_ReadReg_Func) (uint16_t, uint16_t, uint8_t*, uint16_t);
50 
51 typedef struct
52 {
55  uint16_t Address;
59 } WM8994_IO_t;
60 
61 
62 typedef struct
63 {
66  uint8_t IsInitialized;
68 
69 typedef struct
70 {
71  uint32_t InputDevice;
72  uint32_t OutputDevice;
73  uint32_t Frequency;
74  uint32_t Resolution;
75  uint32_t Volume;
77 
78  typedef struct
79 {
80  int32_t ( *Init ) ( WM8994_Object_t *, WM8994_Init_t* );
81  int32_t ( *DeInit ) ( WM8994_Object_t * );
82  int32_t ( *ReadID ) ( WM8994_Object_t *, uint32_t * );
83  int32_t ( *Play ) ( WM8994_Object_t * );
84  int32_t ( *Pause ) ( WM8994_Object_t * );
85  int32_t ( *Resume ) ( WM8994_Object_t * );
86  int32_t ( *Stop ) ( WM8994_Object_t *, uint32_t );
87  int32_t ( *SetFrequency ) ( WM8994_Object_t *, uint32_t );
88  int32_t ( *GetFrequency ) ( WM8994_Object_t *, uint32_t*);
89  int32_t ( *SetVolume ) ( WM8994_Object_t *, uint32_t, uint8_t );
90  int32_t ( *GetVolume ) ( WM8994_Object_t *, uint32_t, uint8_t*);
91  int32_t ( *SetMute ) ( WM8994_Object_t *, uint32_t );
92  int32_t ( *SetOutputMode ) ( WM8994_Object_t *, uint32_t );
93  int32_t ( *SetResolution ) ( WM8994_Object_t *, uint32_t );
94  int32_t ( *GetResolution ) ( WM8994_Object_t *, uint32_t*);
95  int32_t ( *SetProtocol ) ( WM8994_Object_t *, uint32_t );
96  int32_t ( *GetProtocol ) ( WM8994_Object_t *, uint32_t*);
97  int32_t ( *Reset ) ( WM8994_Object_t * );
98 } WM8994_Drv_t;
106 #define WM8994_OK (0)
107 #define WM8994_ERROR (-1)
108 
109 /******************************************************************************/
110 /*************************** Codec User defines ******************************/
111 /******************************************************************************/
112 /* Audio Input Device */
113 #define WM8994_IN_NONE 0x00U
114 #define WM8994_IN_MIC1 0x01U
115 #define WM8994_IN_MIC2 0x02U
116 #define WM8994_IN_LINE1 0x03U
117 #define WM8994_IN_LINE2 0x04U
118 #define WM8994_IN_MIC1_MIC2 0x05U
119 
120 /* Audio Output Device */
121 #define WM8994_OUT_NONE 0x00U
122 #define WM8994_OUT_SPEAKER 0x01U
123 #define WM8994_OUT_HEADPHONE 0x02U
124 #define WM8994_OUT_BOTH 0x03U
125 #define WM8994_OUT_AUTO 0x04U
126 
127 /* AUDIO FREQUENCY */
128 #define WM8994_FREQUENCY_192K 192000
129 #define WM8994_FREQUENCY_176K 176400
130 #define WM8994_FREQUENCY_96K 96000
131 #define WM8994_FREQUENCY_88K 88200
132 #define WM8994_FREQUENCY_48K 48000
133 #define WM8994_FREQUENCY_44K 44100
134 #define WM8994_FREQUENCY_32K 32000
135 #define WM8994_FREQUENCY_22K 22050
136 #define WM8994_FREQUENCY_16K 16000
137 #define WM8994_FREQUENCY_11K 11025
138 #define WM8994_FREQUENCY_8K 8000
139 
140 /* AUDIO RESOLUTION */
141 #define WM8994_RESOLUTION_16b 0x00U
142 #define WM8994_RESOLUTION_20b 0x01U
143 #define WM8994_RESOLUTION_24b 0x02U
144 #define WM8994_RESOLUTION_32b 0x03U
145 
146 /* Codec stop options */
147 #define WM8994_PDWN_HW 0x00U
148 #define WM8994_PDWN_SW 0x01U
149 
150 /* Volume Input Output selection */
151 #define VOLUME_INPUT 0U
152 #define VOLUME_OUTPUT 1U
153 
154 /* MUTE commands */
155 #define WM8994_MUTE_ON 1U
156 #define WM8994_MUTE_OFF 0U
157 
158 /* AUDIO PROTOCOL */
159 #define WM8994_PROTOCOL_R_JUSTIFIED ((uint16_t)0x0000)
160 #define WM8994_PROTOCOL_L_JUSTIFIED ((uint16_t)0x0001)
161 #define WM8994_PROTOCOL_I2S ((uint16_t)0x0002)
162 #define WM8994_PROTOCOL_DSP ((uint16_t)0x0003)
163 
164 #define VOLUME_OUT_INVERT(Volume) ((uint8_t)(((Volume) * 100) / 63))
165 #define VOLUME_IN_INVERT(Volume) ((uint8_t)(((Volume) * 100) / 239))
166 
170 #define WM8994_ID 0x8994U
171 
179 /* Audio driver structure */
189 /*------------------------------------------------------------------------------
190  Audio Codec functions
191 ------------------------------------------------------------------------------*/
192 /* High Layer codec functions */
193 int32_t WM8994_RegisterBusIO (WM8994_Object_t *pObj, WM8994_IO_t *pIO);
194 int32_t WM8994_Init(WM8994_Object_t *pObj, WM8994_Init_t *pInit);
195 int32_t WM8994_DeInit(WM8994_Object_t *pObj);
196 int32_t WM8994_ReadID(WM8994_Object_t *pObj, uint32_t *Id);
197 int32_t WM8994_Play(WM8994_Object_t *pObj);
198 int32_t WM8994_Pause(WM8994_Object_t *pObj);
199 int32_t WM8994_Resume(WM8994_Object_t *pObj);
200 int32_t WM8994_Stop(WM8994_Object_t *pObj, uint32_t CodecPdwnMode);
201 int32_t WM8994_SetVolume(WM8994_Object_t *pObj, uint32_t InputOutput, uint8_t Volume);
202 int32_t WM8994_GetVolume(WM8994_Object_t *pObj, uint32_t InputOutput, uint8_t *Volume);
203 int32_t WM8994_SetMute(WM8994_Object_t *pObj, uint32_t Cmd);
204 int32_t WM8994_SetOutputMode(WM8994_Object_t *pObj, uint32_t Output);
205 int32_t WM8994_SetResolution(WM8994_Object_t *pObj, uint32_t Resolution);
206 int32_t WM8994_GetResolution(WM8994_Object_t *pObj, uint32_t *Resolution);
207 int32_t WM8994_SetProtocol(WM8994_Object_t *pObj, uint32_t Protocol);
208 int32_t WM8994_GetProtocol(WM8994_Object_t *pObj, uint32_t *Protocol);
209 int32_t WM8994_SetFrequency(WM8994_Object_t *pObj, uint32_t AudioFreq);
210 int32_t WM8994_GetFrequency(WM8994_Object_t *pObj, uint32_t *AudioFreq);
211 int32_t WM8994_Reset(WM8994_Object_t *pObj);
216 #endif /* WM8994_H */
217 
218 
231 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
WM8994_Init_t::InputDevice
uint32_t InputDevice
Definition: stm32h747/stm32h747i-disco/CM7/Drivers/BSP/Components/wm8994/wm8994.h:71
Init
napi_value Init(napi_env env, napi_value exports)
Definition: porcupine/demo/c/pvrecorder/node/pv_recorder_napi.c:197
WM8994_Reset
int32_t WM8994_Reset(WM8994_Object_t *pObj)
Resets wm8994 registers.
Definition: stm32h747/stm32h747i-disco/CM7/Drivers/BSP/Components/wm8994/wm8994.c:1308
wm8994_reg.h
Header of wm8994_reg.c.
WM8994_IO_t::Address
uint16_t Address
Definition: stm32h747/stm32h747i-disco/CM7/Drivers/BSP/Components/wm8994/wm8994.h:55
WM8994_Resume
int32_t WM8994_Resume(WM8994_Object_t *pObj)
Resumes playing on the audio codec.
Definition: stm32h747/stm32h747i-disco/CM7/Drivers/BSP/Components/wm8994/wm8994.c:684
WM8994_IO_t
Definition: stm32h747/stm32h747i-disco/CM7/Drivers/BSP/Components/wm8994/wm8994.h:51
WM8994_Object_t
Definition: stm32h747/stm32h747i-disco/CM7/Drivers/BSP/Components/wm8994/wm8994.h:62
WM8994_IO_t::ReadReg
WM8994_ReadReg_Func ReadReg
Definition: stm32h747/stm32h747i-disco/CM7/Drivers/BSP/Components/wm8994/wm8994.h:57
WM8994_IO_t::GetTick
WM8994_GetTick_Func GetTick
Definition: stm32h747/stm32h747i-disco/CM7/Drivers/BSP/Components/wm8994/wm8994.h:58
WM8994_Stop
int32_t WM8994_Stop(WM8994_Object_t *pObj, uint32_t CodecPdwnMode)
Stops audio Codec playing. It powers down the codec.
Definition: stm32h747/stm32h747i-disco/CM7/Drivers/BSP/Components/wm8994/wm8994.c:704
WM8994_DeInit
int32_t WM8994_DeInit(WM8994_Object_t *pObj)
Deinitializes the audio codec.
Definition: stm32h747/stm32h747i-disco/CM7/Drivers/BSP/Components/wm8994/wm8994.c:611
WM8994_Drv_t
Definition: stm32h747/stm32h747i-disco/CM7/Drivers/BSP/Components/wm8994/wm8994.h:78
WM8994_Object_t::IsInitialized
uint8_t IsInitialized
Definition: stm32h747/stm32h747i-disco/CM7/Drivers/BSP/Components/wm8994/wm8994.h:66
WM8994_SetFrequency
int32_t WM8994_SetFrequency(WM8994_Object_t *pObj, uint32_t AudioFreq)
Sets new frequency.
Definition: stm32h747/stm32h747i-disco/CM7/Drivers/BSP/Components/wm8994/wm8994.c:1192
WM8994_Delay_Func
int32_t(* WM8994_Delay_Func)(uint32_t)
Definition: stm32h747/stm32h747i-disco/CM7/Drivers/BSP/Components/wm8994/wm8994.h:47
WM8994_SetMute
int32_t WM8994_SetMute(WM8994_Object_t *pObj, uint32_t Cmd)
Enables or disables the mute feature on the audio codec.
Definition: stm32h747/stm32h747i-disco/CM7/Drivers/BSP/Components/wm8994/wm8994.c:877
WM8994_DeInit_Func
int32_t(* WM8994_DeInit_Func)(void)
Definition: stm32h747/stm32h747i-disco/CM7/Drivers/BSP/Components/wm8994/wm8994.h:45
WM8994_SetProtocol
int32_t WM8994_SetProtocol(WM8994_Object_t *pObj, uint32_t Protocol)
Set Audio Protocol.
Definition: stm32h747/stm32h747i-disco/CM7/Drivers/BSP/Components/wm8994/wm8994.c:1152
WM8994_Init_Func
int32_t(* WM8994_Init_Func)(void)
Definition: stm32h747/stm32h747i-disco/CM7/Drivers/BSP/Components/wm8994/wm8994.h:44
WM8994_GetVolume
int32_t WM8994_GetVolume(WM8994_Object_t *pObj, uint32_t InputOutput, uint8_t *Volume)
Get higher or lower the codec volume level.
Definition: stm32h747/stm32h747i-disco/CM7/Drivers/BSP/Components/wm8994/wm8994.c:838
WM8994_Init
int32_t WM8994_Init(WM8994_Object_t *pObj, WM8994_Init_t *pInit)
Initializes the audio codec and the control interface.
Definition: stm32h747/stm32h747i-disco/CM7/Drivers/BSP/Components/wm8994/wm8994.c:88
WM8994_IO_t::WriteReg
WM8994_WriteReg_Func WriteReg
Definition: stm32h747/stm32h747i-disco/CM7/Drivers/BSP/Components/wm8994/wm8994.h:56
WM8994_SetResolution
int32_t WM8994_SetResolution(WM8994_Object_t *pObj, uint32_t Resolution)
Set Audio resolution.
Definition: stm32h747/stm32h747i-disco/CM7/Drivers/BSP/Components/wm8994/wm8994.c:1093
WM8994_IO_t::DeInit
WM8994_DeInit_Func DeInit
Definition: stm32h747/stm32h747i-disco/CM7/Drivers/BSP/Components/wm8994/wm8994.h:54
WM8994_Pause
int32_t WM8994_Pause(WM8994_Object_t *pObj)
Pauses playing on the audio codec.
Definition: stm32h747/stm32h747i-disco/CM7/Drivers/BSP/Components/wm8994/wm8994.c:656
WM8994_Object_t::Ctx
wm8994_ctx_t Ctx
Definition: stm32h747/stm32h747i-disco/CM7/Drivers/BSP/Components/wm8994/wm8994.h:65
WM8994_ReadID
int32_t WM8994_ReadID(WM8994_Object_t *pObj, uint32_t *Id)
Get the WM8994 ID.
Definition: stm32h747/stm32h747i-disco/CM7/Drivers/BSP/Components/wm8994/wm8994.c:623
WM8994_Init_t::OutputDevice
uint32_t OutputDevice
Definition: stm32h747/stm32h747i-disco/CM7/Drivers/BSP/Components/wm8994/wm8994.h:72
WM8994_Init_t::Resolution
uint32_t Resolution
Definition: stm32h747/stm32h747i-disco/CM7/Drivers/BSP/Components/wm8994/wm8994.h:74
WM8994_Object_t::IO
WM8994_IO_t IO
Definition: stm32h747/stm32h747i-disco/CM7/Drivers/BSP/Components/wm8994/wm8994.h:64
WM8994_IO_t::Init
WM8994_Init_Func Init
Definition: stm32h747/stm32h747i-disco/CM7/Drivers/BSP/Components/wm8994/wm8994.h:53
WM8994_GetTick_Func
int32_t(* WM8994_GetTick_Func)(void)
Definition: stm32h747/stm32h747i-disco/CM7/Drivers/BSP/Components/wm8994/wm8994.h:46
WM8994_SetOutputMode
int32_t WM8994_SetOutputMode(WM8994_Object_t *pObj, uint32_t Output)
Switch dynamically (while audio file is played) the output target (speaker or headphone).
Definition: stm32h747/stm32h747i-disco/CM7/Drivers/BSP/Components/wm8994/wm8994.c:918
WM8994_SetVolume
int32_t WM8994_SetVolume(WM8994_Object_t *pObj, uint32_t InputOutput, uint8_t Volume)
Set higher or lower the codec volume level.
Definition: stm32h747/stm32h747i-disco/CM7/Drivers/BSP/Components/wm8994/wm8994.c:755
WM8994_GetResolution
int32_t WM8994_GetResolution(WM8994_Object_t *pObj, uint32_t *Resolution)
Get Audio resolution.
Definition: stm32h747/stm32h747i-disco/CM7/Drivers/BSP/Components/wm8994/wm8994.c:1110
WM8994_ReadReg_Func
int32_t(* WM8994_ReadReg_Func)(uint16_t, uint16_t, uint8_t *, uint16_t)
Definition: stm32h747/stm32h747i-disco/CM7/Drivers/BSP/Components/wm8994/wm8994.h:49
WM8994_Init_t::Volume
uint32_t Volume
Definition: stm32h747/stm32h747i-disco/CM7/Drivers/BSP/Components/wm8994/wm8994.h:75
WM8994_WriteReg_Func
int32_t(* WM8994_WriteReg_Func)(uint16_t, uint16_t, uint8_t *, uint16_t)
Definition: stm32h747/stm32h747i-disco/CM7/Drivers/BSP/Components/wm8994/wm8994.h:48
wm8994_ctx_t
Definition: wm8994_reg.h:371
WM8994_RegisterBusIO
int32_t WM8994_RegisterBusIO(WM8994_Object_t *pObj, WM8994_IO_t *pIO)
Function.
Definition: stm32h747/stm32h747i-disco/CM7/Drivers/BSP/Components/wm8994/wm8994.c:1327
WM8994_Driver
WM8994_Drv_t WM8994_Driver
Definition: stm32h747/stm32h747i-disco/CM7/Drivers/BSP/Components/wm8994/wm8994.c:41
WM8994_GetProtocol
int32_t WM8994_GetProtocol(WM8994_Object_t *pObj, uint32_t *Protocol)
Get Audio Protocol.
Definition: stm32h747/stm32h747i-disco/CM7/Drivers/BSP/Components/wm8994/wm8994.c:1169
WM8994_Play
int32_t WM8994_Play(WM8994_Object_t *pObj)
Start the audio Codec play feature.
Definition: stm32h747/stm32h747i-disco/CM7/Drivers/BSP/Components/wm8994/wm8994.c:644
WM8994_Init_t
Definition: stm32h747/stm32h747i-disco/CM7/Drivers/BSP/Components/wm8994/wm8994.h:69
WM8994_Init_t::Frequency
uint32_t Frequency
Definition: stm32h747/stm32h747i-disco/CM7/Drivers/BSP/Components/wm8994/wm8994.h:73
WM8994_GetFrequency
int32_t WM8994_GetFrequency(WM8994_Object_t *pObj, uint32_t *AudioFreq)
Get frequency.
Definition: stm32h747/stm32h747i-disco/CM7/Drivers/BSP/Components/wm8994/wm8994.c:1258


picovoice_driver
Author(s):
autogenerated on Fri Apr 1 2022 02:14:55