PCA9547: an I2C bus multiplexer control library. PCA9547 is an I2C multiplexer which enables to select 1:8 multiplexed I2C bus. The multiplexer is useful for deviding I2C bus to avoiding slave address conflict and separating capacitive loads. For more information about PCA9547: http://www.nxp.com/documents/data_sheet/PCA9547.pdf
Dependents: pca9547_Hello m3Dpi
Information
For more information, please visit component page.
Revision 5:f4f72501148a, committed 2015-02-23
- Comitter:
- okano
- Date:
- Mon Feb 23 06:25:45 2015 +0000
- Parent:
- 4:3c0af4c37587
- Child:
- 6:33ef755248e0
- Commit message:
- added: a constructor by I2C instance; Code sample update
Changed in this revision
PCA9547.cpp | Show annotated file Show diff for this revision Revisions of this file |
PCA9547.h | Show annotated file Show diff for this revision Revisions of this file |
--- a/PCA9547.cpp Tue Jul 01 00:37:01 2014 +0000 +++ b/PCA9547.cpp Mon Feb 23 06:25:45 2015 +0000 @@ -17,7 +17,15 @@ #include "PCA9547.h" -PCA9547::PCA9547( PinName sda, PinName scl, char i2c_address ) : i2c( sda, scl ), _i2c_addr( i2c_address ) +PCA9547::PCA9547( PinName sda, PinName scl, char i2c_address ) + : i2c_p( new I2C( sda, scl ) ), i2c( *i2c_p ), i2c_addr( i2c_address ) +{ + // do nothing. + // leave it in default state. +} + +PCA9547::PCA9547( I2C &i2c_, char i2c_address ) + : i2c_p( NULL ), i2c( i2c_ ), i2c_addr( i2c_address ) { // do nothing. // leave it in default state. @@ -25,19 +33,20 @@ PCA9547::~PCA9547() { - + if ( NULL != i2c_p ) + delete i2c_p; } void PCA9547::select( char channel ) { char data = 0x08 | channel; - i2c.write( _i2c_addr, &data, 1 ); + i2c.write( i2c_addr, &data, 1 ); } void PCA9547::disable( void ) { char data = 0x00; - i2c.write( _i2c_addr, &data, 1 ); + i2c.write( i2c_addr, &data, 1 ); }
--- a/PCA9547.h Tue Jul 01 00:37:01 2014 +0000 +++ b/PCA9547.h Mon Feb 23 06:25:45 2015 +0000 @@ -36,10 +36,10 @@ * #include "LM75B.h" * #include "PCA9547.h" * + * PCA9547 mux( p28, p27, 0xE0 ); + * * int main() * { - * PCA9547 mux( p28, p27, 0xE0 ); - * * mux.select( 0 ); * * LM75B tmp0( p28, p27 ); // making instance after a branch of I2C bus (which is connecting the LM75B) enabled @@ -64,6 +64,13 @@ */ PCA9547( PinName sda, PinName scl, char i2c_address = 0xE0 ); + /** Create a PCA9546A instance connected to specified I2C pins with specified address + * + * @param &i2c_ I2C object (instance) + * @param i2c_address I2C-bus address (default: 0xE0) + */ + PCA9547( I2C &i2c_, char i2c_address = 0xE0 ); + /** Destructor of PCA9547 */ ~PCA9547(); @@ -83,8 +90,9 @@ void disable( void ); private: - I2C i2c; - char _i2c_addr; + I2C *i2c_p; + I2C &i2c; + char i2c_addr; }; #endif // MBED_PCA9547_H \ No newline at end of file