I am using an UDOO x86 for a project and wish to connect an IMU to it using the Braswell I2C pins; however, when I use i2cdetect, it does not show up. My configuration is as follows: Board: UDOO x86, Ubuntu 16.04 IMU: GY-91 (MPU-9250) Wiring: SDA and SCL to I2C bus 2 (Braswell Pins 39 and 38) Power to 1.8V (Pin 33) and Ground on Pin 32 I am also using a logic level shifter to convert from the IMU's 3.3V level to the Braswell's 1.8V. I have tested the IMU using an Arduino to verify that it was actually publishing, and checked the output of the IMU combined with the logic level shifter using an oscilloscope. The IMU and the logic shifter seem to be spitting out data correctly, but still nothing comes up. I am having difficulty finding advice online on how to use the I2C on this board. Could someone help me? What am I doing wrong and how should I communicate with the IMU?
1st: You are aware that the Udoo X86 already has a build in IMU in the onboard Arduino 101? https://www.arduino.cc/en/Reference/CurieIMU 2nd: Level shifters are not always I2C compatible: https://www.udoo.org/forum/threads/how-can-i-use-the-braswell-i2c-interface.8937/
Thanks for responding so quickly. 1) I was aware, but the onboard IMU does not have a magnetometer which we need for our project. 2) I have tested my level shifter with the IMU using an Arduino, going down from 5V to 3.3V. The IMU continued to publish to I2C without issues, although the output values were skewed slightly. Are the specific voltages involved significant?
An update on the issue: Following investigation via an oscilloscope, we found that the data line was being cut off before rising back up to logic high, due to high impedance of the logic shifter’s internal pull-up resistors. We tried to attach smaller pull-up resistors in parallel to offset this, but it didn’t work. Our next step is to try changing the I2C clock speed. How would I go about doing this?