Classes | Enumerator | Variables
Wm8904

Classes

struct  _wm8904_audio_format
 Audio format configuration. More...
 
struct  _wm8904_config
 Configuration structure of WM8904. More...
 
struct  _wm8904_fll_config
 wm8904 fll configuration More...
 
struct  _wm8904_handle
 wm8904 codec handler More...
 

Variables

wm8904_bit_width_t _wm8904_audio_format::bitWidth
 
wm8904_config_t_wm8904_handle::config
 
wm8904_fll_config_t_wm8904_config::fll
 
wm8904_audio_format_t _wm8904_config::format
 
wm8904_fs_ratio_t _wm8904_audio_format::fsRatio
 
codec_i2c_config_t _wm8904_config::i2cConfig
 
uint8_t _wm8904_handle::i2cHandle [WM8904_I2C_HANDLER_SIZE]
 
bool _wm8904_config::master
 
uint32_t _wm8904_config::mclk_HZ
 
uint32_t _wm8904_fll_config::outputClock_HZ
 
uint16_t _wm8904_config::playSource
 
wm8904_protocol_t _wm8904_config::protocol
 
uint16_t _wm8904_config::recordChannelLeft
 
uint16_t _wm8904_config::recordChannelRight
 
uint16_t _wm8904_config::recordSource
 
uint32_t _wm8904_fll_config::refClock_HZ
 
wm8904_sample_rate_t _wm8904_audio_format::sampleRate
 
uint8_t _wm8904_config::slaveAddress
 
wm8904_fll_clk_source_t _wm8904_fll_config::source
 
wm8904_sys_clk_source_t _wm8904_config::sysClkSource
 

Driver version

enum  _wm8904_status { kStatus_WM8904_Success = 0x0, kStatus_WM8904_Fail = 0x1 }
 WM8904 status return codes. More...
 
enum  _wm8904_lrc_polarity { kWM8904_LRCPolarityNormal = 0U, kWM8904_LRCPolarityInverted = 1U << 4U }
 WM8904 lrc polarity. More...
 
enum  _wm8904_module {
  kWM8904_ModuleADC = 0, kWM8904_ModuleDAC = 1, kWM8904_ModulePGA = 2, kWM8904_ModuleHeadphone = 3,
  kWM8904_ModuleLineout = 4
}
 wm8904 module value More...
 
enum  _wm8904_play_channel { kWM8904_HeadphoneLeft = 1U, kWM8904_HeadphoneRight = 2U, kWM8904_LineoutLeft = 4U, kWM8904_LineoutRight = 8U }
 wm8904 play channel
More...
 
enum  _wm8904_timeslot { kWM8904_TimeSlot0 = 0U, kWM8904_TimeSlot1 = 1U }
 WM8904 time slot. More...
 
enum  _wm8904_protocol {
  kWM8904_ProtocolI2S = 0x2, kWM8904_ProtocolLeftJustified = 0x1, kWM8904_ProtocolRightJustified = 0x0, kWM8904_ProtocolPCMA = 0x3,
  kWM8904_ProtocolPCMB = 0x3 | (1 << 4)
}
 The audio data transfer protocol. More...
 
enum  _wm8904_fs_ratio {
  kWM8904_FsRatio64X = 0x0, kWM8904_FsRatio128X = 0x1, kWM8904_FsRatio192X = 0x2, kWM8904_FsRatio256X = 0x3,
  kWM8904_FsRatio384X = 0x4, kWM8904_FsRatio512X = 0x5, kWM8904_FsRatio768X = 0x6, kWM8904_FsRatio1024X = 0x7,
  kWM8904_FsRatio1408X = 0x8, kWM8904_FsRatio1536X = 0x9
}
 The SYSCLK / fs ratio. More...
 
enum  _wm8904_sample_rate {
  kWM8904_SampleRate8kHz = 0x0, kWM8904_SampleRate12kHz = 0x1, kWM8904_SampleRate16kHz = 0x2, kWM8904_SampleRate24kHz = 0x3,
  kWM8904_SampleRate32kHz = 0x4, kWM8904_SampleRate48kHz = 0x5
}
 Sample rate. More...
 
enum  _wm8904_bit_width { kWM8904_BitWidth16 = 0x0, kWM8904_BitWidth20 = 0x1, kWM8904_BitWidth24 = 0x2, kWM8904_BitWidth32 = 0x3 }
 Bit width. More...
 
enum  _wm8904_record_source { kWM8904_RecordSourceDifferentialLine = 1U, kWM8904_RecordSourceLineInput = 2U, kWM8904_RecordSourceDifferentialMic = 4U, kWM8904_RecordSourceDigitalMic = 8U }
 wm8904 record source More...
 
enum  _wm8904_record_channel {
  kWM8904_RecordChannelLeft1 = 1U, kWM8904_RecordChannelLeft2 = 2U, kWM8904_RecordChannelLeft3 = 4U, kWM8904_RecordChannelRight1 = 1U,
  kWM8904_RecordChannelRight2 = 2U, kWM8904_RecordChannelRight3 = 4U, kWM8904_RecordChannelDifferentialPositive1 = 1U, kWM8904_RecordChannelDifferentialPositive2 = 2U,
  kWM8904_RecordChannelDifferentialPositive3 = 4U, kWM8904_RecordChannelDifferentialNegative1 = 8U, kWM8904_RecordChannelDifferentialNegative2 = 16U, kWM8904_RecordChannelDifferentialNegative3 = 32U
}
 wm8904 record channel More...
 
enum  _wm8904_play_source { kWM8904_PlaySourcePGA = 1U, kWM8904_PlaySourceDAC = 4U }
 wm8904 play source More...
 
enum  _wm8904_sys_clk_source { kWM8904_SysClkSourceMCLK = 0U, kWM8904_SysClkSourceFLL = 1U << 14 }
 wm8904 system clock source More...
 
enum  _wm8904_fll_clk_source { kWM8904_FLLClkSourceMCLK = 0U }
 wm8904 fll clock source More...
 
typedef enum _wm8904_module wm8904_module_t
 wm8904 module value More...
 
typedef enum _wm8904_timeslot wm8904_timeslot_t
 WM8904 time slot. More...
 
typedef enum _wm8904_protocol wm8904_protocol_t
 The audio data transfer protocol. More...
 
