Device driver for TI TLV320AIC1110 voice band codec
Work in Progress
Diff: TLV320AIC1110.cpp
- Revision:
- 0:ec233f3b49d8
- Child:
- 1:4d559df5733e
- Child:
- 2:e7c7c0177dd8
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TLV320AIC1110.cpp Fri May 10 21:14:19 2013 +0000 @@ -0,0 +1,79 @@ +/** + * @file TLV320AIC1110.cpp + * @brief Device driver - TLV320AIC1110 CODEC + * @author sam grove + * @version 1.0 + * @see http://www.ti.com/product/tlv320aic1110 + * + * Copyright (c) 2013 + * + * 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. + */ + +#include "TLV320AIC1110.h" + +TLV320AIC1110::TLV320AIC1110(I2C &i2c) +{ + _i2c = &i2c; + _i2c->frequency(400000); + + return; +} + +TLV320AIC1110::~TLV320AIC1110() +{ + return; +} + +void TLV320AIC1110::init(void) +{ + writeRegister(0x00, 0x9B); + writeRegister(0x01, 0x00); + writeRegister(0x06, 0x81); + + return; +} + +void TLV320AIC1110::writeRegister(const uint8_t reg, const uint8_t value) +{ + const uint8_t w_address = 0xE2; + uint8_t data[2] = {reg, value}; + + if (0 != _i2c->write(w_address, (char *)data, 2)) + { + // catch an error here + } + + return; +} + +uint8_t TLV320AIC1110::readRegister(const uint8_t reg) +{ + const uint8_t w_address = 0xE2; + const uint8_t r_address = 0xE3; + uint8_t data[1] = {reg}; + + _i2c->write(w_address, (char *)data, 1); + _i2c->start(); + _i2c->write(r_address); + data[0] = _i2c->read(0); + _i2c->stop(); + + return data[0]; +} + + + + + + \ No newline at end of file