コード例 #1
0
 def open_device(self, bitrate=400):
     try:
         self.iss = UsbIss()
         self.iss.open(self.get_port())
         self.iss.setup_i2c(clock_khz=bitrate)
     except Exception as ex:
         print(ex)
         raise UsbIssError("\ninitial usb-iss device error!\n")
コード例 #2
0
def main():
    config_filename = "GBS20V1_I2C_Config.txt"  # need to change by users
    COM_Port = "COM3"  # need to change according com port

    I2C_Addr = 0x20
    Reg_Addr = []
    Reg_Val = []
    with open(config_filename, 'r') as infile:  # read configuration file
        for line in infile.readlines():
            if len(line.split()) == 1:  # read I2C address
                I2C_Addr = hex(int(line.split()[0], 16))
            else:  # read register address and value
                Reg_Addr += [int(line.split()[0], 16)]
                Reg_Val += [int(line.split()[1], 16)]

    print(Reg_Addr)
    print(Reg_Val)

    # set usb-iss iic master device
    iss = UsbIss()
    iss.open(COM_Port)
    iss.setup_i2c()

    regWritelen = 16

    for i in range(regWritelen):  # write data into i2c slave
        print(I2C_Addr, hex(Reg_Addr[i]), hex(Reg_Val[i]))
        iss.i2c.write(I2C_Addr, Reg_Addr[i], Reg_Val[i])
        time.sleep(0.02)

    regReadlen = 17
    read_data = []
    read_data = Reg_Val
    for i in range(regReadlen):  # read data from i2c slave
        read_data += [iss.i2c.read(I2C_Addr, Reg_Addr[i], 1)]
        time.sleep(0.02)

    # compare write in data with read back data
    print('Check write-in registers:')
    for i in range(regWritelen):
        if Reg_Val[i] != read_data[i]:
            print("Read-back didn't match with write-in: {} {} {}".format(
                hex(Reg_Addr[i]), hex(Reg_Val[i]), hex(read_data[i])))
    print('Write-in data check finisehd')

    # check read-only register data
    print('Read read-only registers:')
    for i in range(regWritelen, regReadlen):
        print(hex(Reg_Addr[i]), hex(read_data[i]))

    for i in range(
            3
    ):  # if read back data matched with write in data, speaker will make a sound three times
        winsound.Beep(freqency, duration)
        time.sleep(0.01)

    print("Ok!")
コード例 #3
0
    def __init__(self, port, print_debug=0, Slave_Addr=0xA0, speed=400):
        self.port = port
        # 7bit Address
        self.Slave_Addr = (Slave_Addr >> 1)
        self.print_debug = print_debug
        self.speed = speed

        self.iss = UsbIss()
        self.iss.open(self.port)
        self.iss.setup_i2c(self.speed)
コード例 #4
0
ファイル: rsl_spi.py プロジェクト: RedshiftLabsPtyLtd/um7py
 def __init__(self, **kwargs):
     from usb_iss import UsbIss
     super().__init__(**kwargs)
     self.iss = UsbIss()
     self.port = kwargs.get('port') if kwargs.get(
         'port') is not None else '/dev/ttyACM0'
     if not os.path.exists(self.port):
         raise RslException(
             f'SPI port not found: {self.port}: USB-ISS needs to connect to ACM'
             f' port for SPI communication. The port does not exist, specify `port` argument!'
         )
     self.connect()
コード例 #5
0
def main():
    ## set usb-iss iic master device
    slave_addr = 0x23
    iss = UsbIss()
    iss.open("COM3")
    iss.setup_i2c()

    ## GBCR2 Register mapping 


    iss.i2c.write(slave_addr, 0, [0, 1, 2])

    data = iss.i2c.read(slave_addr, 0, 3)
    print(data)
    print("Ok!!!")