typedef enum _wm8904_fs_ratio wm8904_fs_ratio_t
 The SYSCLK / fs ratio. More...
 
typedef enum _wm8904_sample_rate wm8904_sample_rate_t
 Sample rate. More...
 
typedef enum _wm8904_bit_width wm8904_bit_width_t
 Bit width. More...
 
typedef enum _wm8904_sys_clk_source wm8904_sys_clk_source_t
 wm8904 system clock source More...
 
typedef enum _wm8904_fll_clk_source wm8904_fll_clk_source_t
 wm8904 fll clock source More...
 
typedef struct _wm8904_fll_config wm8904_fll_config_t
 wm8904 fll configuration More...
 
typedef struct _wm8904_audio_format wm8904_audio_format_t
 Audio format configuration. More...
 
typedef struct _wm8904_config wm8904_config_t
 Configuration structure of WM8904. More...
 
typedef struct _wm8904_handle wm8904_handle_t
 wm8904 codec handler More...
 
status_t WM8904_WriteRegister (wm8904_handle_t *handle, uint8_t reg, uint16_t value)
 WM8904 write register. More...
 
status_t WM8904_ReadRegister (wm8904_handle_t *handle, uint8_t reg, uint16_t *value)
 WM8904 write register. More...
 
status_t WM8904_ModifyRegister (wm8904_handle_t *handle, uint8_t reg, uint16_t mask, uint16_t value)
 WM8904 modify register. More...
 
status_t WM8904_Init (wm8904_handle_t *handle, wm8904_config_t *wm8904_config)
 Initializes WM8904. More...
 
status_t WM8904_Deinit (wm8904_handle_t *handle)
 Deinitializes the WM8904 codec. More...
 
void WM8904_GetDefaultConfig (wm8904_config_t *config)
 Fills the configuration structure with default values. More...
 
status_t WM8904_SetMasterSlave (wm8904_handle_t *handle, bool master)
 Sets WM8904 as master or slave. More...
 
status_t WM8904_SeMasterClock (wm8904_handle_t *handle, uint32_t sysclk, uint32_t sampleRate, uint32_t bitWidth)
 Sets WM8904 master clock configuration. More...
 
status_t WM8904_SetFLLConfig (wm8904_handle_t *handle, wm8904_fll_config_t *config)
 WM8904 set PLL configuration This function will enable the GPIO1 FLL clock output function, so user can see the generated fll output clock frequency from WM8904 GPIO1. More...
 
status_t WM8904_SetProtocol (wm8904_handle_t *handle, wm8904_protocol_t protocol)
 Sets the audio data transfer protocol. More...
 
status_t WM8904_SetAudioFormat (wm8904_handle_t *handle, uint32_t sysclk, uint32_t sampleRate, uint32_t bitWidth)
 Sets the audio data format. More...
 
status_t WM8904_CheckAudioFormat (wm8904_handle_t *handle, wm8904_audio_format_t *format, uint32_t mclkFreq)
 check and update the audio data format. This api is used check the fsRatio setting based on the mclk and sample rate, if fsRatio setting is not correct, it will correct it according to mclk and sample rate. More...
 
status_t WM8904_SetVolume (wm8904_handle_t *handle, uint16_t volumeLeft, uint16_t volumeRight)
 Sets the module output volume. More...
 
status_t WM8904_SetMute (wm8904_handle_t *handle, bool muteLeft, bool muteRight)
 Sets the headphone output mute. More...
 
status_t WM8904_SelectLRCPolarity (wm8904_handle_t *handle, uint32_t polarity)
 Select LRC polarity. More...
 
status_t WM8904_EnableDACTDMMode (wm8904_handle_t *handle, wm8904_timeslot_t timeSlot)
 Enable WM8904 DAC time slot. More...
 
status_t WM8904_EnableADCTDMMode (wm8904_handle_t *handle, wm8904_timeslot_t timeSlot)
 Enable WM8904 ADC time slot. More...
 
status_t WM8904_SetModulePower (wm8904_handle_t *handle, wm8904_module_t module, bool isEnabled)
 
status_t WM8904_SetChannelVolume (wm8904_handle_t *handle, uint32_t channel, uint32_t volume)
 Sets the channel output volume. More...
 
status_t WM8904_SetRecord (wm8904_handle_t *handle, uint32_t recordSource)
 SET the WM8904 record source. More...
 
status_t WM8904_SetRecordChannel (wm8904_handle_t *handle, uint32_t leftRecordChannel, uint32_t rightRecordChannel)
 SET the WM8904 record source. More...
 
status_t WM8904_SetPlay (wm8904_handle_t *handle, uint32_t playSource)
 SET the WM8904 play source. More...
 
status_t WM8904_SetChannelMute (wm8904_handle_t *handle, uint32_t channel, bool isMute)
 Sets the channel mute. More...
 
#define FSL_WM8904_DRIVER_VERSION   (MAKE_VERSION(2, 4, 1))
 WM8904 driver version 2.4.1. More...
 
#define WM8904_I2C_HANDLER_SIZE   (CODEC_I2C_MASTER_HANDLER_SIZE)
 wm8904 handle size More...
 
#define WM8904_DEBUG_REGISTER   0
 wm8904 debug macro More...
 
#define WM8904_RESET   (0x00)
 WM8904 register map. More...
 
#define WM8904_ANALOG_ADC_0   (0x0A)
 
#define WM8904_POWER_MGMT_0   (0x0C)
 
#define WM8904_POWER_MGMT_2   (0x0E)
 
#define WM8904_POWER_MGMT_3   (0x0F)
 
#define WM8904_POWER_MGMT_6   (0x12)
 
#define WM8904_CLK_RATES_0   (0x14)
 
#define WM8904_CLK_RATES_1   (0x15)
 
#define WM8904_CLK_RATES_2   (0x16)
 
#define WM8904_AUDIO_IF_0   (0x18)
 
#define WM8904_AUDIO_IF_1   (0x19)
 
#define WM8904_AUDIO_IF_2   (0x1A)
 
#define WM8904_AUDIO_IF_3   (0x1B)
 
#define WM8904_DAC_DIG_1   (0x21)
 
#define WM8904_DAC_DIG_0   (0x27)
 
#define WM8904_ANALOG_LEFT_IN_0   (0x2C)
 
