I'm using an I2C bus to connect a BNO055 and BMM150 to a NRF52832 SoC. I'm using the bosch BMM shuttle board, BNO dev board from adafruit, and a dev board for the MCU so everything is connected on a breadboard allowing me to add and remove components.
When the BMM150 is on the I2C bus it holds SCL low and blocks the bus.
I'm supplying 3V to both VDD and VDDIO. PS is connected directly to the 3V as reccommended by datasheet. CSB + SDO grounded for address 0x10. I've tried adding 4.7K pullup to 3V with no effect. This setup works fine with the BNO055.
Is my setup incorrect or is the BMM broken somehow?
Do you mean SCL always was kept low state?
According to your description, recommend you to check your hardware, confirm I2C sda/scl whether to be able to pull high or low without connection BMM150, check VDD/VDDIO of BMM150 whether to be stable.
If you doubt bmm150 is broken, recommend you to use another BMM150 to verify.