コード例 #6
0
def main():
    config_filename = "GBS20_I2C_Config.txt"  # need to change by users
    COM_Port = "COM3"

    I2C_Addr = 0x22
    Reg_Addr = []
    Reg_Val = []
    with open(config_filename, 'r') as infile:  # read configuration file
        for line in infile.readlines():
            if len(line.split()) == 1:  # read I2C address
                I2C_Addr = hex(int(line.split()[0], 16))
            else:  # read register address and value
                Reg_Addr += [int(line.split()[0], 16)]
                Reg_Val += [int(line.split()[1], 16)]

    # set usb-iss iic master device
    iss = UsbIss()
    iss.open(COM_Port)
    iss.setup_i2c()

    for i in range(len(Reg_Addr)):  # write data into i2c slave
        iss.i2c.write(I2C_Addr, Reg_Addr[i], Reg_Val[i])
        time.sleep(0.02)

    read_data = []
    for i in range(len(Reg_Addr)):  # read data from i2c slave
        read_data += [iss.i2c.read(I2C_Addr, Reg_Addr[i], 1)]
        time.sleep(0.02)

    ## compare write in data with read back data
    if Reg_Val == Reg_Val:
        print("Read back data matched with write in data")
        for i in range(
                3
        ):  # if read back data matched with write in data, speaker will make a sound three times
            winsound.Beep(freqency, duration)
            time.sleep(0.01)
    else:
        print("Read back data didn't match with write in data"
              )  #print reg_add, write data, read back data
        for i in range(len(Reg_Addr)):
            if Reg_Val[i] != read_data[i]:
                print(Reg_Addr[i], Reg_Val[i], read_data[i])

    print("Ok!")
コード例 #7
0
    def connectToUSBISS(self, event):

        if self.btn_cnct.GetLabel() == "Connect":
            self._iss = UsbIss()
            p = self.comboboxCOMport.GetValue()
            self._iss.open(p)
            try:
                self._id = self._iss.read_module_id()
            except UsbIssError as e:
                wx.MessageBox("Module not identified!",
                              "Module not identified!", wx.OK, self)
                self._id = 99

            if self._id != 7:
                self.infotext.SetLabel(
                    "Error: Module not identified! Port closed.")
                self._iss.close()
                self._iss = None
            else:
                self._fwv = self._iss.read_fw_version()
                self._ser = self._iss.read_serial_number()
                speed = self.getSelectedPortSpeed(
                    self._comboboxSpeed.GetStringSelection())
                self._iss.setup_serial(speed, defs.IOType.DIGITAL_INPUT,
                                       defs.IOType.DIGITAL_INPUT)
                self._currmode = self._iss.read_iss_mode()
                txt = _infotext.format(self._id, self._fwv, self._ser,
                                       self._currmode)
                self.infotext.SetLabel(txt)
                self.btn_cnct.SetLabel("Disconnect")
                self.enableControls()
                self.panel.Layout()
                #start receiving in separate thread
                self.updateTimer.Start(milliseconds=10,
                                       oneShot=wx.TIMER_CONTINUOUS)

        else:
            self.updateTimer.Stop()
            self._iss.close()
            self._iss = None
            self.infotext.SetLabel("Connection closed...")
            self.btn_cnct.SetLabel("Connect")
            self.disableControls()
            self.btn_cnct.Enable()