#define WM8904_ANALOG_RIGHT_IN_0   (0x2D)
 
#define WM8904_ANALOG_LEFT_IN_1   (0x2E)
 
#define WM8904_ANALOG_RIGHT_IN_1   (0x2F)
 
#define WM8904_ANALOG_OUT1_LEFT   (0x39)
 
#define WM8904_ANALOG_OUT1_RIGHT   (0x3A)
 
#define WM8904_ANALOG_OUT12_ZC   (0x3D)
 
#define WM8904_DC_SERVO_0   (0x43)
 
#define WM8904_ANALOG_HP_0   (0x5A)
 
#define WM8904_CHRG_PUMP_0   (0x62)
 
#define WM8904_CLS_W_0   (0x68)
 
#define WM8904_WRT_SEQUENCER_0   (0x6C)
 
#define WM8904_WRT_SEQUENCER_3   (0x6F)
 
#define WM8904_WRT_SEQUENCER_4   (0x70)
 
#define WM8904_DAC_DIGITAL_VOLUME_LEFT   (0x1E)
 
#define WM8904_DAC_DIGITAL_VOLUME_RIGHT   (0x1F)
 
#define WM8904_ADC_DIGITAL_VOLUME_LEFT   (0x24)
 
#define WM8904_ADC_DIGITAL_VOLUME_RIGHT   (0x25)
 
#define WM8904_ANALOG_OUT2_LEFT   (0x3B)
 
#define WM8904_ANALOG_OUT2_RIGHT   (0x3C)
 
#define WM8904_GPIO_CONTROL_4   (0x7C)
 
#define WM8904_GPIO_CONTROL_4   (0x7C)
 
#define WM8904_FLL_CONTROL_1   (0x74)
 
#define WM8904_FLL_CONTROL_2   (0x75)
 
#define WM8904_FLL_CONTROL_3   (0x76)
 
#define WM8904_FLL_CONTROL_4   (0x77)
 
#define WM8904_FLL_CONTROL_5   (0x78)
 
#define WM8904_GPIO_CONTROL_1   (0x79)
 
#define WM8904_GPIO_CONTROL_2   (0x7A)
 
#define WM8904_GPIO_CONTROL_3   (0x7B)
 
#define WM8904_FLL_NCO_TEST_0   (0xF7U)
 
#define WM8904_FLL_NCO_TEST_1   (0xF8U)
 
#define WM8904_I2C_ADDRESS   (0x1A)
 WM8904 I2C address. More...
 
#define WM8904_I2C_BITRATE   (400000U)
 WM8904 I2C bit rate. More...
 

Detailed Description

Macro Definition Documentation

◆ FSL_WM8904_DRIVER_VERSION

#define FSL_WM8904_DRIVER_VERSION   (MAKE_VERSION(2, 4, 1))

WM8904 driver version 2.4.1.

Definition at line 25 of file fsl_wm8904.h.

◆ WM8904_ADC_DIGITAL_VOLUME_LEFT

#define WM8904_ADC_DIGITAL_VOLUME_LEFT   (0x24)

Definition at line 69 of file fsl_wm8904.h.

◆ WM8904_ADC_DIGITAL_VOLUME_RIGHT

#define WM8904_ADC_DIGITAL_VOLUME_RIGHT   (0x25)

Definition at line 70 of file fsl_wm8904.h.

◆ WM8904_ANALOG_ADC_0

#define WM8904_ANALOG_ADC_0   (0x0A)

Definition at line 39 of file fsl_wm8904.h.

◆ WM8904_ANALOG_HP_0

#define WM8904_ANALOG_HP_0   (0x5A)

Definition at line 61 of file fsl_wm8904.h.

◆ WM8904_ANALOG_LEFT_IN_0

#define WM8904_ANALOG_LEFT_IN_0   (0x2C)

Definition at line 53 of file fsl_wm8904.h.

◆ WM8904_ANALOG_LEFT_IN_1

#define WM8904_ANALOG_LEFT_IN_1   (0x2E)

Definition at line 55 of file fsl_wm8904.h.

◆ WM8904_ANALOG_OUT12_ZC

#define WM8904_ANALOG_OUT12_ZC   (0x3D)

Definition at line 59 of file fsl_wm8904.h.

◆ WM8904_ANALOG_OUT1_LEFT

#define WM8904_ANALOG_OUT1_LEFT   (0x39)

Definition at line 57 of file fsl_wm8904.h.

◆ WM8904_ANALOG_OUT1_RIGHT

#define WM8904_ANALOG_OUT1_RIGHT   (0x3A)

Definition at line 58 of file fsl_wm8904.h.

◆ WM8904_ANALOG_OUT2_LEFT

#define WM8904_ANALOG_OUT2_LEFT   (0x3B)

Definition at line 71 of file fsl_wm8904.h.

◆ WM8904_ANALOG_OUT2_RIGHT

#define WM8904_ANALOG_OUT2_RIGHT   (0x3C)

Definition at line 72 of file fsl_wm8904.h.

◆ WM8904_ANALOG_RIGHT_IN_0

#define WM8904_ANALOG_RIGHT_IN_0   (0x2D)

Definition at line 54 of file fsl_wm8904.h.

◆ WM8904_ANALOG_RIGHT_IN_1

#define WM8904_ANALOG_RIGHT_IN_1   (0x2F)

Definition at line 56 of file fsl_wm8904.h.

◆ WM8904_AUDIO_IF_0

#define WM8904_AUDIO_IF_0   (0x18)

Definition at line 47 of file fsl_wm8904.h.

◆ WM8904_AUDIO_IF_1

#define WM8904_AUDIO_IF_1   (0x19)

Definition at line 48 of file fsl_wm8904.h.

◆ WM8904_AUDIO_IF_2

#define WM8904_AUDIO_IF_2   (0x1A)

Definition at line 49 of file fsl_wm8904.h.

◆ WM8904_AUDIO_IF_3

#define WM8904_AUDIO_IF_3   (0x1B)

Definition at line 50 of file fsl_wm8904.h.

◆ WM8904_CHRG_PUMP_0

#define WM8904_CHRG_PUMP_0   (0x62)

Definition at line 62 of file fsl_wm8904.h.

◆ WM8904_CLK_RATES_0

