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 #include "PCA9547.h"
TakumiToda 0:5d6ed64426fb 19
TakumiToda 0:5d6ed64426fb 20 PCA9547::PCA9547( PinName sda, PinName scl, char i2c_address )
TakumiToda 0:5d6ed64426fb 21 : i2c_p( new I2C( sda, scl ) ), i2c( *i2c_p ), i2c_addr( i2c_address )
TakumiToda 0:5d6ed64426fb 22 {
TakumiToda 0:5d6ed64426fb 23 // do nothing.
TakumiToda 0:5d6ed64426fb 24 // leave it in default state.
TakumiToda 0:5d6ed64426fb 25 }
TakumiToda 0:5d6ed64426fb 26
TakumiToda 0:5d6ed64426fb 27 PCA9547::PCA9547( I2C &i2c_, char i2c_address )
TakumiToda 0:5d6ed64426fb 28 : i2c_p( NULL ), i2c( i2c_ ), i2c_addr( i2c_address )
TakumiToda 0:5d6ed64426fb 29 {
TakumiToda 0:5d6ed64426fb 30 // do nothing.
TakumiToda 0:5d6ed64426fb 31 // leave it in default state.
TakumiToda 0:5d6ed64426fb 32 }
TakumiToda 0:5d6ed64426fb 33
TakumiToda 0:5d6ed64426fb 34 PCA9547::~PCA9547()
TakumiToda 0:5d6ed64426fb 35 {
TakumiToda 0:5d6ed64426fb 36 if ( NULL != i2c_p )
TakumiToda 0:5d6ed64426fb 37 delete i2c_p;
TakumiToda 0:5d6ed64426fb 38 }
TakumiToda 0:5d6ed64426fb 39
TakumiToda 0:5d6ed64426fb 40 void PCA9547::select( char channel )
TakumiToda 0:5d6ed64426fb 41 {
TakumiToda 0:5d6ed64426fb 42 char data = 0x08 | channel;
TakumiToda 0:5d6ed64426fb 43
TakumiToda 0:5d6ed64426fb 44 i2c.write( i2c_addr, &data, 1 );
TakumiToda 0:5d6ed64426fb 45 }
TakumiToda 0:5d6ed64426fb 46
TakumiToda 0:5d6ed64426fb 47 void PCA9547::disable( void )
TakumiToda 0:5d6ed64426fb 48 {
TakumiToda 0:5d6ed64426fb 49 char data = 0x00;
TakumiToda 0:5d6ed64426fb 50
TakumiToda 0:5d6ed64426fb 51 i2c.write( i2c_addr, &data, 1 );
TakumiToda 0:5d6ed64426fb 52 }