Nano 33 BLE pull-up resistors on i2c

Hi, i’m working with a Nano 33 BLE (not the sense and not rev2) from Arduino. I am trying to connect my tca9548a to this board via the i2c pins but the Nano doesnt detect the tca9548a.
I have checked the wiring lots of times and that is really sound ( soldered too). The nano is powered through the usb port and the tca9548a on a 3.3v power source. The grounds of both the Nano as the tca 9548a are connected.

I have run the i2c scanner, the Wire version. When i search Wire1 it detects both internal i2c devices that are present on the Nano 33BLE. So the sketch works. When i look on Wire() it says No devices found.
In the manual of the nano it says the Internal i2c has pull-up resistors but i cant find them on the sda and scl pins that are connected to Wire(). I conclude i will have to use external pull-up resistors. But i have no clue whatsover what kind of resistor i should use?

Anyone?

Kind regards,

Bart

Do you have a module with the TCA9548A chip on it ?
The module from Adafruit has pullup resistors on the primairy I2C bus, but not on the 8 (sub) I2C buses.
You can also measure the voltage of SDA and SCL, it should be near 3.3V. That is after the I2C bus has been initialized with Wire.begin() and with no traffic on the bus.

Did the I2C scan find the tca9548a?

Oh sorry, no and that would be my problem i guessed. My guess is that the i2c on Wire() isnt detecting anything because of the missing pull- ups?

I have the adafruit module with the tca8548a chip on it indeed. But i havent attached any sensors etc to the adafruit board yet. Just the board and nothing more.
On the adafruit i attached a0, a1 and a2 to ground (to give it its i2c address).

The voltage on the SDA switches from 3.3v to 1.6v and back. The voltage on SCL is a constant 21.5mv.

I generally use 4.7K for 5V and 3.3K for 3V3 pull ups. Hold the reset button and measure the voltage on the SCL and SDA, they should show the pull up voltage.

When i press and hold the reset on my nano, the SDA keeps a steady 3.3v and the SCL is steady at 15.6mv. This is while the nano and the adafruit are connected by soldered wires

I have never used pullups for a scan.

They should both be at 3V3 as the driver is open collector/open drain. Try adding a pull up resistor in the 3.3K range. It appears you may have a bad module. You need pull up resistors on the expansion busses as well. You can separate the modules and measure each one after power up and see what you get. If you do not get vcc (3V3) there is a pull up missing or a bad part. Without your schematic I do not know where these resistors are. Each bus must have its own set of pull up resistors. This is all a SWAG as your schematic is missing.

Hi sonofcy, did you never use external pull-up resistors whilst using the nano 33 BLE? I ask this because this board misses pull-up resistors and most of the othe arduino boards have their own on board.

I will try this tomorrow and post the outcome.

The concept of INPUT_PULLUP does not apply to I2C. If needed, you have to add them, but I have never found an I2C device that didn't already have them so no need to add to the board itself. I think the dedicated SDA/SCL pins in fact do NOT have a builtin pullup so if you want to repurpose those pins, you can't use INPUT_PULLUP, you have to add a resistor to the pad beside A4 and A5 that is provided for that purpose.

Sounds good! Can you draw a preliminary schematic which shows whee the pull up resistors are and hopefully there value.

this is what i intend to do. R1 and R2 as well will be a combination of three resistors 2.2k+1k+100ohm=3.3K for each ( i don't have a 3.3k resistor).

I will post the outcome.

I checked my resistors and they measure 3.23k ohm each. I put the power on and...

Whilst scanning for i2c devices the SDA voltage drops from 3.3v to 1.7v (without the pull-up it dropped to 1.6v). The SCL is a steady 48.2mV.

Still No devices found.

Something is broken.
SDA and SCL behave almost the same in a normal situation.
You also need to power that module with 5V as I wrote before.[EDIT] Oops, that was for another topic.

Can you measure the SCL on the TCA9548A chip ?
Disconnect the board from the module, but connect the pullup resistors to the Arduino board, measure SDA and SCL.
Then do the same for the board. Disconnect it from the board, but connect the pullup resistors to the module and measure SDA and SCL.
Then we should know where the short circuit is.
I think you need a new multiplexer module.

Can you show a photo of your project ? and make a photo of the back side of the module ? Perhaps there is bad soldering, or a tiny copper trace on the pcb.

Someone said,
I think the dedicated SDA/SCL pins in fact do NOT have a builtin pullup
However the Nano33 BLE does have built-in, actual resistors on A4 and A5. (In fact, they 'advise' the user to not use them as 'analog inputs'.)

The problem is in the details... there are pull-ups on the SDA1 and SCL1 (mind the "1") . These are the SDA en SCL for the two internal I2C gadgets. When i run the I2C scanner these two show up when i scan Wire1().

The SDA and SCL for external use are on SDA and SCL (pins A5 and A6). These pins do not have the pull-up resistors. To scan the connected I2C items on this SDA and SCL you have to scan on Wire() not Wire1().

Thank you for this clear mind. I have disconnected the Nano from the TCA9548A and measured the voltage on both SDA and SCL pin; both are 3.3V.
I also measured the voltage on the TCA9548A and there the SDA has 3.3V and the SCL a few mV. As my TCA9548A is completely soldered on my pcb, i just got two new TCA9548A. I will use one of these to tinker a bit on your suggestions (eg the impact of 5V on this board). I will report when i'm done.

Thanks!

What's this "external" I2C?
Why not use what's there already?