#define WM8904_CLK_RATES_0   (0x14)

Definition at line 44 of file fsl_wm8904.h.

◆ WM8904_CLK_RATES_1

#define WM8904_CLK_RATES_1   (0x15)

Definition at line 45 of file fsl_wm8904.h.

◆ WM8904_CLK_RATES_2

#define WM8904_CLK_RATES_2   (0x16)

Definition at line 46 of file fsl_wm8904.h.

◆ WM8904_CLS_W_0

#define WM8904_CLS_W_0   (0x68)

Definition at line 63 of file fsl_wm8904.h.

◆ WM8904_DAC_DIG_0

#define WM8904_DAC_DIG_0   (0x27)

Definition at line 52 of file fsl_wm8904.h.

◆ WM8904_DAC_DIG_1

#define WM8904_DAC_DIG_1   (0x21)

Definition at line 51 of file fsl_wm8904.h.

◆ WM8904_DAC_DIGITAL_VOLUME_LEFT

#define WM8904_DAC_DIGITAL_VOLUME_LEFT   (0x1E)

Definition at line 67 of file fsl_wm8904.h.

◆ WM8904_DAC_DIGITAL_VOLUME_RIGHT

#define WM8904_DAC_DIGITAL_VOLUME_RIGHT   (0x1F)

Definition at line 68 of file fsl_wm8904.h.

◆ WM8904_DC_SERVO_0

#define WM8904_DC_SERVO_0   (0x43)

Definition at line 60 of file fsl_wm8904.h.

◆ WM8904_DEBUG_REGISTER

#define WM8904_DEBUG_REGISTER   0

wm8904 debug macro

Definition at line 34 of file fsl_wm8904.h.

◆ WM8904_FLL_CONTROL_1

#define WM8904_FLL_CONTROL_1   (0x74)

Definition at line 75 of file fsl_wm8904.h.

◆ WM8904_FLL_CONTROL_2

#define WM8904_FLL_CONTROL_2   (0x75)

Definition at line 76 of file fsl_wm8904.h.

◆ WM8904_FLL_CONTROL_3

#define WM8904_FLL_CONTROL_3   (0x76)

Definition at line 77 of file fsl_wm8904.h.

◆ WM8904_FLL_CONTROL_4

#define WM8904_FLL_CONTROL_4   (0x77)

Definition at line 78 of file fsl_wm8904.h.

◆ WM8904_FLL_CONTROL_5

#define WM8904_FLL_CONTROL_5   (0x78)

Definition at line 79 of file fsl_wm8904.h.

◆ WM8904_FLL_NCO_TEST_0

#define WM8904_FLL_NCO_TEST_0   (0xF7U)

Definition at line 86 of file fsl_wm8904.h.

◆ WM8904_FLL_NCO_TEST_1

#define WM8904_FLL_NCO_TEST_1   (0xF8U)

Definition at line 87 of file fsl_wm8904.h.

◆ WM8904_GPIO_CONTROL_1

#define WM8904_GPIO_CONTROL_1   (0x79)

Definition at line 81 of file fsl_wm8904.h.

◆ WM8904_GPIO_CONTROL_2

#define WM8904_GPIO_CONTROL_2   (0x7A)

Definition at line 82 of file fsl_wm8904.h.

◆ WM8904_GPIO_CONTROL_3

#define WM8904_GPIO_CONTROL_3   (0x7B)

Definition at line 83 of file fsl_wm8904.h.

◆ WM8904_GPIO_CONTROL_4 [1/2]

#define WM8904_GPIO_CONTROL_4   (0x7C)

Definition at line 84 of file fsl_wm8904.h.

◆ WM8904_GPIO_CONTROL_4 [2/2]

#define WM8904_GPIO_CONTROL_4   (0x7C)

Definition at line 84 of file fsl_wm8904.h.

◆ WM8904_I2C_ADDRESS

#define WM8904_I2C_ADDRESS   (0x1A)

WM8904 I2C address.

Definition at line 90 of file fsl_wm8904.h.

◆ WM8904_I2C_BITRATE

#define WM8904_I2C_BITRATE   (400000U)

WM8904 I2C bit rate.

Definition at line 93 of file fsl_wm8904.h.

◆ WM8904_I2C_HANDLER_SIZE

#define WM8904_I2C_HANDLER_SIZE   (CODEC_I2C_MASTER_HANDLER_SIZE)

wm8904 handle size

Definition at line 30 of file fsl_wm8904.h.

◆ WM8904_POWER_MGMT_0

#define WM8904_POWER_MGMT_0   (0x0C)

Definition at line 40 of file fsl_wm8904.h.

◆ WM8904_POWER_MGMT_2

#define WM8904_POWER_MGMT_2   (0x0E)

Definition at line 41 of file fsl_wm8904.h.

◆ WM8904_POWER_MGMT_3

#define WM8904_POWER_MGMT_3   (0x0F)

Definition at line 42 of file fsl_wm8904.h.

◆ WM8904_POWER_MGMT_6

#define WM8904_POWER_MGMT_6   (0x12)

Definition at line 43 of file fsl_wm8904.h.

◆ WM8904_RESET

#define WM8904_RESET   (0x00)

WM8904 register map.

Definition at line 38 of file fsl_wm8904.h.

◆ WM8904_WRT_SEQUENCER_0

#define WM8904_WRT_SEQUENCER_0   (0x6C)

Definition at line 64 of file fsl_wm8904.h.

◆ WM8904_WRT_SEQUENCER_3

#define WM8904_WRT_SEQUENCER_3   (0x6F)

Definition at line 65 of file fsl_wm8904.h.

◆ WM8904_WRT_SEQUENCER_4

#define WM8904_WRT_SEQUENCER_4   (0x70)

Definition at line 66 of file fsl_wm8904.h.

Typedef Documentation

◆ wm8904_audio_format_t

Audio format configuration.

◆ wm8904_bit_width_t

Bit width.

◆ wm8904_config_t

Configuration structure of WM8904.

◆ wm8904_fll_clk_source_t

wm8904 fll clock source

◆ wm8904_fll_config_t

wm8904 fll configuration

◆ wm8904_fs_ratio_t

The SYSCLK / fs ratio.

◆ wm8904_handle_t

wm8904 codec handler

◆ wm8904_module_t

