How to read data from device in I2C?

Posted on
  • Hello, I'm trying to figure out an error, when I realized that the problem is that I'm using wrong the I2C function. I need to read 8 bits from an address (0x75) in a i2c device (0x68). Following code is an example from libraries and docs:

    I2C1.setup( {scl: NodeMCU.D4, sda: NodeMCU.D5} );
    
    I2C1.writeTo(0x68,0x75);
    var data = I2C1.readFrom(0x75,8);
    console.log(data);
    

    Got the next error:

    Uncaught InternalError: I2CRead: No ACK 0
     at line 5 col 33
      var data = I2C1.readFrom(0x75,8);
                                    ^
    in function called from system
    

    The readFrom function doesn't take as parameter the internal address of the device, that's why the error, is pointing to a device no to the internal address.

    My device is an MPU9250, it works on Arduino and Micropython.

  • There are three different device adresses used in your code -0x68,0x75,0x3b so which one is correct for your device?
    Typically you first write register address you want to read from i2c.writeTo(0x68,regaddr) and then read (two=16bits) bytes i2c.readFrom(0x68,2)

  • Thanks, is already edited the device is 0x68 trying to read the register 0x75 or WHO_AM_I.

    I didn't know that the second parameters accept Bytes.

    Now its works, but the library MPU9250 don't work.

  • Post a reply
    • Bold
    • Italics
    • Link
    • Image
    • List
    • Quote
    • code
    • Preview
About

How to read data from device in I2C?

Posted by Avatar for user136941 @user136941

Actions