MCUXpresso SDK API Reference Manual
Rev. 0
NXP Semiconductors
|
The wm8960 driver provide codec control interface.
Modules | |
wm8960 adapter | |
Data Structures | |
struct | wm8960_audio_format_t |
wm8960 audio format More... | |
struct | wm8960_config_t |
Initialize structure of WM8960. More... | |
struct | wm8960_handle_t |
wm8960 codec handler More... | |
Macros | |
#define | WM8960_I2C_HANDLER_SIZE CODEC_I2C_MASTER_HANDLER_SIZE |
wm8960 handle size | |
#define | WM8960_LINVOL 0x0 |
Define the register address of WM8960. More... | |
#define | WM8960_CACHEREGNUM 56 |
Cache register number. | |
#define | WM8960_IFACE1_FORMAT_MASK 0x03 |
WM8960_IFACE1 FORMAT bits. | |
#define | WM8960_IFACE1_WL_MASK 0x0C |
WM8960_IFACE1 WL bits. | |
#define | WM8960_IFACE1_LRP_MASK 0x10 |
WM8960_IFACE1 LRP bit. | |
#define | WM8960_IFACE1_DLRSWAP_MASK 0x20 |
WM8960_IFACE1 DLRSWAP bit. | |
#define | WM8960_IFACE1_MS_MASK 0x40 |
WM8960_IFACE1 MS bit. | |
#define | WM8960_IFACE1_BCLKINV_MASK 0x80 |
WM8960_IFACE1 BCLKINV bit. | |
#define | WM8960_IFACE1_ALRSWAP_MASK 0x100 |
WM8960_IFACE1 ALRSWAP bit. | |
#define | WM8960_POWER1_VREF_MASK 0x40 |
WM8960_POWER1. | |
#define | WM8960_POWER2_DACL_MASK 0x100 |
WM8960_POWER2. | |
#define | WM8960_I2C_ADDR 0x1A |
WM8960 I2C address. More... | |
#define | WM8960_I2C_BAUDRATE (100000U) |
WM8960 I2C baudrate. | |
Functions | |
status_t | WM8960_Init (wm8960_handle_t *handle, const wm8960_config_t *wm8960Config) |
WM8960 initialize function. More... | |
status_t | WM8960_Deinit (wm8960_handle_t *handle) |
Deinit the WM8960 codec. More... | |
status_t | WM8960_SetDataRoute (wm8960_handle_t *handle, wm8960_route_t route) |
Set audio data route in WM8960. More... | |
status_t | WM8960_SetLeftInput (wm8960_handle_t *handle, wm8960_input_t input) |
Set left audio input source in WM8960. More... | |
status_t | WM8960_SetRightInput (wm8960_handle_t *handle, wm8960_input_t input) |
Set right audio input source in WM8960. More... | |
status_t | WM8960_SetProtocol (wm8960_handle_t *handle, wm8960_protocol_t protocol) |
Set the audio transfer protocol. More... | |
void | WM8960_SetMasterSlave (wm8960_handle_t *handle, bool master) |
Set WM8960 as master or slave. More... | |
status_t | WM8960_SetVolume (wm8960_handle_t *handle, wm8960_module_t module, uint32_t volume) |
Set the volume of different modules in WM8960. More... | |
uint32_t | WM8960_GetVolume (wm8960_handle_t *handle, wm8960_module_t module) |
Get the volume of different modules in WM8960. More... | |
status_t | WM8960_SetMute (wm8960_handle_t *handle, wm8960_module_t module, bool isEnabled) |
Mute modules in WM8960. More... | |
status_t | WM8960_SetModule (wm8960_handle_t *handle, wm8960_module_t module, bool isEnabled) |
Enable/disable expected devices. More... | |
status_t | WM8960_SetPlay (wm8960_handle_t *handle, uint32_t playSource) |
SET the WM8960 play source. More... | |
status_t | WM8960_ConfigDataFormat (wm8960_handle_t *handle, uint32_t sysclk, uint32_t sample_rate, uint32_t bits) |
Configure the data format of audio data. More... | |
status_t | WM8960_SetJackDetect (wm8960_handle_t *handle, bool isEnabled) |
Enable/disable jack detect feature. More... | |
status_t | WM8960_WriteReg (wm8960_handle_t *handle, uint8_t reg, uint16_t val) |
Write register to WM8960 using I2C. More... | |
status_t | WM8960_ReadReg (uint8_t reg, uint16_t *val) |
Read register from WM8960 using I2C. More... | |
status_t | WM8960_ModifyReg (wm8960_handle_t *handle, uint8_t reg, uint16_t mask, uint16_t val) |
Modify some bits in the register using I2C. More... | |
Driver version | |
#define | FSL_WM8960_DRIVER_VERSION (MAKE_VERSION(2, 1, 1)) |
CLOCK driver version 2.1.1. | |
struct wm8960_audio_format_t |
Data Fields | |
uint32_t | mclk_HZ |
master clock frequency | |
uint32_t | sampleRate |
sample rate | |
uint32_t | bitWidth |
bit width | |
struct wm8960_config_t |
Data Fields | |
wm8960_route_t | route |
Audio data route. More... | |
wm8960_protocol_t | bus |
Audio transfer protocol. | |
wm8960_audio_format_t | format |
Audio format. | |
bool | master_slave |
Master or slave. More... | |
bool | enableSpeaker |
True means enable class D speaker as output, false means no. | |
wm8960_input_t | leftInputSource |
Left input source for WM8960. | |
wm8960_input_t | rightInputSource |
Right input source for wm8960. | |
wm8960_play_source_t | playSource |
play source | |
uint8_t | slaveAddress |
wm8960 device address | |
codec_i2c_config_t | i2cConfig |
i2c configuration | |
wm8960_route_t wm8960_config_t::route |
bool wm8960_config_t::master_slave |
struct wm8960_handle_t |
Data Fields | |
const wm8960_config_t * | config |
wm8904 config pointer | |
uint8_t | i2cHandle [WM8960_I2C_HANDLER_SIZE] |
i2c handle | |
#define WM8960_LINVOL 0x0 |
#define WM8960_I2C_ADDR 0x1A |
enum wm8960_module_t |
enum _wm8960_play_channel |
enum wm8960_play_source_t |
enum wm8960_route_t |
Only provide some typical data route, not all route listed. Note: Users cannot combine any routes, once a new route is set, the previous one would be replaced.
enum wm8960_protocol_t |
enum wm8960_input_t |
enum _wm8960_sample_rate |
status_t WM8960_Init | ( | wm8960_handle_t * | handle, |
const wm8960_config_t * | wm8960Config | ||
) |
The second parameter is NULL to WM8960 in this version. If users want to change the settings, they have to use wm8960_write_reg() or wm8960_modify_reg() to set the register value of WM8960. Note: If the codec_config is NULL, it would initialize WM8960 using default settings. The default setting: codec_config->route = kWM8960_RoutePlaybackandRecord codec_config->bus = kWM8960_BusI2S codec_config->master = slave
handle | WM8960 handle structure. |
wm8960Config | WM8960 configuration structure. |
status_t WM8960_Deinit | ( | wm8960_handle_t * | handle | ) |
This function close all modules in WM8960 to save power.
handle | WM8960 handle structure pointer. |
status_t WM8960_SetDataRoute | ( | wm8960_handle_t * | handle, |
wm8960_route_t | route | ||
) |
This function would set the data route according to route. The route cannot be combined, as all route would enable different modules. Note: If a new route is set, the previous route would not work.
handle | WM8960 handle structure. |
route | Audio data route in WM8960. |
status_t WM8960_SetLeftInput | ( | wm8960_handle_t * | handle, |
wm8960_input_t | input | ||
) |
handle | WM8960 handle structure. |
input | Audio input source. |
status_t WM8960_SetRightInput | ( | wm8960_handle_t * | handle, |
wm8960_input_t | input | ||
) |
handle | WM8960 handle structure. |
input | Audio input source. |
status_t WM8960_SetProtocol | ( | wm8960_handle_t * | handle, |
wm8960_protocol_t | protocol | ||
) |
WM8960 only supports I2S, left justified, right justified, PCM A, PCM B format.
handle | WM8960 handle structure. |
protocol | Audio data transfer protocol. |
void WM8960_SetMasterSlave | ( | wm8960_handle_t * | handle, |
bool | master | ||
) |
handle | WM8960 handle structure. |
master | 1 represent master, 0 represent slave. |
status_t WM8960_SetVolume | ( | wm8960_handle_t * | handle, |
wm8960_module_t | module, | ||
uint32_t | volume | ||
) |
This function would set the volume of WM8960 modules. Uses need to appoint the module. The function assume that left channel and right channel has the same volume.
handle | WM8960 handle structure. |
module | Module to set volume, it can be ADC, DAC, Headphone and so on. |
volume | Volume value need to be set. |
uint32_t WM8960_GetVolume | ( | wm8960_handle_t * | handle, |
wm8960_module_t | module | ||
) |
This function gets the volume of WM8960 modules. Uses need to appoint the module. The function assume that left channel and right channel has the same volume.
handle | WM8960 handle structure. |
module | Module to set volume, it can be ADC, DAC, Headphone and so on. |
status_t WM8960_SetMute | ( | wm8960_handle_t * | handle, |
wm8960_module_t | module, | ||
bool | isEnabled | ||
) |
handle | WM8960 handle structure. |
module | Modules need to be mute. |
isEnabled | Mute or unmute, 1 represent mute. |
status_t WM8960_SetModule | ( | wm8960_handle_t * | handle, |
wm8960_module_t | module, | ||
bool | isEnabled | ||
) |
handle | WM8960 handle structure. |
module | Module expected to enable. |
isEnabled | Enable or disable moudles. |
status_t WM8960_SetPlay | ( | wm8960_handle_t * | handle, |
uint32_t | playSource | ||
) |
handle | WM8960 handle structure. |
playSource | play source , can be a value combine of kWM8960_ModuleHeadphoneSourcePGA, kWM8960_ModuleHeadphoneSourceDAC, kWM8960_ModulePlaySourceInput, kWM8960_ModulePlayMonoRight, kWM8960_ModulePlayMonoLeft. |
status_t WM8960_ConfigDataFormat | ( | wm8960_handle_t * | handle, |
uint32_t | sysclk, | ||
uint32_t | sample_rate, | ||
uint32_t | bits | ||
) |
This function would configure the registers about the sample rate, bit depths.
handle | WM8960 handle structure pointer. |
sysclk | system clock of the codec which can be generated by MCLK or PLL output. |
sample_rate | Sample rate of audio file running in WM8960. WM8960 now supports 8k, 11.025k, 12k, 16k, 22.05k, 24k, 32k, 44.1k, 48k and 96k sample rate. |
bits | Bit depth of audio file (WM8960 only supports 16bit, 20bit, 24bit and 32 bit in HW). |
status_t WM8960_SetJackDetect | ( | wm8960_handle_t * | handle, |
bool | isEnabled | ||
) |
handle | WM8960 handle structure. |
isEnabled | Enable or disable moudles. |
status_t WM8960_WriteReg | ( | wm8960_handle_t * | handle, |
uint8_t | reg, | ||
uint16_t | val | ||
) |
handle | WM8960 handle structure. |
reg | The register address in WM8960. |
val | Value needs to write into the register. |
status_t WM8960_ReadReg | ( | uint8_t | reg, |
uint16_t * | val | ||
) |
reg | The register address in WM8960. |
val | Value written to. |
status_t WM8960_ModifyReg | ( | wm8960_handle_t * | handle, |
uint8_t | reg, | ||
uint16_t | mask, | ||
uint16_t | val | ||
) |
handle | WM8960 handle structure. |
reg | The register address in WM8960. |
mask | The mask code for the bits want to write. The bit you want to write should be 0. |
val | Value needs to write into the register. |