Device driver for TI TLV320AIC1110 voice band codec
Work in Progress
TLV320AIC1110.cpp
- Committer:
- sam_grove
- Date:
- 2013-05-15
- Revision:
- 3:4592d862ef88
- Parent:
- 1:4d559df5733e
- Parent:
- 2:e7c7c0177dd8
- Child:
- 4:470f89e786f9
File content as of revision 3:4592d862ef88:
/** * @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" #include "LogUtil.h" TLV320AIC1110::TLV320AIC1110(I2C &i2c) { _i2c = &i2c; _i2c->frequency(400000); return; } TLV320AIC1110::~TLV320AIC1110() { return; } void TLV320AIC1110::init(void) const { writeRegister(POWER_CONTROL, 0x9B); writeRegister(MODE_CONTROL, 0x00); writeRegister(AUX, 0x81); return; } void TLV320AIC1110::regDump(void) const { for(int i=0; i<7; i++) { LOG(" Register 0x%02x 0x%02x\n", i, readRegister(i)); } return; } void TLV320AIC1110::writeRegister(const TLV320AIC1110_REGISTERS reg, const uint8_t value) const { const uint8_t w_address = 0xE2; uint8_t data[2] = {reg, value}; __disable_irq(); if (0 != _i2c->write(w_address, (char *)data, 2)) { ERROR("write failed\n"); } __enable_irq(); return; } uint8_t TLV320AIC1110::readRegister(const uint8_t reg) const { const uint8_t w_address = 0xE2; const uint8_t r_address = 0xE3; char data[1] = {reg}; __disable_irq(); _i2c->write(w_address, (char *)data, 1, 1); _i2c->read (r_address, data, 1); __enable_irq(); // _i2c->start(); // _i2c->write(w_address); // _i2c->write(reg); // _i2c->stop(); // _i2c->start(); // _i2c->write(r_address); // data[0] = _i2c->read(1); // _i2c->stop(); return data[0]; }