Select Git revision
UNB2_notebook.ipynb
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
APSPU_I2C.py 1.62 KiB
#******************************************#
# I2C address, registers and ports for UNB2c
# Created: 2021-05-11
#******************************************#
###################################
# General, Point of load converters
###################################
CTR_LBA = 0x3C
CTR_RCU2_A = 0x3D
CTR_RCU2_D = 0x0E
CTR_POLS = {"CTR_LBA" : 0x3C,
"CTR_RCU2_A" : 0x3D,
"CTR_RCU2_D" : 0x3E}
LP_VOUT_MODE = 0x20
LP_VOUT = 0x8B #
LP_temp = 0x8D #
LP_IOUT = 0x8C
###################################
# Central I2C Devices
###################################
EEPROM = 0x50
###################################
# FAN speed
###################################
MAX6620 = 0x52
REG_GLOBAL = 0x00
REG_TACH_1_MSP = 0x10
REG_TACH_1_LSP = 0x11
REG_TACH_2_MSP = 0x12
REG_TACH_2_LSP = 0x13
REG_TACH_3_MSP = 0x14
REG_TACH_3_LSP = 0x15
RUN_MONITOR = 0x80
######################
# Functions
######################
# Calculate floating point value according PMBus lineair
def calc_lin_2bytes(data):
expo = ((data[1] & 0xf8)>>3)
if expo > 2**4:
expo = expo-2**5
mantisse = (data[1] & 0x7)*0x100 + data[0]
output = mantisse * 2**expo
return output
# Calculate floating point value according PMBus lineair
def calc_lin_3bytes(data,mode):
expo = (mode[0] & 0x1F)
if expo > 2**4:
expo = expo - 2**5
output = (data[1]*256 + data[0]) * 2**expo
return output
def tach(tach_msb, tach_lsb):
tach_pulse_per_revolution = 2
tach = (int(tach_msb, 16)*8) + (int(tach_lsb, 16)/32)
rpm = 60/(tach*tach_pulse_per_revolution)
return rpm