from i2chw_d import * import binascii from binascii import hexlify import os import ctypes import time def hexstring(values): """ Convert a bytes like object to a hex string :param values : bytes like object :return: hex string representing the value """ return hexlify(bytearray(values)).decode("ascii") def intstring(values): """ Convert a bytes like object to a hex string :param values : bytes like object :return: hex string representing the value """ return hexlify(bytearray(values)).decode("int") if __name__ == "__main__": global ft4222_handle I2C_FREQ = 0 n = len(sys.argv) print("Total arguments passed:", n) I2C_FREQ = sys.argv[1] print(I2C_FREQ) i2cInit(int(I2C_FREQ)) count = 0 i2c_fifo_depth = 1 i2c_fifo_word_size = 1 ########################################################################################## #Get chip id CMD : 0x0112 - This is READ command. ADSD3500 returns 2 BYTE chip ID (0x5931) data_out_list_append = [] for i in range(1, i2c_fifo_word_size * i2c_fifo_depth+1): data_out_list_append.extend(int(0x0112).to_bytes(2,byteorder="big")) data_out = bytes(data_out_list_append) print('I2C data written') print(hexlify(data_out)) count = i2cWrite(0x38, data_out) count, rx_data = i2cRead(0x38, 2) print('I2C data read') print(hexlify(rx_data)) print("Number of data bytes read: %2d bytes\n" % (count)) time.sleep(0.5) ######################################################################################### #Stream on : CMD : 0x00AD DATA : 0x00C5 data_out_list_append = [] for i in range(1, i2c_fifo_word_size * i2c_fifo_depth+1): data_out_list_append.extend(int(0x00AD).to_bytes(2,byteorder="big")) data_out_list_append.extend(int(0x00C5).to_bytes(2,byteorder="big")) data_out = bytes(data_out_list_append) print('I2C data written') print(hexlify(data_out)) count = i2cWrite(0x38, data_out) print("Number of data bytes written: %2d bytes \n" % (count)) time.sleep(0.5) ########################################################################################## #Stream off : CMD : 0x000C DATA : 0x0002 data_out_list_append = [] for i in range(1, i2c_fifo_word_size * i2c_fifo_depth+1): data_out_list_append.extend(int(0x000C).to_bytes(2,byteorder="big")) data_out_list_append.extend(int(0x0002).to_bytes(2,byteorder="big")) data_out = bytes(data_out_list_append) print('I2C data written') print(hexlify(data_out)) count = i2cWrite(0x38, data_out) print("Number of data bytes written: %2d bytes \n" % (count)) time.sleep(0.5) ########################################################################################## #Set Imager mode CMD : 0xDA07 DATA : 0x2021 (Depth is enabled, 12 bit depth, Virtual Channel is enabled, 2 o/p MIPI lanes) data_out_list_append = [] for i in range(1, i2c_fifo_word_size * i2c_fifo_depth+1): data_out_list_append.extend(int(0xDA07).to_bytes(2,byteorder="big")) data_out_list_append.extend(int(0x00FF).to_bytes(2,byteorder="big")) data_out = bytes(data_out_list_append) print('I2C data written') print(hexlify(data_out)) count = i2cWrite(0x38, data_out) print("Number of data bytes written: %2d bytes \n" % (count)) #time.sleep(0.5) #read transaction count, rx_data = i2cRead(0x38, 2) print('I2C data read') print(hexlify(rx_data)) print("Number of data bytes read: %2d bytes\n" % (count)) time.sleep(0.5) ######################################################################################### #Stream on CMD : 0x00AD DATA : 0x00C5 data_out_list_append = [] for i in range(1, i2c_fifo_word_size * i2c_fifo_depth+1): data_out_list_append.extend(int(0x00AD).to_bytes(2,byteorder="big")) data_out_list_append.extend(int(0x00C5).to_bytes(2,byteorder="big")) data_out = bytes(data_out_list_append) print('I2C data written') print(hexlify(data_out)) count = i2cWrite(0x38, data_out) print("Number of data bytes written: %2d bytes \n" % (count)) time.sleep(0.5) ########################################################################################## #Stream off CMD : 0x000C DATA : 0x0002 data_out_list_append = [] for i in range(1, i2c_fifo_word_size * i2c_fifo_depth+1): data_out_list_append.extend(int(0x000C).to_bytes(2,byteorder="big")) data_out_list_append.extend(int(0x0002).to_bytes(2,byteorder="big")) data_out = bytes(data_out_list_append) print('I2C data written') print(hexlify(data_out)) count = i2cWrite(0x38, data_out) print("Number of data bytes written: %2d bytes \n" % (count)) time.sleep(0.5) ########################################################################################## #Set Framerate command CMD : 0x0022 DATA : 0x20 (32 FPS) data_out_list_append = [] for i in range(1, i2c_fifo_word_size * i2c_fifo_depth+1): data_out_list_append.extend(int(0x0022).to_bytes(2,byteorder="big")) data_out_list_append.extend(int(0x0020).to_bytes(2,byteorder="big")) data_out = bytes(data_out_list_append) print('I2C data written') print(hexlify(data_out)) count = i2cWrite(0x38, data_out) print("Number of data bytes written: %2d bytes \n" % (count)) #time.sleep(0.5) #read transaction count, rx_data = i2cRead(0x38, 2) print('I2C data read') print(hexlify(rx_data)) print("Number of data bytes read: %2d bytes\n" % (count)) time.sleep(0.5) ######################################################################################### #Stream on CMD : 0x00AD DATA : 0x00C5 data_out_list_append = [] for i in range(1, i2c_fifo_word_size * i2c_fifo_depth+1): data_out_list_append.extend(int(0x00AD).to_bytes(2,byteorder="big")) data_out_list_append.extend(int(0x00C5).to_bytes(2,byteorder="big")) data_out = bytes(data_out_list_append) print('I2C data written') print(hexlify(data_out)) count = i2cWrite(0x38, data_out) print("Number of data bytes written: %2d bytes \n" % (count)) time.sleep(0.5) #########################################################################################