コード例 #8
0
def main():
    rm = visa.ResourceManager()
    inst1 = rm.open_resource('USB0::0x2A8D::0x1102::MY58041595::0::INSTR')      # top power supply
    inst1.write("*RST")
    inst1.write("SOURce:VOLTage 1.2,(@1)")                                      # top channel 1
    inst1.write("SOURce:CURRent 0.2,(@1)")
    inst1.write("OUTPut:STATe ON,(@1)")                                         # enable bottom channel 1
    time.sleep(2)
    iss = UsbIss()
    iss.open("COM3")
    iss.setup_i2c(clock_khz=100, use_i2c_hardware=True, io1_type=None, io2_type=None)
    I2C_Addr = 0X23
    Chip_ID = int(sys.argv[1])
    print("Chip %d is being testing!!!"%Chip_ID)
    CH_ID = 4
    GBCR2_Reg1 = GBCR2_Reg()
    CH_Dis_Rx = 0
    CH_CML_AmplSel = 5
    CH_Dis_EQ_LF = 0
    CH_EQ_ATT = 3
    CH_CTLE_HFSR = 7
    CH_CTLE_MFSR = 10
    CH_Dis_DFF = 1
    CH_Dis_LPF = 0

    GBCR2_Reg1.set_CH4_CML_AmplSel(CH_CML_AmplSel)
    GBCR2_Reg1.set_CH4_CTLE_MFSR(CH_CTLE_MFSR)
    GBCR2_Reg1.set_CH4_CTLE_HFSR(CH_CTLE_HFSR)
    filename = "Chip=%1d_CH%1d_Dis_Rx=0_CML_AmplSel=%1d_Dis_EQ_LF=0_EQ_ATT=3_CTLE_HFSR=%02d_CTLE_MFSR=%02d_Dis_DFF=1_Dis_LPF=0"%(Chip_ID,CH_ID,CH_CML_AmplSel,CH_CTLE_HFSR,CH_CTLE_MFSR)
    print(filename)
    Reg_Write_val = GBCR2_Reg1.get_config_vector()
    print(Reg_Write_val)
    iss.i2c.write(I2C_Addr, 0, Reg_Write_val)
    Reg_Read_val = []
    Reg_Read_val = iss.i2c.read(I2C_Addr, 0, 0x20)
    print("GBCR2 I2C Read Back data:")
    print(Reg_Read_val)
    print("\n")
    Hist_Std_Dev = capture_screen_image(filename)
    time.sleep(1)
    # inst1.write("OUTPut:STATe OFF,(@1)")                                         # enable bottom channel 1
    winsound.Beep(freqency, duration)
コード例 #9
0
def button_read():
    COM_Port = Run_entry[0].get()
    I2C_Addr = int(Run_entry[1].get(), 0)

    # set usb-iss iic master device
    iss = UsbIss()
    iss.open(COM_Port)
    iss.setup_i2c(clock_khz=100)

    # check read-only register data
    print('Read read-only registers:')
    readonlyReg_Addr = [0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26]
    readonlyReg_Val = []
    for i in range(len(readonlyReg_Addr)):                              # read data from i2c slave
        readonlyReg_Val += iss.i2c.read(I2C_Addr, readonlyReg_Addr[i], 1)
        time.sleep(0.02)
    for i in range(len(readonlyReg_Addr)):
        print(hex(readonlyReg_Addr[i]), hex(readonlyReg_Val[i]))

    # 'AFCcalCap<5:0>', 'AFCbusy', 'INSTLOCK_PLL', 'PA0_testEdge<0>', 'PA1_testEdge<0>'
    global Readonly_var
    Readonly_var[0].set( str(readonlyReg_Val[0]) )
    Readonly_var[1].set( str(readonlyReg_Val[1]) )
    Readonly_var[2].set( str(readonlyReg_Val[2]) )
    Readonly_var[3].set( str(readonlyReg_Val[5]) )
    Readonly_var[4].set( str(readonlyReg_Val[6]) )

    PA0_binary = '{0:08b}'.format(readonlyReg_Val[3])
    global Readonly2_var
    for i in range(8):
        Readonly2_var[Readonly2_item[0]][i].set( PA0_binary[i] )

    PA1_binary = '{0:08b}'.format(readonlyReg_Val[4])
    global Readonly3_var
    for i in range(8):
        Readonly3_var[Readonly3_item[0]][i].set( PA1_binary[i] )

    return
コード例 #10
0
from usb_iss.exceptions import UsbIssError
import sys
import time
import wx
import serial.tools.list_ports
import threading
import codecs as cdc
import binascii

# USB Iss related global variables
_id = 0
_fwv = 0
_infotext = "COM15: Module ID: {}\nModule FW: {}\nModule Serialnumber: {}\nCurrent Mode: {}"
_ser = 0
_currmode = "UNKNOWN"
_iss = UsbIss()
_stop = 10
_serport = None
wsz = wx.BoxSizer()
_comspeeds = []
_comboboxSpeed = None
_enterKeyPressed = False


class USBISS_Serial_Interface(wx.Frame):
    def __init__(self):
        self._enterKeyPressed = False
        # Application window
        super().__init__(parent=None, title="USB ISS Serial", size=(650, 600))
        self.panel = wx.Panel(self)
