GY-63_MS5611/libraries/TCA9548/README.md

88 lines
3.4 KiB
Markdown
Raw Normal View History

2021-05-26 06:09:27 -04:00
[![Arduino CI](https://github.com/RobTillaart/TCA9548/workflows/Arduino%20CI/badge.svg)](https://github.com/marketplace/actions/arduino_ci)
2021-11-19 07:21:54 -05:00
[![Arduino-lint](https://github.com/RobTillaart/TCA9548/actions/workflows/arduino-lint.yml/badge.svg)](https://github.com/RobTillaart/TCA9548/actions/workflows/arduino-lint.yml)
[![JSON check](https://github.com/RobTillaart/TCA9548/actions/workflows/jsoncheck.yml/badge.svg)](https://github.com/RobTillaart/TCA9548/actions/workflows/jsoncheck.yml)
2021-05-26 06:09:27 -04:00
[![License: MIT](https://img.shields.io/badge/license-MIT-green.svg)](https://github.com/RobTillaart/TCA9548/blob/master/LICENSE)
[![GitHub release](https://img.shields.io/github/release/RobTillaart/TCA9548.svg?maxAge=3600)](https://github.com/RobTillaart/TCA9548/releases)
2021-11-19 07:21:54 -05:00
2021-05-26 06:09:27 -04:00
# TCA9548
Arduino Library for TCA9548 I2C multiplexer.
2021-11-19 07:21:54 -05:00
2021-05-26 06:09:27 -04:00
## Description
Library for the TCA9548 and TCA9548a I2C multiplexer.
The library allows you to enable 0 to 7 I2C channels (ports) uniquely or simultaneously.
2021-11-19 07:21:54 -05:00
This is especially useful if you have multiple devices/sensors that have a fixed address,
or you have address conflicts between I2C devices
2021-05-26 06:09:27 -04:00
**Warning**
The library is not tested extensively.
I2C address is 0x70 .. 0x77.
2021-08-22 04:49:53 -04:00
The library caches the channels enabled, and if a channel is enabled,
2021-05-26 06:09:27 -04:00
it will not be enabled again (low level) to optimize performance.
2021-11-19 07:21:54 -05:00
2021-05-26 06:09:27 -04:00
## Interface
2021-11-19 07:21:54 -05:00
2021-05-26 06:09:27 -04:00
### Constructor
2021-11-19 07:21:54 -05:00
- **TCA9548(const uint8_t deviceAddress, TwoWire \*wire = &Wire)** Constructor, address = 0x70 .. 0x77, wire = Wire or WireN.
- **bool begin(uint8_t sda, uint8_t scl, uint8_t mask = 0x00)** Set I2C pins for ESP32, set mask of channels to be enabled.
- **bool begin(uint8_t mask = 0x00)** set mask of channels to be enabled.
- **bool isConnected()** returns true if address of the multiplexer is found on I2C bus.
2021-05-26 06:09:27 -04:00
### Find device
2021-11-19 07:21:54 -05:00
- **bool isConnected(uint8_t address)** returns true if arbitrary address is found on I2C bus.
2021-08-22 04:49:53 -04:00
This can be used to verify a certain device is available (or not) on an enabled channel.
2021-05-26 06:09:27 -04:00
### Channel functions
- **void enableChannel(uint8_t channel)** enables channel 0 .. 7. Multiple channels can be enabled in parallel.
- **void disableChannel(uint8_t channel)** disables channel 0 .. 7. Will not disable other channels.
2021-11-19 07:21:54 -05:00
- **void selectChannel(uint8_t channel)** enables a single channel 0 .. 7 uniquely.
All other channels will be disabled, although these can be set again with enableChannel.
2021-05-26 06:09:27 -04:00
- **bool isEnabled(uint8_t channel)** returns true is a channel is enabled.
2021-11-19 07:21:54 -05:00
- **void setChannelMask(uint8_t mask)** enables 0 or more channels simultaneously with a bit mask.
- **uint8_t getChannelMask()** reads back the bit mask of the channels enabled.
2021-05-26 06:09:27 -04:00
- **void setResetPin(uint8_t resetPin)** sets the pin to reset the chip. (Not tested)
- **void reset()** trigger the reset pin.
2021-11-19 07:21:54 -05:00
- **int getError()** returns the last I2C error.
### Forced IO
When forced IO is set all writes and read - **getChannelMask()** - will go to the device.
If the flag is set to false it will cache the value of the channels enabled.
This will result in more responsive / faster calls.
Note that writes are only optimized if the channels are already set.
- **void setForced(bool forced = false)** set forced write, slower but more robust. Default off.
- **bool getForced()** returns set flag.
2021-05-26 06:09:27 -04:00
## Operation
See example
## Future
2021-11-19 07:21:54 -05:00
- improve error handling + documentation.
- add examples
2021-05-26 06:09:27 -04:00
- test test and test
2021-11-19 07:21:54 -05:00
- improve documentation
2021-05-26 06:09:27 -04:00
- write unit test
- set an "always enabled" mask (have to investigate the consequences)