wm8904 module value

◆ wm8904_protocol_t

The audio data transfer protocol.

◆ wm8904_sample_rate_t

Sample rate.

◆ wm8904_sys_clk_source_t

wm8904 system clock source

◆ wm8904_timeslot_t

WM8904 time slot.

Enumeration Type Documentation

◆ _wm8904_bit_width

Bit width.

Enumerator
kWM8904_BitWidth16 

16 bits

kWM8904_BitWidth20 

20 bits

kWM8904_BitWidth24 

24 bits

kWM8904_BitWidth32 

32 bits

Definition at line 172 of file fsl_wm8904.h.

◆ _wm8904_fll_clk_source

wm8904 fll clock source

Enumerator
kWM8904_FLLClkSourceMCLK 

wm8904 FLL clock source from MCLK

Definition at line 221 of file fsl_wm8904.h.

◆ _wm8904_fs_ratio

The SYSCLK / fs ratio.

Enumerator
kWM8904_FsRatio64X 

SYSCLK is 64 * sample rate * frame width

kWM8904_FsRatio128X 

SYSCLK is 128 * sample rate * frame width

kWM8904_FsRatio192X 

SYSCLK is 192 * sample rate * frame width

kWM8904_FsRatio256X 

SYSCLK is 256 * sample rate * frame width

kWM8904_FsRatio384X 

SYSCLK is 384 * sample rate * frame width

kWM8904_FsRatio512X 

SYSCLK is 512 * sample rate * frame width

kWM8904_FsRatio768X 

SYSCLK is 768 * sample rate * frame width

kWM8904_FsRatio1024X 

SYSCLK is 1024 * sample rate * frame width

kWM8904_FsRatio1408X 

SYSCLK is 1408 * sample rate * frame width

kWM8904_FsRatio1536X 

SYSCLK is 1536 * sample rate * frame width

Definition at line 146 of file fsl_wm8904.h.

◆ _wm8904_lrc_polarity

WM8904 lrc polarity.

Enumerator
kWM8904_LRCPolarityNormal 

LRC polarity normal

kWM8904_LRCPolarityInverted 

LRC polarity inverted

Definition at line 103 of file fsl_wm8904.h.

◆ _wm8904_module

wm8904 module value

Enumerator
kWM8904_ModuleADC 

moduel ADC

kWM8904_ModuleDAC 

module DAC

kWM8904_ModulePGA 

module PGA

kWM8904_ModuleHeadphone 

module headphone

kWM8904_ModuleLineout 

module line out

Definition at line 110 of file fsl_wm8904.h.

◆ _wm8904_play_channel

wm8904 play channel

Enumerator
kWM8904_HeadphoneLeft 
kWM8904_HeadphoneRight 
kWM8904_LineoutLeft 
kWM8904_LineoutRight 

Definition at line 120 of file fsl_wm8904.h.

◆ _wm8904_play_source

wm8904 play source

Enumerator
kWM8904_PlaySourcePGA 

play source PGA, bypass ADC

kWM8904_PlaySourceDAC 

play source Input3

Definition at line 207 of file fsl_wm8904.h.

◆ _wm8904_protocol

The audio data transfer protocol.

Enumerator
kWM8904_ProtocolI2S 

I2S type

kWM8904_ProtocolLeftJustified 

Left justified mode

kWM8904_ProtocolRightJustified 

Right justified mode

kWM8904_ProtocolPCMA 

PCM A mode

kWM8904_ProtocolPCMB 

PCM B mode

Definition at line 136 of file fsl_wm8904.h.

◆ _wm8904_record_channel

wm8904 record channel

Enumerator
kWM8904_RecordChannelLeft1 

left record channel 1

kWM8904_RecordChannelLeft2 

left record channel 2

kWM8904_RecordChannelLeft3 

left record channel 3

kWM8904_RecordChannelRight1 

right record channel 1

kWM8904_RecordChannelRight2 

right record channel 2

kWM8904_RecordChannelRight3 

right record channel 3

kWM8904_RecordChannelDifferentialPositive1 

differential positive record channel 1

kWM8904_RecordChannelDifferentialPositive2 

differential positive record channel 2

kWM8904_RecordChannelDifferentialPositive3 

differential positive record channel 3

kWM8904_RecordChannelDifferentialNegative1 

differential negative record channel 1

kWM8904_RecordChannelDifferentialNegative2 

differential negative record channel 2

kWM8904_RecordChannelDifferentialNegative3 

differential negative record channel 3

Definition at line 190 of file fsl_wm8904.h.

◆ _wm8904_record_source

wm8904 record source

Enumerator
kWM8904_RecordSourceDifferentialLine 

record source from differential line

kWM8904_RecordSourceLineInput 

record source from line input

kWM8904_RecordSourceDifferentialMic 

record source from differential mic

kWM8904_RecordSourceDigitalMic 

record source from digital microphone

Definition at line 181 of file fsl_wm8904.h.

◆ _wm8904_sample_rate

Sample rate.

Enumerator
kWM8904_SampleRate8kHz 

8 kHz

kWM8904_SampleRate12kHz 

11.025kHz, 12kHz

kWM8904_SampleRate16kHz 

16kHz

kWM8904_SampleRate24kHz 

22.05kHz, 24kHz

kWM8904_SampleRate32kHz 

32kHz

kWM8904_SampleRate48kHz 

44.1kHz, 48kHz

Definition at line 161 of file fsl_wm8904.h.

◆ _wm8904_status

WM8904 status return codes.

Enumerator
kStatus_WM8904_Success 

Success

kStatus_WM8904_Fail 

Failure

Definition at line 96 of file fsl_wm8904.h.

◆ _wm8904_sys_clk_source

wm8904 system clock source

Enumerator
kWM8904_SysClkSourceMCLK 

wm8904 system clock soure from MCLK

kWM8904_SysClkSourceFLL 

wm8904 system clock soure from FLL

Definition at line 214 of file fsl_wm8904.h.

◆ _wm8904_timeslot

WM8904 time slot.

Enumerator
kWM8904_TimeSlot0 

time slot0

kWM8904_TimeSlot1 

time slot1

Definition at line 129 of file fsl_wm8904.h.

Function Documentation

◆ WM8904_CheckAudioFormat()