コード例 #11
0
def main():
    IDD_Max = 180  # Power Current max value
    IDD_Min = 45  # Power Current min value
    I2C_Read_Times = 10
    Jitter_Max = 100  # Jitter max values
    Rx_Amplitude_Min = 100  # Amplitude min value
    Tx_Amplitude_Min = 200  # Amplitude min value

    ## Input Parameters
    Test_Mode = sys.argv[1]  # Rx or Tx
    Tester_Name = sys.argv[2]  # Tester Name
    Chip_ID = sys.argv[3]  # Chip id

    ## Power Supply
    rm = visa.ResourceManager()
    print(rm.list_resources())
    Power_Inst = rm.open_resource(
        'USB0::0x2A8D::0x1002::MY59001324::INSTR')  # connect to SOC
    print(Power_Inst.query("*IDN?"))
    Power_Inst.write("OUTPut:STATe ON,(@1)")  # Turn On Power Channel One

    OSC_Inst = rm.open_resource('GPIB0::1::INSTR')  # connect to SOC
    print(OSC_Inst.query("*IDN?"))
    OSC_Inst.write("*RST")  # reset the OSC

    ## set usb-iss iic master device
    slave_addr = 0x23  # iic target address
    iss = UsbIss()  # usb-iss handle
    iss.open("COM8")  # usb com EXPort
    iss.setup_i2c(
        clock_khz=100
    )  # i2c SCL clock frequency = 100 KHz, if set to 400 KHz, at 1.08 V NACK

    ## Labjack instrument
    d = U3()
    # print(d.configU3())
    # print(d.configIO())
    d.setFIOState(5, state=1)  # default value 1
    d.setFIOState(6, state=1)  # default value 1
    d.setFIOState(7, state=1)  # default value 1

    GBCR2_Reg1 = GBCR2_Reg()
    GBCR2_Reg1.set_Tx1_Dis_DL_BIAS(0)
    GBCR2_Reg1.set_Tx2_Dis_DL_BIAS(0)

    with open(
            "C:/GBCR2_QC_Test/GBCR2_QC_Test_Results/GBCR2_QC_%s_Chip_ID=%s.txt"
            % (Test_Mode, Chip_ID), 'a+') as infile:
        time_stamp = time.strftime('%Y-%m-%d %H:%M:%S',
                                   time.localtime(time.time()))
        infile.write("\n")  # add a blank row
        infile.write("%s\n" % time_stamp)  # write timestamp to file
        infile.write("%s\n" % Tester_Name)  # Tester name

        Channel_One_Current = Power_Control(
            Power_Inst, 1.277)  # Set Power Voltage is about 1.2 V
        if Channel_One_Current < IDD_Min or Channel_One_Current > IDD_Max:
            print("IDD Failed!!!")
            IDD_Status = "IDD Failed!!!"
            infile.write("%s\n" % IDD_Status)  # Tester name
        else:
            IDD_Status = "IDD Passed"
        if IDD_Status == "IDD Passed":
            infile.write("VDD=%.3fV IDD=%.3fA\n" %
                         (1.2, Channel_One_Current))  # read power current
            time.sleep(1)
            ## I2C write and read 10 times. if yes,
            loop_num = 0
            I2C_Status = "Failed"
            while (loop_num < I2C_Read_Times and I2C_Status == "Failed"):
                # print(loop_num)
                I2C_Status1 = I2C_Write_Read(GBCR2_Reg1, iss, infile)
                I2C_Status = I2C_Status1[0]
                if I2C_Status == "Failed":
                    infile.write("I2C Test Failed  %d\n" % loop_num)
                    infile.write("Written values:\n")
                    infile.writelines("%d " % val for val in I2C_Status1[1])
                    infile.write("\n")
                    infile.write("Read values:\n")
                    infile.writelines("%d " % val for val in I2C_Status1[2])
                    infile.write("\n")
                    ## write iic write into data and read back data to file
                time.sleep(0.1)
                loop_num += 1
            if loop_num < I2C_Read_Times:
                infile.write("I2C Test Passed  %d\n" % loop_num)
            else:
                print("I2C NACK!!!")
                infile.write("I2C Test Failed  %d\n" % loop_num)
                infile.writelines("%d " % val for val in I2C_Status1[1])
                infile.write("\n")
                infile.writelines("%d " % val for val in I2C_Status1[2])
                infile.write("\n")
                ## write iic write into data and read back data to file
            if I2C_Status == "Passed":
                Power_Volt = [1.277, 1.145, 1.411]
                # Power_Volt = [1.411]
                Power_Volt_Board = [1.2, 1.08, 1.32]
                Power_Volt_Name = ["VDD=1V20", "VDD=1V08", "VDD=1V32"]
                Channel_One_Current = []
                I2C_Status = []
                Rx_Jitter_Performance = []
                Tx_Jitter_Performance = []
                Rx_Amplitude_Performance = []
                Tx_Amplitude_Performance = []
                Rx_Amplitude = 150
                Tx_Amplitude = 250
                Rx_Jitter = 80
                Tx_Jitter = 80
                print(
                    time.strftime('%Y-%m-%d %H:%M:%S',
                                  time.localtime(time.time())))
                for Volt in range(len(Power_Volt)):
                    # chaneg power voltage
                    print("\n%.2fV Voltage Test......" %
                          Power_Volt_Board[Volt])
                    Channel_One_Current += [
                        Power_Control(Power_Inst, Power_Volt[Volt])
                    ]
                    print("Power Current: %.3f" % Channel_One_Current[Volt])
                    time.sleep(1)
                    I2C_Status += [I2C_Write_Read(GBCR2_Reg1, iss, infile)[0]]
                    print("I2C Status: %s" % I2C_Status[Volt])
                    infile.write(
                        "%.2fV Voltage Test:==============================================\n"
                        % Power_Volt_Board[Volt])
                    infile.write("Power Current: %.3f\n" %
                                 Channel_One_Current[Volt])
                    infile.write("I2C Status: %s\n" % I2C_Status[Volt])
                    if Test_Mode == "Rx":  # test Rx channel
                        for Chan in range(7):
                            if (Rx_Amplitude > Rx_Amplitude_Min
                                    and Rx_Jitter < Jitter_Max) and (
                                        Tx_Amplitude > Tx_Amplitude_Min
                                        and Tx_Jitter < Jitter_Max):
                                print("Rx Channel %d is being tested!" %
                                      (Chan + 1))
                                d.setFIOState(5, state=Chan & 0x1)
                                d.setFIOState(6, state=(Chan & 0x2) >> 1)
                                d.setFIOState(7, state=(Chan & 0x4) >> 2)
                                time.sleep(0.1)
                                Measure_Value = Capture_Screen_Image(
                                    OSC_Inst, Test_Mode,
                                    "Chip_ID=%s_RX_CH%d_%s_Eye-diagram_Img" %
                                    (Chip_ID, Chan + 1, Power_Volt_Name[Volt]))
                                print(Measure_Value)
                                # print("\n")
                                infile.write(
                                    "Rx Channel %d:######################\n" %
                                    (Chan + 1))
                                infile.write(
                                    "RMS Jitter: %.3f ps\n" %
                                    float(eval(Measure_Value[0]) * 1e12))
                                infile.write(
                                    "Amplitude: %.3f mV\n" %
                                    float(eval(Measure_Value[1]) * 1e3))
                                infile.write(
                                    "Rise Time: %.3f ps\n" %
                                    float(eval(Measure_Value[2]) * 1e12))
                                infile.write(
                                    "Fall Time: %.3f ps\n" %
                                    float(eval(Measure_Value[3]) * 1e12))
                                Rx_Jitter_Performance += [
                                    eval(Measure_Value[0]) * 1e12
                                ]
                                Rx_Amplitude_Performance += [
                                    eval(Measure_Value[1]) * 1e3
                                ]
                                # Rx_Jitter_Performance += [float(Measure_Value[0].split("E")[0])]
                                # Rx_Amplitude_Performance += [float(Measure_Value[1].split("E")[0])]
                                Rx_Amplitude = min(Rx_Amplitude_Performance)
                                Rx_Jitter = max(Rx_Jitter_Performance)
                    else:  # test Tx channel
                        for Chan in range(2):
                            if (Rx_Amplitude > Rx_Amplitude_Min
                                    and Rx_Jitter < Jitter_Max) and (
                                        Tx_Amplitude > Tx_Amplitude_Min
                                        and Tx_Jitter < Jitter_Max):
                                print("Tx Channel %d is being tested!" %
                                      (Chan + 1))
                                d.setFIOState(5, state=Chan & 0x1)
                                d.setFIOState(6, state=(Chan & 0x2) >> 1)
                                d.setFIOState(7, state=(Chan & 0x4) >> 2)
                                time.sleep(0.1)
                                Measure_Value = Capture_Screen_Image(
                                    OSC_Inst, Test_Mode,
                                    "Chip_ID=%s_TX_CH%d_%s_Eye-diagram_Img" %
                                    (Chip_ID, Chan + 1, Power_Volt_Name[Volt]))
                                print(Measure_Value)
                                # print("\n")
                                infile.write(
                                    "Tx Channel %d:######################\n" %
                                    (Chan + 1))
                                infile.write(
                                    "RMS Jitter: %.3f ps\n" %
                                    float(eval(Measure_Value[0]) * 1e12))
                                infile.write(
                                    "Amplitude: %.3f mV\n" %
                                    float(eval(Measure_Value[1]) * 1e3))
                                infile.write(
                                    "Rise Time: %.3f ps\n" %
                                    float(eval(Measure_Value[2]) * 1e12))
                                infile.write(
                                    "Fall Time: %.3f ps\n" %
                                    float(eval(Measure_Value[3]) * 1e12))
                                Tx_Jitter_Performance += [
                                    eval(Measure_Value[0]) * 1e12
                                ]
                                Tx_Amplitude_Performance += [
                                    eval(Measure_Value[1]) * 1e3
                                ]
                                Tx_Amplitude = min(Tx_Amplitude_Performance)
                                Tx_Jitter = max(Tx_Jitter_Performance)
                # print(Channel_One_Current)
                # print(max(Channel_One_Current))
                # print(min(Channel_One_Current))
                # print(I2C_Status)
                # print(Rx_Jitter_Performance)
                # print(Rx_Amplitude_Performance)
                # print(max(Rx_Jitter_Performance))
                # print(min(Rx_Amplitude_Performance))
                if max(Channel_One_Current) < IDD_Max and min(
                        Channel_One_Current) > IDD_Min and (
                            "Fail" in I2C_Status) == False:
                    if Test_Mode == "Rx":
                        if max(Rx_Jitter_Performance) < Jitter_Max and min(
                                Rx_Amplitude_Performance) > Rx_Amplitude_Min:
                            print("Chip Test Passed")
                            infile.write("Chip Test Passed\n\n")
                        else:
                            print("Eye-Diagram didn't pass!!!")
                            infile.write("Eye-Diagram didn't pass!!!\n\n")
                    else:
                        if max(Tx_Jitter_Performance) < Jitter_Max and min(
                                Tx_Amplitude_Performance) > Tx_Amplitude_Min:
                            print("Chip Test Passed")
                            infile.write("Chip Test Passed\n\n")
                        else:
                            print("Eye-Diagram didn't pass!!!")
                            infile.write("Eye-Diagram didn't pass!!!\n\n")
                else:
                    print("IID Failed!!!")

            infile.write("\n")

    # ## Turn off Power
    time.sleep(2)
    Power_Inst.write("OUTPut:STATe OFF,(@1)")
    print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())))
    d.setFIOState(5, state=1)  # default value 1
    d.setFIOState(6, state=1)  # default value 1
    d.setFIOState(7, state=1)  # default value 1
