forked from M-Labs/artiq
test: I2C/PCA9548 unittest
This commit is contained in:
parent
36387afc12
commit
683716017b
|
@ -46,6 +46,19 @@ class PCA9548:
|
||||||
finally:
|
finally:
|
||||||
i2c_stop(self.busno)
|
i2c_stop(self.busno)
|
||||||
|
|
||||||
|
@kernel
|
||||||
|
def readback(self):
|
||||||
|
i2c_init(self.busno)
|
||||||
|
i2c_start(self.busno)
|
||||||
|
r = 0
|
||||||
|
try:
|
||||||
|
if not i2c_write(self.busno, self.address | 1):
|
||||||
|
raise I2CError("PCA9548 failed to ack address")
|
||||||
|
r = i2c_read(self.busno, False)
|
||||||
|
finally:
|
||||||
|
i2c_stop(self.busno)
|
||||||
|
return r
|
||||||
|
|
||||||
|
|
||||||
class TCA6424A:
|
class TCA6424A:
|
||||||
def __init__(self, dmgr, busno=0, address=0x44):
|
def __init__(self, dmgr, busno=0, address=0x44):
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
import os, unittest
|
||||||
|
|
||||||
|
from artiq.experiment import *
|
||||||
|
from artiq.test.hardware_testbench import ExperimentCase
|
||||||
|
|
||||||
|
|
||||||
|
class I2CSwitch(EnvExperiment):
|
||||||
|
def build(self):
|
||||||
|
self.setattr_device("core")
|
||||||
|
self.setattr_device("i2c_switch")
|
||||||
|
|
||||||
|
@kernel
|
||||||
|
def run(self):
|
||||||
|
passed = True
|
||||||
|
for i in range(8):
|
||||||
|
self.i2c_switch.set(i)
|
||||||
|
if self.i2c_switch.readback() != 1 << i:
|
||||||
|
passed = False
|
||||||
|
self.set_dataset("passed", passed)
|
||||||
|
|
||||||
|
|
||||||
|
class I2CTest(ExperimentCase):
|
||||||
|
def test_i2c_switch(self):
|
||||||
|
self.execute(I2CSwitch)
|
||||||
|
self.assertTrue(self.dataset_mgr.get("passed"))
|
Loading…
Reference in New Issue