Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of libTCS34725 by
TCA9548.h@6:79996efbdcb2, 2017-03-31 (annotated)
- Committer:
- mwilkens241
- Date:
- Fri Mar 31 15:49:30 2017 +0000
- Revision:
- 6:79996efbdcb2
- Parent:
- 4:cc00e3842f1b
nothin changed here, just committing
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| mwilkens241 | 4:cc00e3842f1b | 1 | // TCA9548 I2C Mux |
| mwilkens241 | 4:cc00e3842f1b | 2 | #ifndef MBED_TCA9548_H |
| mwilkens241 | 4:cc00e3842f1b | 3 | #define MBED_TCA9548_H |
| mwilkens241 | 3:afb107db7994 | 4 | |
| mwilkens241 | 1:06c9bbbdb8b0 | 5 | #include "mbed.h" |
| mwilkens241 | 0:4796574af790 | 6 | |
| mwilkens241 | 0:4796574af790 | 7 | //I2C Address |
| mwilkens241 | 0:4796574af790 | 8 | |
| mwilkens241 | 4:cc00e3842f1b | 9 | #define DEV_ADDR (0x70<<1) |
| mwilkens241 | 0:4796574af790 | 10 | |
| mwilkens241 | 4:cc00e3842f1b | 11 | // CHANNEL VALUES |
| mwilkens241 | 4:cc00e3842f1b | 12 | #define CH0 0x01 |
| mwilkens241 | 4:cc00e3842f1b | 13 | #define CH1 0x02 |
| mwilkens241 | 4:cc00e3842f1b | 14 | #define CH2 0x04 |
| mwilkens241 | 4:cc00e3842f1b | 15 | #define CH3 0x08 |
| mwilkens241 | 4:cc00e3842f1b | 16 | #define CH4 0x10 |
| mwilkens241 | 4:cc00e3842f1b | 17 | #define CH5 0x20 |
| mwilkens241 | 4:cc00e3842f1b | 18 | #define CH6 0x40 |
| mwilkens241 | 4:cc00e3842f1b | 19 | #define CH7 0x80 |
| mwilkens241 | 0:4796574af790 | 20 | |
| mwilkens241 | 0:4796574af790 | 21 | |
| mwilkens241 | 4:cc00e3842f1b | 22 | /** TCA9548 control class. |
| mwilkens241 | 3:afb107db7994 | 23 | * |
| mwilkens241 | 3:afb107db7994 | 24 | * Example: |
| mwilkens241 | 3:afb107db7994 | 25 | * @code |
| mwilkens241 | 4:cc00e3842f1b | 26 | * //Perform readings on two i2c devices with the same address |
| mwilkens241 | 4:cc00e3842f1b | 27 | * #include "TCA9548.h" |
| mwilkens241 | 3:afb107db7994 | 28 | * #include "mbed.h" |
| mwilkens241 | 4:cc00e3842f1b | 29 | * #include "VL6180.h" |
| mwilkens241 | 3:afb107db7994 | 30 | * |
| mwilkens241 | 4:cc00e3842f1b | 31 | * TCA9548 i2cMux(SDA, SCL); |
| mwilkens241 | 4:cc00e3842f1b | 32 | * VL6180 laser1(SDA, SCL); // on SD0 and SC0 |
| mwilkens241 | 4:cc00e3842f1b | 33 | * VL6180 laser2(SDA, SCL); // on SD1 and SC1 |
| mwilkens241 | 3:afb107db7994 | 34 | * Serial pc(USBTX, USBRX); //USB serial |
| mwilkens241 | 3:afb107db7994 | 35 | * |
| mwilkens241 | 3:afb107db7994 | 36 | * int main() { |
| mwilkens241 | 4:cc00e3842f1b | 37 | * float reading; |
| mwilkens241 | 4:cc00e3842f1b | 38 | * i2cMux.ch(CH0); |
| mwilkens241 | 4:cc00e3842f1b | 39 | * reading = laser1.read(); |
| mwilkens241 | 4:cc00e3842f1b | 40 | * pc.printf("Laser 1: %f\n", reading); |
| mwilkens241 | 4:cc00e3842f1b | 41 | * i2cMux.ch(CH1); //for two channels: i2cMux.ch(CH1 | CH5); |
| mwilkens241 | 4:cc00e3842f1b | 42 | * pc.printf("Laser 2: %f\n", reading); |
| mwilkens241 | 4:cc00e3842f1b | 43 | * reading = laser2.read(); |
| mwilkens241 | 3:afb107db7994 | 44 | * |
| mwilkens241 | 4:cc00e3842f1b | 45 | * while(1) { |
| mwilkens241 | 3:afb107db7994 | 46 | * } |
| mwilkens241 | 3:afb107db7994 | 47 | * } |
| mwilkens241 | 3:afb107db7994 | 48 | * @endcode |
| mwilkens241 | 3:afb107db7994 | 49 | */ |
| mwilkens241 | 0:4796574af790 | 50 | |
| mwilkens241 | 4:cc00e3842f1b | 51 | class TCA9548 { |
| mwilkens241 | 3:afb107db7994 | 52 | private: |
| mwilkens241 | 3:afb107db7994 | 53 | I2C i2c; |
| mwilkens241 | 4:cc00e3842f1b | 54 | uint8_t channel; |
| mwilkens241 | 4:cc00e3842f1b | 55 | void i2cWrite8(uint8_t addr, char data); |
| mwilkens241 | 3:afb107db7994 | 56 | public: |
| mwilkens241 | 3:afb107db7994 | 57 | /** Initialize object with default i2c pins */ |
| mwilkens241 | 4:cc00e3842f1b | 58 | TCA9548(); |
| mwilkens241 | 3:afb107db7994 | 59 | |
| mwilkens241 | 3:afb107db7994 | 60 | /** Initialize object with specific i2c pins |
| mwilkens241 | 3:afb107db7994 | 61 | * |
| mwilkens241 | 3:afb107db7994 | 62 | * @param i2c_sda SDA pin |
| mwilkens241 | 3:afb107db7994 | 63 | * @param i2c_scl SCL pin |
| mwilkens241 | 3:afb107db7994 | 64 | */ |
| mwilkens241 | 4:cc00e3842f1b | 65 | TCA9548(PinName i2c_sda, PinName i2c_scl); |
| mwilkens241 | 3:afb107db7994 | 66 | |
| mwilkens241 | 4:cc00e3842f1b | 67 | /** Boot up the mux and change to initial channel (defaults to 0) |
| mwilkens241 | 3:afb107db7994 | 68 | * |
| mwilkens241 | 4:cc00e3842f1b | 69 | * @param iCh Initial Channel |
| mwilkens241 | 3:afb107db7994 | 70 | * @return |
| mwilkens241 | 3:afb107db7994 | 71 | * 1 if failed |
| mwilkens241 | 3:afb107db7994 | 72 | *` 0 if successful |
| mwilkens241 | 3:afb107db7994 | 73 | */ |
| mwilkens241 | 4:cc00e3842f1b | 74 | bool init(uint8_t iCh); |
| mwilkens241 | 4:cc00e3842f1b | 75 | bool init(); |
| mwilkens241 | 3:afb107db7994 | 76 | |
| mwilkens241 | 4:cc00e3842f1b | 77 | /** Changes the i2c channel |
| mwilkens241 | 3:afb107db7994 | 78 | * |
| mwilkens241 | 4:cc00e3842f1b | 79 | * @param newCh New channel for mux |
| mwilkens241 | 3:afb107db7994 | 80 | */ |
| mwilkens241 | 4:cc00e3842f1b | 81 | void ch(uint8_t newCh); |
| mwilkens241 | 3:afb107db7994 | 82 | }; |
| mwilkens241 | 2:cc2c0831a763 | 83 | |
| mwilkens241 | 3:afb107db7994 | 84 | #endif |
