TCA9548A 8 channel I2C switch with reset
Dependents: 4012Code PWM SBra_Programme_Mbed
tca9548a.h
00001 /** TCA9548A library 00002 * 00003 * @author Akash Vibhute 00004 * @author < akash . roboticist [at] gmail . com > 00005 * @version 0.1 00006 * @date May/24/2016 00007 * 00008 * @section LICENSE 00009 * 00010 * Copyright (c) 2015 Akash Vibhute 00011 * 00012 * Licensed under the Apache License, Version 2.0 (the "License"); 00013 * you may not use this file except in compliance with the License. 00014 * You may obtain a copy of the License at 00015 * http://www.apache.org/licenses/LICENSE-2.0 00016 * 00017 * Unless required by applicable law or agreed to in writing, software 00018 * distributed under the License is distributed on an "AS IS" BASIS, 00019 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 00020 * See the License for the specific language governing permissions and 00021 * limitations under the License. 00022 * 00023 * The above copyright notice and this permission notice shall be included in 00024 * all copies or substantial portions of the Software. 00025 * 00026 * 00027 */ 00028 00029 #ifndef TCA9548A_H 00030 #define TCA9548A_H 00031 00032 #include "mbed.h" 00033 00034 /** TCA9548A class 00035 * 00036 * @section DESCRIPTION 00037 * TCA9548A: Low-Voltage 8-Channel I2C Switch With Reset 00038 * The TCA9548A device has eight bidirectional translating switches that can be 00039 * controlled through the I2C bus. The SCL/SDA upstream pair fans out to eight 00040 * downstream pairs, or channels. Any individual SCn/SDn channel or combination 00041 * of channels can be selected, determined by the contents of the programmable 00042 * control register. 00043 * 00044 * The TCA9548A has a user 8 selectable address in the range 0x70 thru 0x77 (7-bit), 00045 * based on the configuration of Addr pins (A0, A1, A2). Default address is 0x70 for 00046 * A0:A2 pull down. 00047 * 00048 * Datasheet for TCA9548A can be found at: 00049 * http://www.ti.com/lit/ds/symlink/tca9548a.pdf 00050 * 00051 * Example: 00052 * @code 00053 * #include "mbed.h" 00054 * #include "LM75B.h" 00055 * #include "TCA9548A.h" 00056 * 00057 * TCA9548A i2c_sw(I2C_SDA, I2C_SCL); //default address 0x70 applied 00058 * 00059 * int main() 00060 * { 00061 * // By default TCA9548A performs a power on reset and all downstream ports are deselected 00062 * 00063 * i2c_sw.select(0); // select the channel 0 00064 * LM75B tmp0(I2C_SDA, I2C_SCL); // making instance after a branch of I2C bus (which is connecting the LM75B) enabled 00065 * 00066 * i2c_sw.select(1); // select the channel 1 00067 * LM75B tmp1(I2C_SDA, I2C_SCL); // making instance after a branch of I2C bus (which is connecting the LM75B) enabled 00068 * 00069 * while(1) { 00070 * 00071 * i2c_sw.select(0); // select the channel 0 00072 * printf( "%.3f\r\n", tmp0.read() ); 00073 * 00074 * i2c_sw.select(1); // select the channel 1 00075 * printf( "%.3f\r\n", tmp1.read() ); 00076 * 00077 * wait( 1.0 ); 00078 * } 00079 * } 00080 * @endcode 00081 */ 00082 00083 class TCA9548A 00084 { 00085 public: 00086 00087 /** Create a TCA9546A instance connected to specified I2C pins with specified address 00088 * 00089 * @param sda I2C-bus SDA pin 00090 * @param scl I2C-bus SCL pin 00091 * @param i2c_address I2C-bus address (default: 0x70) 00092 * @param reset TCA9546A reset pin (default: NC for simple pullup connected) 00093 * @param hz I2C bus frequency (default: 400kHz) 00094 */ 00095 TCA9548A( PinName sda, PinName scl, uint8_t i2c_address = 0x70, PinName resetPin = NC, uint32_t hz = 400000 ); 00096 00097 /** Selecting a channel 00098 * 00099 * Switch to commended downstream I2C channel 00100 * 00101 * @param channel channel number 00102 */ 00103 void select(uint8_t channel); 00104 00105 /** Reset TCA9546A 00106 * 00107 * Reset switch 00108 */ 00109 void reset(); 00110 00111 00112 private: 00113 I2C i2c_; 00114 DigitalOut reset_pin; 00115 uint8_t i2c_addr; 00116 00117 }; 00118 00119 #endif // TCA9548A_H
Generated on Fri Jul 15 2022 12:20:07 by