status_t WM8904_CheckAudioFormat ( wm8904_handle_t handle,
wm8904_audio_format_t format,
uint32_t  mclkFreq 
)

check and update the audio data format. This api is used check the fsRatio setting based on the mclk and sample rate, if fsRatio setting is not correct, it will correct it according to mclk and sample rate.

Parameters
handleWM8904 handle structure.
formataudio data format
mclkFreqmclk frequency
Returns
kStatus_WM8904_Success if successful, different code otherwise.

brief check and update the audio data format. This api is used check the fsRatio setting based on the mclk and sample rate, if fsRatio setting is not correct, it will correct it according to mclk and sample rate. param handle WM8904 handle structure. param format audio data format param mclkFreq mclk frequency

return kStatus_WM8904_Success if successful, different code otherwise.

Definition at line 769 of file fsl_wm8904.c.

◆ WM8904_Deinit()

status_t WM8904_Deinit ( wm8904_handle_t handle)

Deinitializes the WM8904 codec.

This function resets WM8904.

Parameters
handleWM8904 handle structure.
Returns
kStatus_WM8904_Success if successful, different code otherwise.

brief Deinitializes the WM8904 codec.

This function resets WM8904.

param handle WM8904 handle structure.

return kStatus_WM8904_Success if successful, different code otherwise.

Definition at line 432 of file fsl_wm8904.c.

◆ WM8904_EnableADCTDMMode()

status_t WM8904_EnableADCTDMMode ( wm8904_handle_t handle,
wm8904_timeslot_t  timeSlot 
)

Enable WM8904 ADC time slot.

Parameters
handleWM8904 handle structure.
timeSlottimeslot number.
Returns
kStatus_WM8904_Success if successful, different code otherwise.

brief Enable WM8904 ADC time slot.

param handle WM8904 handle structure. param timeslot timeslot number.

return kStatus_WM8904_Success if successful, different code otherwise.

Definition at line 754 of file fsl_wm8904.c.

◆ WM8904_EnableDACTDMMode()

status_t WM8904_EnableDACTDMMode ( wm8904_handle_t handle,
wm8904_timeslot_t  timeSlot 
)

Enable WM8904 DAC time slot.

Parameters
handleWM8904 handle structure.
timeSlottimeslot number.
Returns
kStatus_WM8904_Success if successful, different code otherwise.

brief Enable WM8904 DAC time slot.

param handle WM8904 handle structure. param timeslot timeslot number.

return kStatus_WM8904_Success if successful, different code otherwise.

Definition at line 741 of file fsl_wm8904.c.

◆ WM8904_GetDefaultConfig()

void WM8904_GetDefaultConfig ( wm8904_config_t config)

Fills the configuration structure with default values.

The default values are:

master = false; protocol = kWM8904_ProtocolI2S; format.fsRatio = kWM8904_FsRatio64X; format.sampleRate = kWM8904_SampleRate48kHz; format.bitWidth = kWM8904_BitWidth16;

Parameters
configdefault configurations of wm8904.

brief Fills the configuration structure with default values.

The default values are:

master = false; protocol = kWM8904_ProtocolI2S; format.fsRatio = kWM8904_FsRatio64X; format.sampleRate = kWM8904_SampleRate48kHz; format.bitWidth = kWM8904_BitWidth16;

param handle WM8904 handle structure to be filled with default values.

Definition at line 456 of file fsl_wm8904.c.

◆ WM8904_Init()

status_t WM8904_Init ( wm8904_handle_t handle,
wm8904_config_t wm8904Config 
)

Initializes WM8904.

Parameters
handleWM8904 handle structure.
wm8904_configWM8904 configuration structure.

brief Initializes WM8904.

param handle WM8904 handle structure. param codec_config WM8904 configuration structure.

Definition at line 194 of file fsl_wm8904.c.

◆ WM8904_ModifyRegister()

status_t WM8904_ModifyRegister ( wm8904_handle_t handle,
uint8_t  reg,
uint16_t  mask,
uint16_t  value 
)

WM8904 modify register.

Parameters
handleWM8904 handle structure.
regregister address.
maskregister bits mask.
valuevalue to write.
Returns
kStatus_Success, else failed.

brief WM8904 modify register.

param handle WM8904 handle structure. param reg register address. oaram mask register bits mask. param value value to write. return kStatus_Success, else failed.

Definition at line 171 of file fsl_wm8904.c.

◆ WM8904_ReadRegister()

status_t WM8904_ReadRegister ( wm8904_handle_t handle,
uint8_t  reg,
uint16_t *  value 
)

WM8904 write register.

Parameters
handleWM8904 handle structure.
regregister address.
valuevalue to read.
Returns
kStatus_Success, else failed.

brief WM8904 write register.

param handle WM8904 handle structure. param reg register address. param value value to read. return kStatus_Success, else failed.

Definition at line 147 of file fsl_wm8904.c.

◆ WM8904_SelectLRCPolarity()

status_t WM8904_SelectLRCPolarity ( wm8904_handle_t handle,
uint32_t  polarity 
)

Select LRC polarity.

Parameters
handleWM8904 handle structure.
polarityLRC clock polarity.
Returns
kStatus_WM8904_Success if successful, different code otherwise.

brief Select LRC polarity.

param handle WM8904 handle structure. param polarity LRC clock polarity.

return kStatus_WM8904_Success if successful, different code otherwise.

Definition at line 728 of file fsl_wm8904.c.

◆ WM8904_SeMasterClock()

status_t WM8904_SeMasterClock ( wm8904_handle_t handle,
uint32_t  sysclk,
uint32_t  sampleRate,
uint32_t  bitWidth 
)

Sets WM8904 master clock configuration.

Parameters
handleWM8904 handle structure.
sysclksystem clock rate.
sampleRatesample rate
bitWidthbit width
Returns
kStatus_WM8904_Success if successful, different code otherwise.

Definition at line 485 of file fsl_wm8904.c.

◆ WM8904_SetAudioFormat()

status_t WM8904_SetAudioFormat ( wm8904_handle_t handle,
uint32_t  sysclk,
uint32_t  sampleRate,
uint32_t  bitWidth 
)

Sets the audio data format.

