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

Updated rd_unb2c.py with working UniBoard2_Read_LOC_PWR. Not tested on the hardware

parent aad763bf
No related branches found
No related tags found
1 merge request!2Modified the scripts to run on Raspberry Pi.
...@@ -4,10 +4,14 @@ Read Hardware info form UNB2C ...@@ -4,10 +4,14 @@ Read Hardware info form UNB2C
import sys import sys
import time import time
import os
sys.path.insert(0,'.') sys.path.insert(0,'.')
from UniBoard2_I2C import * import os
if os.name =="posix":
from I2C_serial_pi import * from I2C_serial_pi import *
else:
from I2C_serial import *
from UniBoard2_I2C import *
I2CBUSNR=3 I2CBUSNR=3
QSFP_PORT=[] QSFP_PORT=[]
...@@ -19,24 +23,30 @@ QSFP_PORT.append(0x40) ...@@ -19,24 +23,30 @@ QSFP_PORT.append(0x40)
QSFP_PORT.append(0x80) QSFP_PORT.append(0x80)
def rw_eeprom(value=0xAB): def rw_eeprom(value=0xAB):
I2C_eeprom = I2C(0x53, BUSNR=3) I2C_eeprom = I2C(0x53)
I2C_eeprom.bus = I2CBUSNR
ret_ack, ret_value = I2C_eeprom.read_bytes(0)
if ret_ack < 1:
print("no device found")
else:
I2C_eeprom.write_bytes(0x00, value) I2C_eeprom.write_bytes(0x00, value)
I2C_eeprom.read_bytes(0x00,1) ret_ack, ret_value = I2C_eeprom.read_bytes(0x00, 1)
# I2C_eeprom.write_pointer(0x00) stri = "Wrote to EEPROM: {0}, Read from EEPROM: {1} ".format(value, ret_value)
# ret_ack, ret_value = I2C_eeprom.read_last_reg(1)
if 0: #ret_ack:
stri = "EEPROM readback : {0} ".format(ret_value)
print(stri) print(stri)
else:
print("ACK nok")
def front_led(value=0xFF, ADDRESS=0x71): def front_led(value=0xFF, ADDRESS=0x71):
main_switch = I2C(ADDRESS, BUSNR=I2CBUSNR) main_switch = I2C(ADDRESS)
# main_switch.bus = I2CBUSNR main_switch.bus = I2CBUSNR
main_switch.write_pointer(0x20) #select LED main_switch.write_pointer(0x20) #select LED
front = I2C(ADDRESS=0x41, BUSNR=I2CBUSNR) if ret_ack < 1:
# front.bus = I2CBUSNR print("Main I2C switch not found")
else:
front = I2C(ADDRESS=0x41)
front.bus = I2CBUSNR
front.write_bytes(0x03, 0) front.write_bytes(0x03, 0)
if ret_ack < 1:
print("Front LED driver not found")
else:
front.write_bytes(0x01, value) front.write_bytes(0x01, value)
sleep(0.5) sleep(0.5)
for cnt in range(6): for cnt in range(6):
...@@ -46,35 +56,45 @@ def front_led(value=0xFF, ADDRESS=0x71): ...@@ -46,35 +56,45 @@ def front_led(value=0xFF, ADDRESS=0x71):
sleep(0.2) sleep(0.2)
front.write_bytes(0x01, 0xf) front.write_bytes(0x01, 0xf)
def read_pol(i2c_addr): def read_pol(i2c_addr):
LOC_PWR = I2C(i2c_addr) LOC_PWR = I2C(i2c_addr)
LOC_PWR.bus = I2CBUSNR LOC_PWR.bus = I2CBUSNR
value=[] ret_ack, ret_value = LOC_PWR.read_bytes(0)
# ret_ack,vout_mod = LOC_PWR.read_bytes(LP_VOUT_MODE, 1) if ret_ack < 1:
# ret_ack,ret_value = LOC_PWR.read_bytes(LP_VOUT, 2) print("no device found")
# stri = "POL readback {0} : ".format(ret_value) else:
# print(stri) pr_stri = "Found device at address 0x{:02x}".format(LOC_PWR.I2C_Address)
# vout = calc_lin_3bytes(ret_value, vout_mod) print(pr_stri)
# print("vout = ", vout) ret_ack,ret_value = LOC_PWR.read_bytes(LP_VOUT, 2)
# ret_ack,ret_value = LOC_PWR.read_bytes(LP_IOUT, 2) vout = calc_lin_3bytes(ret_value, vout_mod)
# iout = calc_lin_2bytes(ret_value) print("read = ", vout_mod)
# print("Output Current :",iout) ret_ack,ret_value = LOC_PWR.read_bytes(LP_IOUT, 2)
iout = calc_lin_2bytes(ret_value)
print("Output Current :",iout)
ret_ack,ret_value = LOC_PWR.read_bytes(LP_temp, 2) ret_ack,ret_value = LOC_PWR.read_bytes(LP_temp, 2)
temp = calc_lin_2bytes(ret_value) temp = calc_lin_2bytes(ret_value)
print("temperature :",temp) print("temperature :",temp)
def read_ddr(node_nr = 0, module=0): 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 main_switch.write_pointer(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 node_switch.write_pointer(0x10) #select DDR4
if ret_ack < 1:
print("Node I2C switch not found")
else:
if module==0: if module==0:
ddr_module = I2C(MB_I_TEMP_I2C_ADDR) ddr_module = I2C(MB_I_TEMP_I2C_ADDR)
else: else:
ddr_module = I2C(MB_II_TEMP_I2C_ADDR) ddr_module = I2C(MB_II_TEMP_I2C_ADDR)
ddr_module.bus = I2CBUSNR ddr_module.bus = I2CBUSNR
ret_ack,raw_ret = ddr_module.read_bytes(MB_TEMP_REG, 2) ret_ack,raw_ret = ddr_module.read_bytes(MB_TEMP_REG, 2)
if len(raw_ret) < 1: if (ret_ack < 1) | (len(raw_ret) < 1):
stri = "No DDR moduel in slot {0} node {1}".format(module, node_nr) stri = "No DDR moduel in slot {0} node {1}".format(module, node_nr)
else: else:
ret_value=[] ret_value=[]
...@@ -85,12 +105,22 @@ def read_ddr(node_nr = 0, module=0): ...@@ -85,12 +105,22 @@ def read_ddr(node_nr = 0, module=0):
print(stri) print(stri)
def read_qsfp(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 main_switch.write_pointer(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 node_switch.write_pointer(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 = I2C(QSFP_I2C_ADDR)
QSFP_cage.bus = I2CBUSNR QSFP_cage.bus = I2CBUSNR
ret_ack, raw_ret = QSFP_cage.read_bytes(QSFP_TEMP, 2) ret_ack, raw_ret = QSFP_cage.read_bytes(QSFP_TEMP, 2)
if len(raw_ret) < 1: if ret_ack < 1:
stri = "No QSFP module in slot {0} node {1}".format(module, node_nr) stri = "No QSFP module in slot {0} node {1}".format(module, node_nr)
else: else:
ret_value=[] ret_value=[]
...@@ -106,15 +136,9 @@ def read_qsfp(node_nr = 0, module=0): ...@@ -106,15 +136,9 @@ def read_qsfp(node_nr = 0, module=0):
stri = "Voltage QSFP in slot {0} node {1} is {2:3.2f} V".format(module, node_nr, Power_in_mod) stri = "Voltage QSFP in slot {0} node {1} is {2:3.2f} V".format(module, node_nr, Power_in_mod)
print(stri) print(stri)
if 0: if 0:
rw_eeprom(0xCD) rw_eeprom(0xCD)
else: else:
# main_switch= I2C(0x71)
# main_switch.bus = I2CBUSNR
# node_switch = I2C(0x72)
# node_switch.bus = I2CBUSNR
# main_switch.write_pointer(0x20) #select LED
front_led() front_led()
if 0: if 0:
for node_cnt in range(4): for node_cnt in range(4):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment