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.
PreampTDA7419.h@1:69c37f1ab7df, 2014-10-20 (annotated)
- 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?
User | Revision | Line number | New 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 |