Production Test Program (PTP) for the LPC4088 Experiment Base Board
Dependencies: EALib I2S LM75B SDFileSystem mbed
Diff: WM8731.cpp
- Revision:
- 0:0d5190d379d3
- Child:
- 3:7ef908e84ae1
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WM8731.cpp Mon Aug 25 13:15:27 2014 +0000 @@ -0,0 +1,61 @@ +/* + * Copyright 2013 Embedded Artists AB + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/****************************************************************************** + * Includes + *****************************************************************************/ + +#include "mbed.h" +#include "mbed_debug.h" + +#include "WM8731.h" + +/****************************************************************************** + * Defines and typedefs + *****************************************************************************/ + +#define WM8731_I2C_ADDR (0x1A << 1) + +#define WM8731_REG_R0_LEFT_LINE_IN 0x00 +#define WM8731_REG_R1_RIGHT_LINE_IN 0x01 +#define WM8731_REG_R2_LEFT_HP_OUT 0x02 +#define WM8731_REG_R3_RIGHT_HP_OUT 0x03 +#define WM8731_REG_R4_ANALOGUE_AUDIO_PATH_CONTROL 0x04 +#define WM8731_REG_R5_DIGITAL_AUDIO_PATH_CONTROL 0x05 +#define WM8731_REG_R6_POWER_DOWN_CONTROL 0x06 +#define WM8731_REG_R7_DIGITAL_AUDIO_INTERFACE_FORMAT 0x07 +#define WM8731_REG_R8_SAMPLING_CONTROL 0x08 +#define WM8731_REG_R9_ACTIVE_CONTROL 0x09 +#define WM8731_REG_R15_RESET 0x0f + + +WM8731::WM8731(PinName sda, PinName scl) : _i2c(sda, scl) { +} + +bool WM8731::writeCmd(Register reg, uint16_t data) { + char dataToTransfer[2]; + + dataToTransfer[0] = (reg << 1) | ((data & 0x100) >> 8); + dataToTransfer[1] = data & 0xff; + + if (_i2c.write(WM8731_I2C_ADDR, dataToTransfer, 2) == 0) { + wait_us(40); + return true; + } + return false; +} + +