* PCA9547 library * +++++ Based on; https://developer.mbed.org/users/okano/code/PCA9547/ +++++ * * 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
Diff: PCA9547.h
- Revision:
- 0:2d777d5d7e6b
- Child:
- 1:c388983364cc
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/PCA9547.h Fri Oct 02 05:37:18 2015 +0000 @@ -0,0 +1,107 @@ +/** + * PCA9547 library + * +++++ Based on; https://developer.mbed.org/users/okano/code/PCA9547/ +++++ + * + * @author Tedd OKANO + * @version 0.2 + * @date Feb-2015 + * + * 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 + * + */ +#pragma once + +// if You Need Reset, +//#define PCA9547_RESET p26 + +#include "mbed.h" + +/** PCA9547 class + * + * 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 informatioj about PCA9547: + * http://www.nxp.com/documents/data_sheet/PCA9547.pdf + * + * Example: + * @code + * #include "mbed.h" + * #include "LM75B.h" + * #include "PCA9547.h" + * + * PCA9547 mux( p28, p27, 0xE0 ); + * + * int main() + * { + * mux.select( 0 ); + * + * LM75B tmp0( p28, p27 ); // making instance after a branch of I2C bus (which is connecting the LM75B) enabled + * + * while(1) { + * printf( "%.3f\r\n", tmp0.read() ); + * wait( 1.0 ); + * } + * } + * @endcode + */ + +class PCA9547 +{ +public: + + /** Create a PCA9547 instance connected to specified I2C pins with specified address + * + * @param sda I2C-bus SDA pin + * @param scl I2C-bus SCL pin + * @param i2c_address I2C-bus address (default: 0xE0) + */ + 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(); + + /** Channel select + * + * Enable and select a channel + * + * @param channel channel number (integer). Not ASCII. + */ + bool select(int ch); +// void select( char channel ); + + + /** Disabling all channels + * + * Disable all channels + */ + void disable( void ); + +private: + I2C *i2c_p; + I2C &i2c; + char i2c_addr; +#ifdef PCA9547_RESET + DigitalOut resetPin(PCA9547_RESET); +#endif + + void init(); +}; + +// EOF \ No newline at end of file