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:
Sun Oct 26 22:49:34 2014 +0000
Revision:
2:34a58356394c
Parent:
1:69c37f1ab7df
Basic tone control features all implemented,  working with FRDM-KL25Z

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 /** TDA7419 PreAmp library
danielashercohen 0:86ea14016b10 18 *
danielashercohen 0:86ea14016b10 19 * Includes the commands for volume, fader, subwoofer and tone controls
danielashercohen 0:86ea14016b10 20 *
danielashercohen 0:86ea14016b10 21 */
danielashercohen 0:86ea14016b10 22 class PreampTDA7419 {
danielashercohen 0:86ea14016b10 23 public:
danielashercohen 0:86ea14016b10 24
danielashercohen 2:34a58356394c 25 /** Create a new TDA7419 communication interface
danielashercohen 0:86ea14016b10 26 *
danielashercohen 0:86ea14016b10 27 * @param sda is the pin for I2C SDA
danielashercohen 0:86ea14016b10 28 * @param scl is the pin for I2C SCL
danielashercohen 0:86ea14016b10 29 */
danielashercohen 0:86ea14016b10 30 PreampTDA7419(PinName sda, PinName scl);
danielashercohen 2:34a58356394c 31
danielashercohen 2:34a58356394c 32 /** Directly set the TDA7419 Master volume (0->11)
danielashercohen 2:34a58356394c 33 *
danielashercohen 2:34a58356394c 34 */
danielashercohen 1:69c37f1ab7df 35 void setVolume (int volume);
danielashercohen 2:34a58356394c 36 /** Read the the TDA7419 Master volume (0->11)
danielashercohen 2:34a58356394c 37 *
danielashercohen 2:34a58356394c 38 */
danielashercohen 1:69c37f1ab7df 39 int readVolume ();
danielashercohen 2:34a58356394c 40 /** Increase the current volume (if below 11)
danielashercohen 2:34a58356394c 41 *
danielashercohen 2:34a58356394c 42 */
danielashercohen 1:69c37f1ab7df 43 int increaseVolume();
danielashercohen 2:34a58356394c 44 /** Decrease the current volume (if more than 0)
danielashercohen 2:34a58356394c 45 *
danielashercohen 2:34a58356394c 46 */
danielashercohen 1:69c37f1ab7df 47 int decreaseVolume();
danielashercohen 2:34a58356394c 48 /** Select the input (1->4)
danielashercohen 2:34a58356394c 49 * Stereo inputs are 1->3
danielashercohen 2:34a58356394c 50 */
danielashercohen 1:69c37f1ab7df 51 void setInput (int input);
danielashercohen 2:34a58356394c 52 /** Read currently selected input
danielashercohen 2:34a58356394c 53 *
danielashercohen 2:34a58356394c 54 */
danielashercohen 1:69c37f1ab7df 55 int readInput ();
danielashercohen 1:69c37f1ab7df 56
danielashercohen 2:34a58356394c 57 /** Increase treble level (-5 -> 5)
danielashercohen 2:34a58356394c 58 *
danielashercohen 2:34a58356394c 59 */
danielashercohen 1:69c37f1ab7df 60 int increaseTreble();
danielashercohen 2:34a58356394c 61 /** Decrease treble level (-5 -> 5)
danielashercohen 2:34a58356394c 62 *
danielashercohen 2:34a58356394c 63 */
danielashercohen 1:69c37f1ab7df 64 int decreaseTreble();
danielashercohen 2:34a58356394c 65 /** Read currently set treble level
danielashercohen 2:34a58356394c 66 *
danielashercohen 2:34a58356394c 67 */
danielashercohen 1:69c37f1ab7df 68 int readTreble ();
danielashercohen 2:34a58356394c 69
danielashercohen 2:34a58356394c 70 /** Increase middle level (-5 -> 5)
danielashercohen 2:34a58356394c 71 *
danielashercohen 2:34a58356394c 72 */
danielashercohen 2:34a58356394c 73 int increaseMiddle();
danielashercohen 2:34a58356394c 74 /** Decrease middle level (-5 -> 5)
danielashercohen 2:34a58356394c 75 *
danielashercohen 2:34a58356394c 76 */
danielashercohen 2:34a58356394c 77 int decreaseMiddle();
danielashercohen 2:34a58356394c 78 /** Read currently set middle level
danielashercohen 2:34a58356394c 79 *
danielashercohen 2:34a58356394c 80 */
danielashercohen 2:34a58356394c 81 int readMiddle ();
danielashercohen 2:34a58356394c 82
danielashercohen 2:34a58356394c 83 /** Increase Bass level (-5 -> 5)
danielashercohen 2:34a58356394c 84 *
danielashercohen 2:34a58356394c 85 */
danielashercohen 2:34a58356394c 86 int increaseBass();
danielashercohen 2:34a58356394c 87 /** Decrease bass level (-5 -> 5)
danielashercohen 2:34a58356394c 88 *
danielashercohen 2:34a58356394c 89 */
danielashercohen 2:34a58356394c 90 int decreaseBass();
danielashercohen 2:34a58356394c 91 /** Read currently set middle level
danielashercohen 2:34a58356394c 92 *
danielashercohen 2:34a58356394c 93 */
danielashercohen 2:34a58356394c 94 int readBass ();
danielashercohen 2:34a58356394c 95
danielashercohen 2:34a58356394c 96 /** Adjust the volume of each channel attenuator
danielashercohen 2:34a58356394c 97 *
danielashercohen 2:34a58356394c 98 * @param speakerNumber
danielashercohen 2:34a58356394c 99 * 1 - left front,
danielashercohen 2:34a58356394c 100 * 2 - right front,
danielashercohen 2:34a58356394c 101 * 3 - back left,
danielashercohen 2:34a58356394c 102 * 4 - back right,
danielashercohen 2:34a58356394c 103 * 5 - subwoofer,
danielashercohen 2:34a58356394c 104 * 6 - volume of mix channel
danielashercohen 2:34a58356394c 105 */
danielashercohen 2:34a58356394c 106 int increaseSpeaker (int speakerNumber);
danielashercohen 2:34a58356394c 107 /** Adjust the volume of each channel attenuator
danielashercohen 2:34a58356394c 108 *
danielashercohen 2:34a58356394c 109 * @param speakerNumber
danielashercohen 2:34a58356394c 110 * 1 - left front,
danielashercohen 2:34a58356394c 111 * 2 - right front,
danielashercohen 2:34a58356394c 112 * 3 - back left,
danielashercohen 2:34a58356394c 113 * 4 - back right,
danielashercohen 2:34a58356394c 114 * 5 - subwoofer,
danielashercohen 2:34a58356394c 115 * 6 - volume of mix channel
danielashercohen 2:34a58356394c 116 */
danielashercohen 2:34a58356394c 117 int decreaseSpeaker (int speakerNumber);
danielashercohen 2:34a58356394c 118
danielashercohen 2:34a58356394c 119 /** Read the value that is currently set for each attenuator
danielashercohen 2:34a58356394c 120 * @param speakerNumber match the increase and decrease parameter values
danielashercohen 2:34a58356394c 121 */
danielashercohen 2:34a58356394c 122 int readSpeaker (int speakerNumber);
danielashercohen 2:34a58356394c 123
danielashercohen 2:34a58356394c 124 /** Enable the mix input (by default this mixes to the front two channels
danielashercohen 2:34a58356394c 125 * @return The return is the state of the mix (1 = on, 0 = 0ff) after this call
danielashercohen 2:34a58356394c 126 */
danielashercohen 2:34a58356394c 127 int toggleMix();
danielashercohen 2:34a58356394c 128
danielashercohen 2:34a58356394c 129 /** Read if Mix is enabled or not
danielashercohen 2:34a58356394c 130 * @return The return is the state of the mix (1 = on, 0 = 0ff) after this call
danielashercohen 2:34a58356394c 131 */
danielashercohen 2:34a58356394c 132 int readMix();
danielashercohen 1:69c37f1ab7df 133
danielashercohen 0:86ea14016b10 134 private:
danielashercohen 1:69c37f1ab7df 135 // Signals related to I2C communication
danielashercohen 0:86ea14016b10 136 I2C _device;
danielashercohen 1:69c37f1ab7df 137
danielashercohen 1:69c37f1ab7df 138 ////////////////////////////////////
danielashercohen 1:69c37f1ab7df 139 // register addresses for TDA7419 //
danielashercohen 1:69c37f1ab7df 140 ////////////////////////////////////
danielashercohen 1:69c37f1ab7df 141 int _volume;
danielashercohen 1:69c37f1ab7df 142 int _input;
danielashercohen 1:69c37f1ab7df 143
danielashercohen 1:69c37f1ab7df 144 int _mute;
danielashercohen 1:69c37f1ab7df 145 int _mix;
danielashercohen 1:69c37f1ab7df 146
danielashercohen 1:69c37f1ab7df 147 // for register 4 Treble Filter
danielashercohen 1:69c37f1ab7df 148 int _referenceInE;
danielashercohen 1:69c37f1ab7df 149 int _trebleCenterFreq;
danielashercohen 1:69c37f1ab7df 150 int _treble;
danielashercohen 1:69c37f1ab7df 151
danielashercohen 1:69c37f1ab7df 152 // for middle frequecy filter
danielashercohen 1:69c37f1ab7df 153 int _middleSoftStep;
danielashercohen 1:69c37f1ab7df 154 int _middleQ;
danielashercohen 1:69c37f1ab7df 155 int _middle;
danielashercohen 1:69c37f1ab7df 156
danielashercohen 1:69c37f1ab7df 157 // for bass frequecy filter
danielashercohen 1:69c37f1ab7df 158 int _bassSoftStep;
danielashercohen 1:69c37f1ab7df 159 int _bassQ;
danielashercohen 1:69c37f1ab7df 160 int _bass;
danielashercohen 1:69c37f1ab7df 161
danielashercohen 1:69c37f1ab7df 162 // for output attenuators
danielashercohen 1:69c37f1ab7df 163 int _atten_lf;
danielashercohen 1:69c37f1ab7df 164 int _atten_rf;
danielashercohen 1:69c37f1ab7df 165 int _atten_lr;
danielashercohen 1:69c37f1ab7df 166 int _atten_rr;
danielashercohen 1:69c37f1ab7df 167 int _atten_mix;
danielashercohen 1:69c37f1ab7df 168 int _atten_sub;
danielashercohen 2:34a58356394c 169
danielashercohen 2:34a58356394c 170 void writeToTDA7419 (int command, int value);
danielashercohen 2:34a58356394c 171 void setAttenuationReg (int regAddr, int attenuation);
danielashercohen 1:69c37f1ab7df 172 int calcToneAttenuationReg(int attenuation);
danielashercohen 1:69c37f1ab7df 173 void updateTDA7419Reg();
danielashercohen 0:86ea14016b10 174
danielashercohen 0:86ea14016b10 175 };
danielashercohen 0:86ea14016b10 176
danielashercohen 0:86ea14016b10 177 #endif
danielashercohen 0:86ea14016b10 178
danielashercohen 0:86ea14016b10 179
danielashercohen 0:86ea14016b10 180
danielashercohen 0:86ea14016b10 181
danielashercohen 0:86ea14016b10 182
danielashercohen 0:86ea14016b10 183
danielashercohen 0:86ea14016b10 184
danielashercohen 0:86ea14016b10 185
danielashercohen 0:86ea14016b10 186
danielashercohen 0:86ea14016b10 187
danielashercohen 0:86ea14016b10 188
danielashercohen 0:86ea14016b10 189
danielashercohen 0:86ea14016b10 190
danielashercohen 0:86ea14016b10 191