コード例 #12
0
def button_run():
    # get entry values from GUI
    Reg_Val = gui_form_reg()

    register_filename = "GBS20V1_gui_register_config.txt"   # need to change by users

    COM_Port = Run_entry[0].get()
    I2C_Addr = int(Run_entry[1].get(), 0)                             # need to change according I2C Addr
    print (COM_Port, I2C_Addr)

    # Write GUI value to txt
    write_user_config(Reg_Val, register_filename)    
    

    Reg_Addr = []
    Reg_Val = []

    with open(register_filename, 'r') as infile:                  # read configuration file
        for line in infile.readlines():
            Reg_Addr += [int(line.split()[0], 16)]              # read register address and value
            Reg_Val += [int(line.split()[1], 16)]

    regWritelen = len(Reg_Addr)
    print ('I2C Addr:',hex(I2C_Addr))
    #print (regWritelen)
    
    print ('Reg Addr:')
    print (Reg_Addr)
    print ('Write-in Reg values:')
    print (Reg_Val)

    # set usb-iss iic master device
    iss = UsbIss()
    iss.open(COM_Port)
    iss.setup_i2c(clock_khz=100)

    # write data into i2c slave
    iss.i2c.write(I2C_Addr, 0, Reg_Val)       
    time.sleep(0.02)

    read_data = []
    for i in range(regWritelen):                              # read data from i2c slave
        read_data += iss.i2c.read(I2C_Addr, Reg_Addr[i], 1)
        time.sleep(0.02)

    print ('Read-back Reg values:')   
    print (read_data)
     # compare write in data with read back data
    errFlag = 0
    print('Check write-in and Read-back data:')
    for i in range(regWritelen):
        if Reg_Val[i] != read_data[i]:
            print("ERROR! Read-back didn't match with write-in: {} {} {}".format(hex(Reg_Addr[i]), hex(Reg_Val[i]), hex(read_data[i])) )
            errFlag = 1

    # if write-in successful, sound once, else sound 3 times
    global I2C_writein
    if errFlag == 0:
        I2C_writein.set('Passed')
        for i in range(3): 
            winsound.Beep(freqency, duration)
            time.sleep(0.01)
    else: 
        I2C_writein.set('Error')
        for i in range(5): 
            winsound.Beep(freqency, duration)
            time.sleep(0.01)


    print("PASS!")
    print("**********************************************************************************")

    return 
