A TCA9548A does not assign new addresses to identical I²C sensors. It connects selected downstream branches to the upstream SDA and SCL pair. The decisive operation is one control byte: bit 0 selects channel 0, bit 7 selects channel 7, and reset clears every bit.
Featured image: Adafruit.
The TI datasheet SCPS207H, revised September 2024, describes eight bidirectional translating switches behind a writable 8-bit control register. Each high bit connects its matching SCn/SDn branch. The sensor address on that branch does not change.
Write a bitmask, not a channel number
To select one channel, write 1 << channel. That produces 0x01 for channel 0, 0x02 for channel 1, 0x04 for channel 2 and 0x80 for channel 7. Writing the number 3 does not select channel 3; 0x03 sets bits 0 and 1, connecting channels 0 and 1 together.
That distinction explains a common failure. Two sensors with address 0x77 work when their branches are selected individually, then collide when software writes a multi-bit mask and connects both at once. A multiplexer isolates address conflicts only while the conflicting branches remain separated.

Select before every transaction path that can change the branch
The Adafruit Arduino example places four BME280 sensors at address 0x77 on separate channels. Its helper writes 1 << channel to the switch at 0x70, and the code calls that helper immediately before initializing or reading each sensor.
In a single-threaded loop, the selected channel remains active until another control byte or reset changes it. In a larger program, a display update, sensor task or library call can select a different branch between operations. Treat channel selection as part of the transaction context instead of assuming that initialization permanently binds a device object to one branch.

Reset gives a known all-off state
Power-on reset initializes the control register to 0x00, so all eight channels are deselected. The active-low RESET input does the same without removing power: TI specifies a minimum low pulse of 6 ns, after which the state machine and register return to their defaults.
If the switch acknowledges at its own address but no downstream sensor appears, read back the control register. A value of 0x00 means the switch is reachable while every branch is disconnected. A value with several bits set explains why previously isolated same-address devices may be fighting on the shared upstream bus.
Address pins expand switches, not sensor identities
With A2:A0 low, the TCA9548A address is 0x70. The three address pins permit eight switch addresses, allowing multiple multiplexers on one upstream bus. Those pins choose the multiplexer’s address; they do not alter any sensor address behind it.
The device also permits different pull-up voltages on its branches for voltage-level translation, subject to the datasheet’s supply and switch-voltage limits. That capability does not remove normal I²C constraints. Each active branch adds wiring, pull-ups and capacitance, and selecting several branches joins those electrical loads.
When debugging, record the multiplexer address, control byte and expected downstream sensor address together. An I²C scan that omits the selected mask cannot show whether a missing device is disconnected, conflicting with another branch or absent electrically.

