I need to communicate with 3 batteries through SMBus. I managed to communicate each of them separately one by one. However, I need to communicate with 3 of them, for that I decided to use multiplexer. (These are same kind of batteries so their addresses are same.) The multiplexer I chose is TCA9546A. TCA9546A
This is the schematic of it, from its datasheet.
I have two questions:
First one is related to pull up resistor values. I used 20 k resistors as pull ups while I was testing SMBus connection one by one and these 20 k resistors worked. But I know 20 k is too much for I2C so I am planning to use 2 k for I2C side and 20 K for SMBus side. I am planning to use 2 k pull up resistors between master MCU and multiplexer and 20 k resistors betweens 3 slave batteries and multiplexer. Would it work or do I need to use 20 k resistors for everywhere or any other option?
My second question is related to channel selection. I have read the datasheet but I could not get an answer. I thought I would use A0, A1 and A2 pins to select channel. (i.e. when A0=1, A1=0, A2=0, choose first slave etc.) But in the schematic they grounded these pins... It seems like I need to send I2C data in order to choose channel. In datasheet there is this information:
So it confused me a lot. How can I choose related channel through it? If I need to choose channel one for example I want to get SOC information from the first battery, in normal case I send address of the smart battery (0x16) then I send command code (0x0D) then I wait for reception. But with this multiplexer how will I do that? Do I use 0x01 as the address register? Then how will it understand the slave address (0x16) by itself. Can someone please clarify it.. Thanks beforehand.