From 019e19fff70e3c411e0691459bb4fe1f32695688 Mon Sep 17 00:00:00 2001 From: GijsSchoonderbeek <schoonderbeek@astron.nl> Date: Mon, 10 May 2021 14:33:24 +0200 Subject: [PATCH] Updated the script so they can be tested on the HW. (read multiple bytes are now returned in one string so it is more in line with the other I2C interface. --- I2C_serial_pi.py | 4 ++-- rd_unb2c.py | 21 +++++++++++---------- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/I2C_serial_pi.py b/I2C_serial_pi.py index d3f7217..8ddf3a3 100644 --- a/I2C_serial_pi.py +++ b/I2C_serial_pi.py @@ -35,9 +35,9 @@ class I2C: bus = smbus.SMBus(self.bus_nr) try: rd_value = bus.read_i2c_block_data(self.I2C_Address, register, bytes_to_read) - ret_value = [] + ret_value = '' for cnt in range(bytes_to_read): - ret_value.append(hex(rd_value[cnt])[2:]) + ret_value += (hex(rd_value[cnt])[2:]) ret_ack = 1 except IOError, err: ret_ack = 0 diff --git a/rd_unb2c.py b/rd_unb2c.py index 114cc1d..13d2b0e 100644 --- a/rd_unb2c.py +++ b/rd_unb2c.py @@ -32,8 +32,7 @@ def rw_eeprom(value=0xAB): else: pr_stri = "Found device at address 0x{:02x}".format(I2C_eeprom.I2C_Address) print(pr_stri) - ret_ack = I2C_eeprom.write_bytes(0x00, value) -# sleep(0.25) + I2C_eeprom.write_bytes(0x00, value) ret_ack, ret_value = I2C_eeprom.read_bytes(0x00, 1) stri = "Wrote to EEPROM: {0}, Read from EEPROM: {1} ".format(value, ret_value) print(stri) @@ -102,8 +101,8 @@ def read_ddr(node_nr = 0, module=0): stri = "No DDR moduel in slot {0} node {1}".format(module, node_nr) else: ret_value=[] - ret_value.append(int(raw_ret[0],16)) - ret_value.append(int(raw_ret[1],16)) + ret_value.append(int(raw_ret[:2],16)) + ret_value.append(int(raw_ret[2:],16)) temp = (((ret_value[0] & 0x1F) * 0x100) + (ret_value[1] & 0xFC)) * 0.0625 stri = "Temperature DDR4 in slot {0} node {1} is {2:3.2f} C".format(module, node_nr, temp) print(stri) @@ -124,19 +123,19 @@ def read_qsfp(node_nr = 0, module=0): QSFP_cage = I2C(QSFP_I2C_ADDR) QSFP_cage.bus = I2CBUSNR ret_ack, raw_ret = QSFP_cage.read_bytes(QSFP_TEMP, 2) - if (ret_ack < 1) | (raw_ret[0]=='ff'): + if (ret_ack < 1) | (raw_ret[:2]=='ff'): stri = "No QSFP module in slot {0} node {1}".format(module, node_nr) print(stri) else: ret_value=[] - ret_value.append(int(raw_ret[0],16)) - ret_value.append(int(raw_ret[1],16)) + ret_value.append(int(raw_ret[:2],16)) + ret_value.append(int(raw_ret[2:],16)) temp_in_mod = (ret_value[0] * 256 + ret_value[1]) / 256 stri = "Temperature QSFP in slot {0} node {1} is {2:3.2f} gr. C".format(module, node_nr, temp_in_mod) print(stri) ret_ack, raw_ret = QSFP_cage.read_bytes(QSFP_VOLT, 2) - ret_value.append(int(raw_ret[0],16)) - ret_value.append(int(raw_ret[1],16)) + ret_value.append(int(raw_ret[:2],16)) + ret_value.append(int(raw_ret[2:],16)) Power_in_mod = (ret_value[0] * 256 + ret_value[1]) * 0.0001 stri = "Voltage QSFP in slot {0} node {1} is {2:3.2f} V".format(module, node_nr, Power_in_mod) print(stri) @@ -148,6 +147,8 @@ else: for node_cnt in range(4): for module_cnt in range(2): read_ddr(node_nr=node_cnt,module=module_cnt) + for node_cnt in range(4): for qsfp_cnt in range(6): read_qsfp(node_nr = node_cnt, module=qsfp_cnt) - + for node_cnt in range(4): + read_pol(LOC_POWER_CORE) -- GitLab