Just wanted to chime back in with my solution. I scoped my comm lines and saw that the delay function that I was providing the drivers was not accurate. Therefore the timing between some calls was not according to the datasheet. When I corrected the delay function, the communication problems with the BMM resolved.
Hello,
I have a similar problem but a good delay function doesn't seem to fix it. I'm never able to get an acknowledge bit when calling slave address 0x10.
Does anyone else know what I can try?
The first I²C write in the included screenshot wasn't shown correct, It was 0x7E - 0x19, not 0x7F - 0x0C.
It's working now. I tried to access the BMM150 directly instead of via the bmi160_aux_write() in the wrapper function.