def test_default_gpio(self): """Check I/O. """ gpio_in, gpio_out = GpioMpsseController(), GpioMpsseController() gpio_in.configure(self.urls[0], direction=0x0000, frequency=10e6, debug=self.debug_mpsse) gpio_out.configure(self.urls[1], direction=0xFFFF, frequency=10e6, debug=self.debug_mpsse) for out in range(3, 0x10000, 29): gpio_out.write(out) outv = gpio_out.read()[0] inv = gpio_in.read()[0] # check inputs match outputs self.assertEqual(inv, out) # check level of outputs match the ones written self.assertEqual(outv, out) gpio_in.close() gpio_out.close()
def test_peek_gpio(self): """Check I/O peeking """ gpio_in, gpio_out = GpioMpsseController(), GpioMpsseController() gpio_in.configure(self.urls[0], direction=0xFF00, frequency=10e6, debug=self.debug) gpio_out.configure(self.urls[1], direction=0x00FF, frequency=10e6, debug=self.debug) for out in range(256): gpio_out.write(out) outv = gpio_out.read()[0] inv = gpio_in.read(peek=True) # check inputs match outputs self.assertEqual(inv, out) #print(f'{out} {inv}') # check level of outputs match the ones written self.assertEqual(outv, out) gpio_in.close() gpio_out.close()
def test_stream_gpio(self): """Check I/O streaming. Beware this test is CPU intensive w/ virtual framework """ gpio_in, gpio_out = GpioMpsseController(), GpioMpsseController() gpio_in.configure(self.urls[0], direction=0x0000, frequency=10e6, debug=self.debug) gpio_out.configure(self.urls[1], direction=0xFFFF, frequency=10e6, debug=self.debug) outv = list(range(0, 0x10000, 29)) max_count = min(gpio_out.ftdi.fifo_sizes[0], gpio_in.ftdi.fifo_sizes[1])//2 # 2 bytes/value outv = outv[:max_count] gpio_out.write(outv) inv = gpio_in.read(len(outv)) # for now, it is hard to test value exactness self.assertEqual(len(outv), len(inv)) gpio_in.close() gpio_out.close()
#!/usr/bin/env python from pyftdi.gpio import GpioMpsseController import time pin = 4 delay = 0.1 controller = GpioMpsseController() try: controller.configure( "ftdi://ftdi:ft232h/1", frequency=1e6, direction=0x0000) gpio = controller.get_gpio() while True: print(gpio.read()[0] >> pin & 1) time.sleep(delay) finally: controller.close()
#!/usr/bin/env python from pyftdi.gpio import GpioMpsseController import time def toggle(gpio, delay): gpio.write(0x0000 & gpio.direction) print('off', bin(gpio.read()[0])) time.sleep(delay) gpio.write(0xFFFF & gpio.direction) print('on ', bin(gpio.read()[0])) time.sleep(delay) delay = 1 controller = GpioMpsseController() try: controller.configure("ftdi://ftdi:ft232h/1", frequency=100, direction=0xFFFF, initial=0x0000) gpio = controller.get_gpio() while True: toggle(gpio, delay) finally: controller.close()