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.
PCA9547.h@0:5d6ed64426fb, 2019-01-11 (annotated)
- Committer:
- TakumiToda
- Date:
- Fri Jan 11 08:00:39 2019 +0000
- Revision:
- 0:5d6ed64426fb
PCA9547
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| TakumiToda | 0:5d6ed64426fb | 1 | /** |
| TakumiToda | 0:5d6ed64426fb | 2 | * PCA9547 library |
| TakumiToda | 0:5d6ed64426fb | 3 | * |
| TakumiToda | 0:5d6ed64426fb | 4 | * @author Tedd OKANO |
| TakumiToda | 0:5d6ed64426fb | 5 | * @version 0.2 |
| TakumiToda | 0:5d6ed64426fb | 6 | * @date Feb-2015 |
| TakumiToda | 0:5d6ed64426fb | 7 | * |
| TakumiToda | 0:5d6ed64426fb | 8 | * PCA9547: an I2C bus multiplexer control library |
| TakumiToda | 0:5d6ed64426fb | 9 | * |
| TakumiToda | 0:5d6ed64426fb | 10 | * PCA9547 is an I2C multiplexer which enables to select 1:8 multiplexed I2C bus. |
| TakumiToda | 0:5d6ed64426fb | 11 | * The multiplexer is useful for deviding I2C bus to avoiding slave address conflict and separating capacitive loads. |
| TakumiToda | 0:5d6ed64426fb | 12 | * |
| TakumiToda | 0:5d6ed64426fb | 13 | * For more information about PCA9547: |
| TakumiToda | 0:5d6ed64426fb | 14 | * http://www.nxp.com/documents/data_sheet/PCA9547.pdf |
| TakumiToda | 0:5d6ed64426fb | 15 | * |
| TakumiToda | 0:5d6ed64426fb | 16 | */ |
| TakumiToda | 0:5d6ed64426fb | 17 | |
| TakumiToda | 0:5d6ed64426fb | 18 | #ifndef MBED_PCA9547_H |
| TakumiToda | 0:5d6ed64426fb | 19 | #define MBED_PCA9547_H |
| TakumiToda | 0:5d6ed64426fb | 20 | |
| TakumiToda | 0:5d6ed64426fb | 21 | #include "mbed.h" |
| TakumiToda | 0:5d6ed64426fb | 22 | |
| TakumiToda | 0:5d6ed64426fb | 23 | /** PCA9547 class |
| TakumiToda | 0:5d6ed64426fb | 24 | * |
| TakumiToda | 0:5d6ed64426fb | 25 | * PCA9547: an I2C bus multiplexer control library |
| TakumiToda | 0:5d6ed64426fb | 26 | * |
| TakumiToda | 0:5d6ed64426fb | 27 | * PCA9547 is an I2C multiplexer which enables to select 1:8 multiplexed I2C bus. |
| TakumiToda | 0:5d6ed64426fb | 28 | * The multiplexer is useful for deviding I2C bus to avoiding slave address conflict and separating capacitive loads. |
| TakumiToda | 0:5d6ed64426fb | 29 | * |
| TakumiToda | 0:5d6ed64426fb | 30 | * For more informatioj about PCA9547: |
| TakumiToda | 0:5d6ed64426fb | 31 | * http://www.nxp.com/documents/data_sheet/PCA9547.pdf |
| TakumiToda | 0:5d6ed64426fb | 32 | * |
| TakumiToda | 0:5d6ed64426fb | 33 | * Example: |
| TakumiToda | 0:5d6ed64426fb | 34 | * @code |
| TakumiToda | 0:5d6ed64426fb | 35 | * #include "mbed.h" |
| TakumiToda | 0:5d6ed64426fb | 36 | * #include "LM75B.h" |
| TakumiToda | 0:5d6ed64426fb | 37 | * #include "PCA9547.h" |
| TakumiToda | 0:5d6ed64426fb | 38 | * |
| TakumiToda | 0:5d6ed64426fb | 39 | * PCA9547 mux( p28, p27, 0xE0 ); |
| TakumiToda | 0:5d6ed64426fb | 40 | * |
| TakumiToda | 0:5d6ed64426fb | 41 | * int main() |
| TakumiToda | 0:5d6ed64426fb | 42 | * { |
| TakumiToda | 0:5d6ed64426fb | 43 | * mux.select( 0 ); |
| TakumiToda | 0:5d6ed64426fb | 44 | * |
| TakumiToda | 0:5d6ed64426fb | 45 | * LM75B tmp0( p28, p27 ); // making instance after a branch of I2C bus (which is connecting the LM75B) enabled |
| TakumiToda | 0:5d6ed64426fb | 46 | * |
| TakumiToda | 0:5d6ed64426fb | 47 | * while(1) { |
| TakumiToda | 0:5d6ed64426fb | 48 | * printf( "%.3f\r\n", tmp0.read() ); |
| TakumiToda | 0:5d6ed64426fb | 49 | * wait( 1.0 ); |
| TakumiToda | 0:5d6ed64426fb | 50 | * } |
| TakumiToda | 0:5d6ed64426fb | 51 | * } |
| TakumiToda | 0:5d6ed64426fb | 52 | * @endcode |
| TakumiToda | 0:5d6ed64426fb | 53 | */ |
| TakumiToda | 0:5d6ed64426fb | 54 | |
| TakumiToda | 0:5d6ed64426fb | 55 | class PCA9547 |
| TakumiToda | 0:5d6ed64426fb | 56 | { |
| TakumiToda | 0:5d6ed64426fb | 57 | public: |
| TakumiToda | 0:5d6ed64426fb | 58 | |
| TakumiToda | 0:5d6ed64426fb | 59 | /** Create a PCA9547 instance connected to specified I2C pins with specified address |
| TakumiToda | 0:5d6ed64426fb | 60 | * |
| TakumiToda | 0:5d6ed64426fb | 61 | * @param sda I2C-bus SDA pin |
| TakumiToda | 0:5d6ed64426fb | 62 | * @param scl I2C-bus SCL pin |
| TakumiToda | 0:5d6ed64426fb | 63 | * @param i2c_address I2C-bus address (default: 0xE0) |
| TakumiToda | 0:5d6ed64426fb | 64 | */ |
| TakumiToda | 0:5d6ed64426fb | 65 | PCA9547( PinName sda, PinName scl, char i2c_address = 0xE0 ); |
| TakumiToda | 0:5d6ed64426fb | 66 | |
| TakumiToda | 0:5d6ed64426fb | 67 | /** Create a PCA9546A instance connected to specified I2C pins with specified address |
| TakumiToda | 0:5d6ed64426fb | 68 | * |
| TakumiToda | 0:5d6ed64426fb | 69 | * @param &i2c_ I2C object (instance) |
| TakumiToda | 0:5d6ed64426fb | 70 | * @param i2c_address I2C-bus address (default: 0xE0) |
| TakumiToda | 0:5d6ed64426fb | 71 | */ |
| TakumiToda | 0:5d6ed64426fb | 72 | PCA9547( I2C &i2c_, char i2c_address = 0xE0 ); |
| TakumiToda | 0:5d6ed64426fb | 73 | |
| TakumiToda | 0:5d6ed64426fb | 74 | /** Destructor of PCA9547 |
| TakumiToda | 0:5d6ed64426fb | 75 | */ |
| TakumiToda | 0:5d6ed64426fb | 76 | ~PCA9547(); |
| TakumiToda | 0:5d6ed64426fb | 77 | |
| TakumiToda | 0:5d6ed64426fb | 78 | /** Channel select |
| TakumiToda | 0:5d6ed64426fb | 79 | * |
| TakumiToda | 0:5d6ed64426fb | 80 | * Enable and select a channel |
| TakumiToda | 0:5d6ed64426fb | 81 | * |
| TakumiToda | 0:5d6ed64426fb | 82 | * @param channel channel number |
| TakumiToda | 0:5d6ed64426fb | 83 | */ |
| TakumiToda | 0:5d6ed64426fb | 84 | void select( char channel ); |
| TakumiToda | 0:5d6ed64426fb | 85 | |
| TakumiToda | 0:5d6ed64426fb | 86 | /** Disabling all channels |
| TakumiToda | 0:5d6ed64426fb | 87 | * |
| TakumiToda | 0:5d6ed64426fb | 88 | * Disable all channels |
| TakumiToda | 0:5d6ed64426fb | 89 | */ |
| TakumiToda | 0:5d6ed64426fb | 90 | void disable( void ); |
| TakumiToda | 0:5d6ed64426fb | 91 | |
| TakumiToda | 0:5d6ed64426fb | 92 | private: |
| TakumiToda | 0:5d6ed64426fb | 93 | I2C *i2c_p; |
| TakumiToda | 0:5d6ed64426fb | 94 | I2C &i2c; |
| TakumiToda | 0:5d6ed64426fb | 95 | char i2c_addr; |
| TakumiToda | 0:5d6ed64426fb | 96 | }; |
| TakumiToda | 0:5d6ed64426fb | 97 | |
| TakumiToda | 0:5d6ed64426fb | 98 | #endif // MBED_PCA9547_H |