Skip to content
Snippets Groups Projects
Commit d10c9a89 authored by Gijs Schoonderbeek's avatar Gijs Schoonderbeek
Browse files

Update rd_unb2c.py + I2C_serial_PI.py now EEPROM + Frontpanel LED + Nodes QSFP...

Update rd_unb2c.py + I2C_serial_PI.py now EEPROM + Frontpanel LED + Nodes QSFP + Nodes DDR are working
parent 62afacab
Branches
No related tags found
1 merge request!2Modified the scripts to run on Raspberry Pi.
......@@ -35,7 +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 = hex(rd_value[0])[2:]
ret_value = []
for cnt in range(bytes_to_read):
ret_value.append(hex(rd_value[cnt])[2:])
ret_ack = 1
except IOError, err:
ret_ack = 0
......@@ -64,11 +66,12 @@ class I2C:
try:
bus.write_i2c_block_data(self.I2C_Address, register, [data])
ret_ack = 1
sleep(0.2)
except IOError, err:
ret_ack = 0
ret_value = 0
if DEBUG:
print("Reading error")
print("Write error")
return ret_ack
def write_pointer(self, register):
......@@ -76,11 +79,12 @@ class I2C:
try:
ret_value = bus.read_i2c_block_data(self.I2C_Address, register, 1)
ret_ack = 1
sleep(0.2)
except IOError, err:
ret_ack = 0
ret_value = 0
if DEBUG:
print("Reading error")
print("Write error")
return ret_ack
if __name__ == "__main__":
......
......@@ -32,21 +32,20 @@ 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)
value = []
ret_ack = I2C_eeprom.write_bytes(0x00, value)
# sleep(0.25)
ret_ack, ret_value = I2C_eeprom.read_bytes(0x00, 1)
print("read = ", ret_value)
stri = "Wrote to EEPROM: {0}, Read from EEPROM: {1} ".format(value, ret_value)
print(stri)
def front_led(value=0xFF):
main_switch = I2C(0x71)
main_switch.bus = I2CBUSNR
ret_ack = main_switch.write_pointer(0x20) #select LED
ret_ack = main_switch.write_bytes(0x20,0x20) #select LED
if ret_ack < 1:
print("Main I2C switch not found")
else:
front = I2C(ADDRESS=0x41)
front = I2C(0x41)
front.bus = I2CBUSNR
ret_ack = front.write_bytes(0x03, 0)
if ret_ack < 1:
......@@ -83,13 +82,13 @@ def read_pol(i2c_addr):
def read_ddr(node_nr = 0, module=0):
main_switch = I2C(0x71)
main_switch.bus = I2CBUSNR
main_switch.write_pointer(0x01<<node_nr) #select Node
ret_ack = main_switch.write_bytes(0x0, 0x01<<node_nr) #select Node
if ret_ack < 1:
print("Main I2C switch not found")
else:
node_switch = I2C(0x72)
node_switch.bus = I2CBUSNR
node_switch.write_pointer(0x10) #select DDR4
ret_ack = node_switch.write_bytes(0x0, 0x10) #select DDR4
if ret_ack < 1:
print("Node I2C switch not found")
else:
......@@ -99,12 +98,12 @@ def read_ddr(node_nr = 0, module=0):
ddr_module = I2C(MB_II_TEMP_I2C_ADDR)
ddr_module.bus = I2CBUSNR
ret_ack, raw_ret = ddr_module.read_bytes(MB_TEMP_REG, 2)
if (ret_ack < 1) | (len(raw_ret) < 1):
if ret_ack < 1:
stri = "No DDR moduel in slot {0} node {1}".format(module, node_nr)
else:
ret_value=[]
ret_value.append(int(raw_ret[0:2],16))
ret_value.append(int(raw_ret[2:4],16))
ret_value.append(int(raw_ret[0],16))
ret_value.append(int(raw_ret[1],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)
......@@ -112,40 +111,40 @@ def read_ddr(node_nr = 0, module=0):
def read_qsfp(node_nr = 0, module=0):
main_switch = I2C(0x71)
main_switch.bus = I2CBUSNR
main_switch.write_pointer(0x01<<node_nr) #select Node
ret_ack = main_switch.write_bytes(0x00, 0x01<<node_nr) #select Node
if ret_ack < 1:
print("Main I2C switch not found")
else:
node_switch = I2C(0x72)
node_switch.bus = I2CBUSNR
node_switch.write_pointer(QSFP_PORT[module]) #select QSFP cage 1
ret_ack = node_switch.write_bytes(0x0, QSFP_PORT[module]) #select QSFP cage 1
if ret_ack < 1:
print("Node I2C switch not found")
else:
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:
if (ret_ack < 1) | (raw_ret[0]=='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:2],16))
ret_value.append(int(raw_ret[2:4],16))
ret_value.append(int(raw_ret[0],16))
ret_value.append(int(raw_ret[1],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:2],16))
ret_value.append(int(raw_ret[2:4],16))
ret_value.append(int(raw_ret[0],16))
ret_value.append(int(raw_ret[1],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)
if 1:
if 0:
rw_eeprom(0xCD)
else:
front_led()
if 0:
else:
for node_cnt in range(4):
for module_cnt in range(2):
read_ddr(node_nr=node_cnt,module=module_cnt)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment