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

    Issue initializing three i2c devices on voxl-px4

    VOXL 2
    2
    2
    19
    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.
    • R
      Riccardo
      last edited by

      Hi,
      I'm working on a voxl2 with sdk 1.4.1 and I need to handle three i2c devices in voxl-px4. The devices are the following:

      • ina231 on bus 2 with device id 0x44
      • vl53l1x on bus 4 with device id 0x29
      • a second distance sensor on bus 4 with device id 0x77

      Each of the device is handled by a px4 module, initialized in voxl-px4-start. Until I start only two i2c devices everything works fine however the third one always fails at this line "_i2c_fd = _config_i2c_bus(get_device_bus(), get_device_address(), _frequency);" of i2c.cpp.
      Note that the order of initialization matters, for example if I initialize the devices in the order 0x44, 0x29, 0x77 the device 0x77 will fail. If the order is 0x29, 0x77, 0x44 would be the 0x44 device to fail.

      This is how the three modules are initialized in the voxl-px4-start script
      qshell vl53l1x start -X -b 4 -R 0 #range finder facing forward
      qshell finder_i2c start -X -b 4 -M 0 #custom module that handles the rangefinder facing downwards
      if [ "$POWER_MANAGER" == "VOXLPM" ]; then
      # APM power monitor
      qshell voxlpm start -X -b 2
      fi

      In this case the voxlpm fails to initialize with the following error log
      INFO [qshell] Send cmd: 'voxlpm start -X -b 2'
      INFO [muorb] SLPI: Marking DeviceNode(qshell_req) as advertised in process_remote_topic
      INFO [muorb] SLPI: qshell gotten: voxlpm start -X -b 2
      INFO [muorb] SLPI: arg0 = 'voxlpm'
      INFO [muorb] SLPI: arg1 = 'start'
      INFO [muorb] SLPI: arg2 = '-X'
      INFO [muorb] SLPI: arg3 = '-b'
      INFO [muorb] SLPI: arg4 = '2'
      INFO [muorb] SLPI: *** I2C Device ID 0xd24411 13779985
      INFO [muorb] SLPI: Initializing VOXLPM on channel 0
      INFO [muorb] SLPI: Set up I2C bus mutex for bus 2
      ERROR [muorb] SLPI: i2c init failed
      INFO [muorb] SLPI: PX4_qshell: no instance started (no device on bus?)
      ERROR [muorb] SLPI: Failed to execute command: voxlpm start -X -b 2
      INFO [qshell] cmd returned with: -1
      INFO [qshell] qshell return value timestamp: 356875512, local time: 356879115
      ERROR [qshell] Command failed

      Eric KatzfeyE 1 Reply Last reply Reply Quote 0
      • Eric KatzfeyE
        Eric Katzfey ModalAI Team @Riccardo
        last edited by

        @Riccardo Make sure that the 2 devices sharing bus 4 have the same i2c frequency.

        1 Reply Last reply Reply Quote 0
        • First post
          Last post
        Powered by NodeBB | Contributors