Parameters
handleWM8904 handle structure.
sysclkSystem clock frequency for codec, user should pay attention to this parater, sysclk is caculate as SYSCLK = MCLK / MCLKDIV, MCLKDIV is bit0 of WM8904_CLK_RATES_0.
sampleRateSample rate frequency in Hz.
bitWidthAudio data bit width.
Returns
kStatus_WM8904_Success if successful, different code otherwise.

brief Sets the audio data format.

param handle WM8904 handle structure. param sysclk System clock frequency for codec, user should pay attention to this parater, sysclk is caculate as SYSCLK = MCLK / MCLKDIV, MCLKDIV is bit0 of WM8904_CLK_RATES_0. param sampleRate Sample rate frequency in Hz. param bitWidth Audio data bit width.

return kStatus_WM8904_Success if successful, different code otherwise.

Definition at line 860 of file fsl_wm8904.c.

◆ WM8904_SetChannelMute()

status_t WM8904_SetChannelMute ( wm8904_handle_t handle,
uint32_t  channel,
bool  isMute 
)

Sets the channel mute.

Parameters
handlecodec handle structure.
channelcodec module name.
isMutetrue is mute, false unmute.
Returns
kStatus_WM8904_Success if successful, different code otherwise.

brief Sets the channel mute.

param handle codec handle structure. param channel codec module name. param isMute true is mute, false unmute.

return kStatus_WM8904_Success if successful, different code otherwise.

Definition at line 1101 of file fsl_wm8904.c.

◆ WM8904_SetChannelVolume()

status_t WM8904_SetChannelVolume ( wm8904_handle_t handle,
uint32_t  channel,
uint32_t  volume 
)

Sets the channel output volume.

The parameter should be from 0 to 100. The resulting volume will be. 0 for mute, 100 for maximum volume value.

Parameters
handlecodec handle structure.
channelcodec channel.
volumevolume value.
Returns
kStatus_WM8904_Success if successful, different code otherwise.

brief Sets the channel output volume.

The parameter should be from 0 to 100. The resulting volume will be. 0 for mute, 100 for maximum volume value.

param handle codec handle structure. param channel codec channel. param volume volume value.

return kStatus_WM8904_Success if successful, different code otherwise.

Definition at line 1059 of file fsl_wm8904.c.

◆ WM8904_SetFLLConfig()

status_t WM8904_SetFLLConfig ( wm8904_handle_t handle,
wm8904_fll_config_t config 
)

WM8904 set PLL configuration This function will enable the GPIO1 FLL clock output function, so user can see the generated fll output clock frequency from WM8904 GPIO1.

Parameters
handlewm8904 handler pointer.
configFLL configuration pointer.

Definition at line 591 of file fsl_wm8904.c.

◆ WM8904_SetMasterSlave()

status_t WM8904_SetMasterSlave ( wm8904_handle_t handle,
bool  master 
)

Sets WM8904 as master or slave.

Deprecated:
DO NOT USE THIS API ANYMORE. IT HAS BEEN SUPERCEDED BY WM8904_SeMasterClock
Parameters
handleWM8904 handle structure.
mastertrue for master, false for slave.
Returns
kStatus_WM8904_Success if successful, different code otherwise.

brief Sets WM8904 as master or slave. deprecated DO NOT USE THIS API ANYMORE. IT HAS BEEN SUPERCEDED BY WM8904_SeMasterClock param handle WM8904 handle structure. param master true for master, false for slave.

return kStatus_WM8904_Success if successful, different code otherwise.

Definition at line 474 of file fsl_wm8904.c.

◆ WM8904_SetModulePower()

status_t WM8904_SetModulePower ( wm8904_handle_t handle,
wm8904_module_t  module,
bool  isEnabled 
)

brief SET the module output power.

param handle WM8904 handle structure. param module wm8904 module. param isEnabled, true is power on, false is power down.

return kStatus_WM8904_Success if successful, different code otherwise..

Definition at line 1145 of file fsl_wm8904.c.

◆ WM8904_SetMute()

status_t WM8904_SetMute ( wm8904_handle_t handle,
bool  muteLeft,
bool  muteRight 
)

Sets the headphone output mute.

Parameters
handleWM8904 handle structure.
muteLefttrue to mute left channel, false to unmute.
muteRighttrue to mute right channel, false to unmute.
Returns
kStatus_WM8904_Success if successful, different code otherwise.

brief Sets the headphone output mute.

param handle WM8904 handle structure. param muteLeft true to mute left channel, false to unmute. param muteRight true to mute right channel, false to unmute.

return kStatus_WM8904_Success if successful, different code otherwise.

Definition at line 994 of file fsl_wm8904.c.

◆ WM8904_SetPlay()

status_t WM8904_SetPlay ( wm8904_handle_t handle,
uint32_t  playSource 
)

SET the WM8904 play source.

Parameters
handleWM8904 handle structure.
playSourceplay source , can be a value of kCODEC_ModuleHeadphoneSourcePGA, kCODEC_ModuleHeadphoneSourceDAC, kCODEC_ModuleLineoutSourcePGA, kCODEC_ModuleLineoutSourceDAC.
Returns
kStatus_WM8904_Success if successful, different code otherwise..

brief SET the WM8904 play source.

param handle WM8904 handle structure. param playSource play source , can be a value of kWM8904_PlaySourcePGA/kWM8904_PlaySourceDAC.

return kStatus_WM8904_Success if successful, different code otherwise..

Definition at line 1339 of file fsl_wm8904.c.

◆ WM8904_SetProtocol()

status_t WM8904_SetProtocol ( wm8904_handle_t handle,
wm8904_protocol_t  protocol 
)

Sets the audio data transfer protocol.

Parameters
handleWM8904 handle structure.
protocolAudio transfer protocol.
Returns
kStatus_WM8904_Success if successful, different code otherwise.

brief Sets the audio data transfer protocol.

param handle WM8904 handle structure. param protocol Audio transfer protocol.

return kStatus_WM8904_Success if successful, different code otherwise.

Definition at line 715 of file fsl_wm8904.c.

◆ WM8904_SetRecord()

status_t WM8904_SetRecord ( wm8904_handle_t handle,
uint32_t  recordSource 
)

SET the WM8904 record source.

