0
\$\begingroup\$

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. Schematic

I have two questions:

  1. 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?

  2. 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:

Channel Selection

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.

\$\endgroup\$
1
\$\begingroup\$

Use of pull-ups depend on bus voltages on each side of mux. Do you know if batteries have pull-ups and to which voltage, or if it needs external pull-ups, to which voltage? Regardless of voltages, when either side pulls the bus low, all pull-up resistors will provide current and chip must handle that. Regarding the mux, you set mux address and then you can select mux channels via I2C. After selecting one of the battery channels you then talk to the battery normally.

\$\endgroup\$
  • \$\begingroup\$ I will use 4.9 V for my MCU. Without mux chip, I could communicate with a battery and I used 20 k pull ups (again 4.9 V source for MCU.) Now I need to add MUX chip, so in that case should I again use 20 k pullups between mux and batteries and 2 k between mux and mcu? \$\endgroup\$ – Günkut Ağabeyoğlu Apr 11 at 5:29
0
\$\begingroup\$

The TCA9546A address bits set the address of the TCA9546A. You need to send the TCA9546A the port(s) with which you want to communicate. After that, the TCA9546A is transparent.

I would use a 4.7k ohm pull up resistors everywhere to start, but the best value is dependent on speed, distance, and other factors.

You posted the TCA9546A address above. It's 0xE0 for a write.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.