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

    Voxl-IO questions (GPIO & i2c)

    Software Development
    3
    3
    192
    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.
    • A
      amitmol
      last edited by

      I have a few questions about the voxl-io library, and I would love if you could help me:

      1.1. Missing ability to GPIO interrupt (or missing documentation?)
      1.2. Missing ability to control of Pull Up/Down (Is the hardware exist to do so?, or missing documentation?)
      1.3. Need clarification in the i2c api, can I write to a device without specifying a designated register?
      	For example in the smbus linux library: (https://www.kernel.org/doc/html/latest/i2c/smbus-protocol.html)
      		i2c_smbus_write_byte(...): Writes a single byte to a device
      		i2c_smbus_write_byte_data(...): Writes a single byte to a designated register on the device
      
      1 Reply Last reply Reply Quote 0
      • modaltbM
        modaltb ModalAI Team
        last edited by

        Hi @amitmol ,

        The VOXL is based on the snapdragon 820, built for smart phones, and has a bit less control than a microcontroller with configurability....

        • Interrupt- not out of the box as far as I know
        • pull up/down - this is a device tree modification likely, not something quick
        • on this platform, we use voxl-io to send/receive the I2C commands to the sDSP, so it's what's exposed there presently only unless it's added later
        1 Reply Last reply Reply Quote 0
        • Chad SweetC
          Chad Sweet ModalAI Team
          last edited by

          We have example Python code in voxl-modem to control the B2B GPIO

          ## All GPIO pins need to be exported before they can be used
          #
          def gpio_export(num):
              subprocess.call("echo " + num + " > /sys/class/gpio/export",
                              stderr=FNULL, shell=True)
          
          ## Each GPIO has to have its direction set prior to use
          # @param num  pin number
          # @param direction 'in' or 'out'
          #
          def gpio_direction_map(num, direction):
              subprocess.call("echo " + direction + " > /sys/class/gpio/gpio" \
                              + num + "/direction",
                              stderr=FNULL, shell=True)
          
          ## Set a value to an 'out' gpio
          #
          def set_gpio(num, value):
              subprocess.call("echo " + value + " > /sys/class/gpio/gpio" + num + "/value",
                              stderr=FNULL, shell=True)
          
          ##  Reads a GPIO pin
          #   @apram pin
          #       pin number
          #   @return
          #       integer value [0,1]
          def gpio_read_int(pin_int):
              gpio_file = '/sys/class/gpio/gpio' + str(pin_int) + '/value'
              value = subprocess.check_output(['cat', gpio_file]).strip()
              return int(value)
          
          1 Reply Last reply Reply Quote 0
          • First post
            Last post
          Powered by NodeBB | Contributors