Parameters
handleWM8904 handle structure.
recordSourcerecord source , can be a value of kCODEC_ModuleRecordSourceDifferentialLine, kCODEC_ModuleRecordSourceDifferentialMic, kCODEC_ModuleRecordSourceSingleEndMic, kCODEC_ModuleRecordSourceDigitalMic.
Returns
kStatus_WM8904_Success if successful, different code otherwise.

brief SET the WM8904 record source.

param handle WM8904 handle structure. param recordSource record source , can be a value of kWM8904_ModuleRecordSourceDifferentialLine, kWM8904_ModuleRecordSourceDifferentialMic, kWM8904_ModuleRecordSourceSingleEndMic, kWM8904_ModuleRecordSourceDigitalMic.

return kStatus_WM8904_Success if successful, different code otherwise.

Definition at line 1195 of file fsl_wm8904.c.

◆ WM8904_SetRecordChannel()

status_t WM8904_SetRecordChannel ( wm8904_handle_t handle,
uint32_t  leftRecordChannel,
uint32_t  rightRecordChannel 
)

SET the WM8904 record source.

Parameters
handleWM8904 handle structure.
leftRecordChannelchannel number of left record channel when using differential source, channel number of single end left channel when using single end source, channel number of digital mic when using digital mic source.
rightRecordChannelchannel number of right record channel when using differential source, channel number of single end right channel when using single end source.
Returns
kStatus_WM8904_Success if successful, different code otherwise..

brief SET the WM8904 record source.

param handle WM8904 handle structure. param leftRecordChannel channel number of left record channel when using differential source, channel number of single end left channel when using single end source, channel number of digital mic when using digital mic source. param rightRecordChannel channel number of right record channel when using differential source, channel number of single end right channel when using single end source.

return kStatus_WM8904_Success if successful, different code otherwise..

Definition at line 1250 of file fsl_wm8904.c.

◆ WM8904_SetVolume()

status_t WM8904_SetVolume ( wm8904_handle_t handle,
uint16_t  volumeLeft,
uint16_t  volumeRight 
)

Sets the module output volume.

The parameter should be from 0 to 100. The resulting volume will be. 0 for mute, 100 for maximum volume value.

Parameters
handleWM8904 handle structure.
volumeLeftleft channel volume.
volumeRightright channel volume.
Returns
kStatus_WM8904_Success if successful, different code otherwise.

brief Sets the headphone output volume.

The parameter should be from 0 to 63. The resulting volume will be (parameter - 57 dB). 0 for -57 dB, 57 for 0 dB, 63 for +6 dB etc.

param handle WM8904 handle structure. param volumeLeft Volume of the left channel. param volumeRight Volume of the right channel.

return kStatus_WM8904_Success if successful, different code otherwise.

Definition at line 966 of file fsl_wm8904.c.

◆ WM8904_WriteRegister()

status_t WM8904_WriteRegister ( wm8904_handle_t handle,
uint8_t  reg,
uint16_t  value 
)

WM8904 write register.

Parameters
handleWM8904 handle structure.
regregister address.
valuevalue to write.
Returns
kStatus_Success, else failed.

brief WM8904 write register.

param handle WM8904 handle structure. param reg register address. param value value to write. return kStatus_Success, else failed.

Definition at line 129 of file fsl_wm8904.c.

Variable Documentation

◆ bitWidth

wm8904_bit_width_t _wm8904_audio_format::bitWidth

Bit width

Definition at line 239 of file fsl_wm8904.h.

◆ config

wm8904_config_t* _wm8904_handle::config

wm8904 config pointer

Definition at line 265 of file fsl_wm8904.h.

◆ fll

wm8904_fll_config_t* _wm8904_config::fll

fll configuration

Definition at line 247 of file fsl_wm8904.h.

◆ format

wm8904_audio_format_t _wm8904_config::format

Audio format

Definition at line 249 of file fsl_wm8904.h.

◆ fsRatio

wm8904_fs_ratio_t _wm8904_audio_format::fsRatio

SYSCLK / fs ratio

Definition at line 237 of file fsl_wm8904.h.

◆ i2cConfig

codec_i2c_config_t _wm8904_config::i2cConfig

i2c bus configuration

Definition at line 258 of file fsl_wm8904.h.

◆ i2cHandle

uint8_t _wm8904_handle::i2cHandle[WM8904_I2C_HANDLER_SIZE]

i2c handle

Definition at line 266 of file fsl_wm8904.h.

◆ master

bool _wm8904_config::master

Master or slave

Definition at line 245 of file fsl_wm8904.h.

◆ mclk_HZ

uint32_t _wm8904_config::mclk_HZ

MCLK frequency value

Definition at line 250 of file fsl_wm8904.h.

◆ outputClock_HZ

uint32_t _wm8904_fll_config::outputClock_HZ

fll output clock frequency

Definition at line 231 of file fsl_wm8904.h.

◆ playSource

uint16_t _wm8904_config::playSource

play source

Definition at line 255 of file fsl_wm8904.h.

◆ protocol

wm8904_protocol_t _wm8904_config::protocol

Audio transfer protocol

Definition at line 248 of file fsl_wm8904.h.

◆ recordChannelLeft

uint16_t _wm8904_config::recordChannelLeft

record channel

Definition at line 253 of file fsl_wm8904.h.

◆ recordChannelRight

uint16_t _wm8904_config::recordChannelRight

record channel

Definition at line 254 of file fsl_wm8904.h.

◆ recordSource

uint16_t _wm8904_config::recordSource

record source

Definition at line 252 of file fsl_wm8904.h.

◆ refClock_HZ

uint32_t _wm8904_fll_config::refClock_HZ

fll reference clock frequency

Definition at line 230 of file fsl_wm8904.h.

◆ sampleRate

wm8904_sample_rate_t _wm8904_audio_format::sampleRate

Sample rate

Definition at line 238 of file fsl_wm8904.h.

◆ slaveAddress

uint8_t _wm8904_config::slaveAddress

code device slave address

Definition at line 257 of file fsl_wm8904.h.

◆ source

wm8904_fll_clk_source_t _wm8904_fll_config::source

fll reference clock source

Definition at line 229 of file fsl_wm8904.h.

◆ sysClkSource

wm8904_sys_clk_source_t _wm8904_config::sysClkSource

system clock source

Definition at line 246 of file fsl_wm8904.h.



picovoice_driver
Author(s):
autogenerated on Fri Apr 1 2022 02:15:09