I2C problem with ESP32 & LSM9DS1 9DoF IMU

Hi,

So I’m following the SparkFun LSM9DS1 hookup guide (https://learn.sparkfun.com/tutorials/ls … guide/all ) with an ESP32.

It works perfectly when I leave the standard I2C address bits alone (i.e. pulling the SDOs HIGH); I’m able to read the data without glitches.

The problem is when I now ground the SDOs to change the LSb of the accel/gyro and mags. Even after changing the address in the code, the program isn’t able to detect it, but a quick I2C scanner program tells me the device is responding and has the correct I2C address! Is there something on the software side I’m missing?

Any advice would be appreciated!

How are you setting them low? Are you just cutting the traces or cutting the traces and pulling them low with a resistor?

TS-Brandon:
How are you setting them low? Are you just cutting the traces or cutting the traces and pulling them low with a resistor?

Hey Brandon, I’m actually using a breakout of the IMU and not a module; to ground the SDO pins, I’m only using jumper wires to GND (in the same way as the standard 0x1E/0x6B addresses, where I instead hooked them to 3V3 directly)

Can you confirm if this is the product you’re using? https://www.sparkfun.com/products/13284

If not, can you provide me with a link to the product you are using?

Not that one but very similar: https://uk.banggood.com/CJMCU-9DOF-LSM9 … 70760.html - has the pins needed for I2C broken out as required (and I got it working with the SparkFun library for the first case, so its definitely a working sensor)

Unfortunately, I’m not sure what may be interfering with those pins. I can’t say for certain, but those pins might be pulled up by hardware from what I can see in the picture.