Takumi Toda / PCA9547
Committer:
TakumiToda
Date:
Fri Jan 11 08:00:39 2019 +0000
Revision:
0:5d6ed64426fb
PCA9547

Who changed what in which revision?

UserRevisionLine numberNew 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