• Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Register
  • Login
ModalAI Forum
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
    • Register
    • Login

    voxl_i2c_read() function discards first byte from buffer

    VOXL
    i2c voxl
    3
    4
    427
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • J
      jameskuesel
      last edited by 19 Jul 2023, 15:41

      Hello I am using the libaqp8096 i2c functions https://gitlab.com/voxl-public/voxl-sdk/core-libs/libapq8096-io/-/blob/master/lib/include/voxl_io.h specifically voxl_i2c_read() and voxl_i2c_write(). I am using the voxl read and write functions for reading and writing multiple bytes at a time.

      When I print out the read and write buffers, it looks like it properly writes to the buffer but the results from the read buffer are incomplete. For example, if I write uint8_t wrbuffer = 0x1234 to register address 0x0004, it writes 00 04 12 34 (the first two bytes for the address) and reads back 02 34. Another example: I wrote uint8_t wbuffer[4] = {33,55,77,99} and it read back 01 55 77 99.

      I noticed this issue happens with a write then read. If I read from a read-only buffer, it reads correctly.

      E 1 Reply Last reply 19 Jul 2023, 16:40 Reply Quote 0
      • E
        Eric Katzfey ModalAI Team @jameskuesel
        last edited by 19 Jul 2023, 16:40

        @jameskuesel What device do you have on the i2c bus?

        J 1 Reply Last reply 19 Jul 2023, 18:46 Reply Quote 0
        • J
          jameskuesel @Eric Katzfey
          last edited by 19 Jul 2023, 18:46

          @Eric-Katzfey a TOF ranging sensor - VL53L1CB by ST

          1 Reply Last reply Reply Quote 0
          • J
            James Strawson ModalAI Team
            last edited by 20 Jul 2023, 17:38

            hmmm, There is a similar (but not exactly the same) behavior with SPI on APQ8096 where all reads are preceded by a single random byte meaning libvoxl-io needs to read one extra byte than expected and then discard the first dummy byte. However this happens under the hood here:

            https://gitlab.com/voxl-public/voxl-sdk/core-libs/libapq8096-io/-/blob/master/lib/sdsp/io_rpc_spi.c#L254

            I've not seen such a thing with I2C. Have you looked at our VL53L1X driver for APQ8096? It might just work with your newer VL53L1CB sensors with small changes.

            https://gitlab.com/voxl-public/voxl-sdk/services/apq8096-rangefinder-server

            1 Reply Last reply Reply Quote 0
            1 out of 4
            • First post
              1/4
              Last post
            Powered by NodeBB | Contributors