Adaptation for PCA9548 Nxp I2C switch

Fork of PCA9547 by Tedd OKANO

Revision:
9:2fcf9622c207
Parent:
6:33ef755248e0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/PCA9548A.h	Wed Mar 22 09:34:59 2017 +0000
@@ -0,0 +1,98 @@
+/**
+ *  PCA9548A library
+ *
+ *  @author  Tedd OKANO
+ *  @version 0.2
+ *  @date    Feb-2015
+ *
+ *  PCA9548A: an I2C bus multiplexer control library
+ *
+ *  PCA9548A 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 PCA9548A:
+ *    http://www.nxp.com/documents/data_sheet/PCA9548A.pdf
+ *
+ */
+
+#ifndef MBED_PCA9547_H
+#define MBED_PCA9547_H
+
+#include "mbed.h"
+
+/** PCA9548A class
+ *
+ *  PCA9548A: an I2C bus multiplexer control library
+ *
+ *  PCA9548A 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 PCA9548A:
+ *    http://www.nxp.com/documents/data_sheet/PCA9548A.pdf
+ *
+ *  Example:
+ *  @code
+ *  #include "mbed.h"
+ *  #include "LM75B.h"
+ *  #include "PCA9548A.h"
+ *
+ *  PCA9548A 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 PCA9548A
+{
+public:
+
+    /** Create a PCA9548A 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)
+     */
+    PCA9548A( 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)
+     */
+    PCA9548A( I2C &i2c_, char i2c_address = 0xE0 );
+
+    /** Destructor of PCA9548A
+     */
+    ~PCA9548A();
+
+    /** Channel select
+     *
+     *  Enable and select a channel
+     *
+     * @param channel channel number
+     */
+    void select( char channel );
+
+    /** Disabling all channels
+     *
+     *  Disable all channels
+     */
+    void disable( void );
+
+private:
+    I2C     *i2c_p;
+    I2C     &i2c;
+    char    i2c_addr;
+};
+
+#endif  //  MBED_PCA9547_H
\ No newline at end of file