コード例 #13
0
def main():
    user_config_filename = "QTIA_user_config.txt"  # need to change by users
    register_filename = "QTIA_register_config.txt"  # need to change by users

    COM_Port = "COM3"  # need to change according com port
    I2C_Addr = 0x21  # I2C Addr of QTIA on QTRx: 7’b0100001

    Reg_Addr = []
    Reg_Val = []

    write_user_config(
        user_config_filename, register_filename
    )  # comment out this line if you want to use register_filename directly

    with open(register_filename, 'r') as infile:  # read configuration file
        for line in infile.readlines():
            Reg_Addr += [int(line.split()[0],
                             16)]  # read register address and value
            Reg_Val += [int(line.split()[1], 16)]

    print(Reg_Addr)
    print(Reg_Val)

    # set usb-iss iic master device
    iss = UsbIss()
    iss.open(COM_Port)
    iss.setup_i2c(clock_khz=100)

    regWritelen = len(Reg_Addr)
    print(type(I2C_Addr))
    print(regWritelen)

    # write data into i2c slave
    iss.i2c.write(I2C_Addr, 0, Reg_Val)
    time.sleep(0.02)

    # for i in range(regWritelen):                              # write data into i2c slave
    #     print (I2C_Addr, hex(Reg_Addr[i]), hex(Reg_Val[i]))
    #     iss.i2c.write(I2C_Addr, Reg_Addr[i], Reg_Val[i])
    #     time.sleep(0.02)

    read_data = []
    for i in range(regWritelen):  # read data from i2c slave
        read_data += iss.i2c.read(I2C_Addr, Reg_Addr[i], 1)
        time.sleep(0.02)

    # compare write in data with read back data
    print('Check write-in registers:')
    for i in range(regWritelen):
        if Reg_Val[i] != read_data[i]:
            print("Read-back didn't match with write-in: {} {} {}".format(
                hex(Reg_Addr[i]), hex(Reg_Val[i]), hex(read_data[i])))
    print('Write-in data check finished')

    for i in range(
            3
    ):  # if read back data matched with write in data, speaker will make a sound three times
        winsound.Beep(freqency, duration)
        time.sleep(0.01)

    print("Ok!")
コード例 #14
0
 def setUp(self):
     self.usb_iss = UsbIss()
     self.driver = Mock()
     self.usb_iss._drv = self.driver