This library controls a ST TDA7419 audio control IC. This is part of a project to implement an mbed controlled car stereo. The TDA7419 will take in stereo and output four channels of audio plus a subwoofer channel.

Dependents:   car_stereo

Committer:
danielashercohen
Date:
Mon Oct 20 05:54:52 2014 +0000
Revision:
1:69c37f1ab7df
Parent:
0:86ea14016b10
Child:
2:34a58356394c
Volume, input and treble controls working.; Moving all the functionality into the library

Who changed what in which revision?

UserRevisionLine numberNew contents of line
danielashercohen 0:86ea14016b10 1 /** TDA7419 PreAmp library, I2C
danielashercohen 0:86ea14016b10 2 *
danielashercohen 0:86ea14016b10 3 * @Author: Dan Cohen
danielashercohen 0:86ea14016b10 4 */
danielashercohen 0:86ea14016b10 5 #ifndef DigoleSerialDisp_h
danielashercohen 0:86ea14016b10 6 #define DigoleSerialDisp_h
danielashercohen 0:86ea14016b10 7
danielashercohen 0:86ea14016b10 8 #include "mbed.h"
danielashercohen 0:86ea14016b10 9 #include <inttypes.h>
danielashercohen 1:69c37f1ab7df 10
danielashercohen 1:69c37f1ab7df 11 ///////////////////////////
danielashercohen 0:86ea14016b10 12 // Variables for TDA7419 //
danielashercohen 0:86ea14016b10 13 ///////////////////////////
danielashercohen 0:86ea14016b10 14 // I2C address for TDA7419
danielashercohen 0:86ea14016b10 15 #define TDA7419_ADDRESS 0x44
danielashercohen 0:86ea14016b10 16
danielashercohen 0:86ea14016b10 17 #define DEC 10
danielashercohen 0:86ea14016b10 18 #define HEX 16
danielashercohen 0:86ea14016b10 19 #define OCT 8
danielashercohen 0:86ea14016b10 20 #define BIN 2
danielashercohen 0:86ea14016b10 21
danielashercohen 0:86ea14016b10 22 /** TDA7419 PreAmp library
danielashercohen 0:86ea14016b10 23 *
danielashercohen 0:86ea14016b10 24 * Includes the commands for volume, fader, subwoofer and tone controls
danielashercohen 0:86ea14016b10 25 *
danielashercohen 0:86ea14016b10 26 */
danielashercohen 0:86ea14016b10 27 class PreampTDA7419 {
danielashercohen 0:86ea14016b10 28 public:
danielashercohen 0:86ea14016b10 29
danielashercohen 0:86ea14016b10 30 /** Create a new Digole Serial Display interface
danielashercohen 0:86ea14016b10 31 *
danielashercohen 0:86ea14016b10 32 * @param sda is the pin for I2C SDA
danielashercohen 0:86ea14016b10 33 * @param scl is the pin for I2C SCL
danielashercohen 0:86ea14016b10 34 * @param address is the 7-bit address (default is 0x27 for the device)
danielashercohen 0:86ea14016b10 35 */
danielashercohen 0:86ea14016b10 36 PreampTDA7419(PinName sda, PinName scl);
danielashercohen 0:86ea14016b10 37
danielashercohen 0:86ea14016b10 38 /** Sets a new I2C address for the Preamp board (perhaps not useful as it is fixed for the TDA4719)
danielashercohen 0:86ea14016b10 39 * @param address is the the new address
danielashercohen 0:86ea14016b10 40 */
danielashercohen 0:86ea14016b10 41 void setI2CAddress(uint8_t add);
danielashercohen 0:86ea14016b10 42
danielashercohen 0:86ea14016b10 43 /** Set up the TDA7419 to default values that will allow audio to pass through the device
danielashercohen 0:86ea14016b10 44 *
danielashercohen 0:86ea14016b10 45 */
danielashercohen 0:86ea14016b10 46 void initialize();
danielashercohen 1:69c37f1ab7df 47 int i2c_write(int command, int value);
danielashercohen 1:69c37f1ab7df 48
danielashercohen 1:69c37f1ab7df 49 /** Set up the TDA7419 to default values that will allow audio to pass through the device
danielashercohen 1:69c37f1ab7df 50 *
danielashercohen 1:69c37f1ab7df 51 */
danielashercohen 1:69c37f1ab7df 52 void setVolume (int volume);
danielashercohen 1:69c37f1ab7df 53 int readVolume ();
danielashercohen 1:69c37f1ab7df 54 int increaseVolume();
danielashercohen 1:69c37f1ab7df 55 int decreaseVolume();
danielashercohen 1:69c37f1ab7df 56 void setInput (int input);
danielashercohen 1:69c37f1ab7df 57 int readInput ();
danielashercohen 1:69c37f1ab7df 58
danielashercohen 1:69c37f1ab7df 59 int increaseTreble();
danielashercohen 1:69c37f1ab7df 60 int decreaseTreble();
danielashercohen 1:69c37f1ab7df 61 int readTreble ();
danielashercohen 1:69c37f1ab7df 62
danielashercohen 0:86ea14016b10 63 private:
danielashercohen 1:69c37f1ab7df 64 // Signals related to I2C communication
danielashercohen 0:86ea14016b10 65 I2C _device;
danielashercohen 0:86ea14016b10 66 uint8_t _address;
danielashercohen 0:86ea14016b10 67 uint8_t _Comdelay;
danielashercohen 1:69c37f1ab7df 68
danielashercohen 1:69c37f1ab7df 69 ////////////////////////////////////
danielashercohen 1:69c37f1ab7df 70 // register addresses for TDA7419 //
danielashercohen 1:69c37f1ab7df 71 ////////////////////////////////////
danielashercohen 1:69c37f1ab7df 72 int _volume;
danielashercohen 1:69c37f1ab7df 73 int _input;
danielashercohen 1:69c37f1ab7df 74
danielashercohen 1:69c37f1ab7df 75 int _mute;
danielashercohen 1:69c37f1ab7df 76 int _mix;
danielashercohen 1:69c37f1ab7df 77
danielashercohen 1:69c37f1ab7df 78 // for register 4 Treble Filter
danielashercohen 1:69c37f1ab7df 79 int _referenceInE;
danielashercohen 1:69c37f1ab7df 80 int _trebleCenterFreq;
danielashercohen 1:69c37f1ab7df 81 int _treble;
danielashercohen 1:69c37f1ab7df 82
danielashercohen 1:69c37f1ab7df 83 // for middle frequecy filter
danielashercohen 1:69c37f1ab7df 84 int _middleSoftStep;
danielashercohen 1:69c37f1ab7df 85 int _middleQ;
danielashercohen 1:69c37f1ab7df 86 int _middle;
danielashercohen 1:69c37f1ab7df 87
danielashercohen 1:69c37f1ab7df 88 // for bass frequecy filter
danielashercohen 1:69c37f1ab7df 89 int _bassSoftStep;
danielashercohen 1:69c37f1ab7df 90 int _bassQ;
danielashercohen 1:69c37f1ab7df 91 int _bass;
danielashercohen 1:69c37f1ab7df 92
danielashercohen 1:69c37f1ab7df 93 // for output attenuators
danielashercohen 1:69c37f1ab7df 94 int _atten_lf;
danielashercohen 1:69c37f1ab7df 95 int _atten_rf;
danielashercohen 1:69c37f1ab7df 96 int _atten_lr;
danielashercohen 1:69c37f1ab7df 97 int _atten_rr;
danielashercohen 1:69c37f1ab7df 98 int _atten_mix;
danielashercohen 1:69c37f1ab7df 99 int _atten_sub;
danielashercohen 1:69c37f1ab7df 100
danielashercohen 1:69c37f1ab7df 101 void writeToTDA7419 (int address, int value);
danielashercohen 1:69c37f1ab7df 102 int calcAttenuationReg (int attenuation);
danielashercohen 1:69c37f1ab7df 103 int calcToneAttenuationReg(int attenuation);
danielashercohen 1:69c37f1ab7df 104 void updateTDA7419Reg();
danielashercohen 0:86ea14016b10 105
danielashercohen 0:86ea14016b10 106 };
danielashercohen 0:86ea14016b10 107
danielashercohen 0:86ea14016b10 108 #endif
danielashercohen 0:86ea14016b10 109
danielashercohen 0:86ea14016b10 110
danielashercohen 0:86ea14016b10 111
danielashercohen 0:86ea14016b10 112
danielashercohen 0:86ea14016b10 113
danielashercohen 0:86ea14016b10 114
danielashercohen 0:86ea14016b10 115
danielashercohen 0:86ea14016b10 116
danielashercohen 0:86ea14016b10 117
danielashercohen 0:86ea14016b10 118
danielashercohen 0:86ea14016b10 119
danielashercohen 0:86ea14016b10 120
danielashercohen 0:86ea14016b10 121
danielashercohen 0:86ea14016b10 122