Skip to content

Commit

Permalink
Merge pull request #1158 from slaclab/TI-INA237
Browse files Browse the repository at this point in the history
Adding software support for TI INA237 & Linear LTC3815 and update to _Sa56004x.py
  • Loading branch information
ruck314 authored May 9, 2024
2 parents bd00ad1 + ab13f77 commit 265b083
Show file tree
Hide file tree
Showing 7 changed files with 366 additions and 8 deletions.
100 changes: 100 additions & 0 deletions python/surf/devices/linear/_Ltc3815.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
#-----------------------------------------------------------------------------
# This file is part of the 'SLAC Firmware Standard Library'. It is subject to
# the license terms in the LICENSE.txt file found in the top-level directory
# of this distribution and at:
# https://confluence.slac.stanford.edu/display/ppareg/LICENSE.html.
# No part of the 'SLAC Firmware Standard Library', including this file, may be
# copied, modified, propagated, or distributed except according to the terms
# contained in the LICENSE.txt file.
#-----------------------------------------------------------------------------

import pyrogue as pr

import surf.protocols.i2c

class Ltc3815(surf.protocols.i2c.PMBus):
def __init__(self, **kwargs):
super().__init__(**kwargs)

self.add(pr.LinkVariable(
name = 'Vin',
mode = 'RO',
units = 'V',
typeStr = "Float32",
disp = '{:1.3f}',
linkedGet = lambda read: self.READ_VIN.get(read=read)*4.0E-3, # Conversion factor: 4mV/Bit
dependencies = [self.READ_VIN],
))

self.add(pr.LinkVariable(
name = 'Iin',
mode = 'RO',
units = 'A',
typeStr = "Float32",
disp = '{:1.3f}',
linkedGet = lambda read: self.READ_IIN.get(read=read)*10.0E-3, # Conversion factor: 10mA/Bit
dependencies = [self.READ_IIN],
))

self.add(pr.LinkVariable(
name = 'Vout',
mode = 'RO',
units = 'V',
typeStr = "Float32",
disp = '{:1.3f}',
linkedGet = lambda read: self.READ_VOUT.get(read=read)*0.5E-3, # Conversion factor: 0.5mV/Bit
dependencies = [self.READ_VOUT],
))

self.add(pr.LinkVariable(
name = 'Iout',
mode = 'RO',
units = 'A',
typeStr = "Float32",
disp = '{:1.3f}',
linkedGet = lambda read: self.READ_IOUT.get(read=read)*10.0E-3, # Conversion factor: 10mA/Bit
dependencies = [self.READ_IOUT],
))

self.add(pr.LinkVariable(
name = "DieTempature",
mode = 'RO',
linkedGet = lambda read: self.READ_TEMPERATURE_1.get(read=read)*1.0, # Conversion factor: 1 degC/Bit
typeStr = "Float32",
disp = '{:1.3f}',
units = 'degC',
dependencies = [self.READ_TEMPERATURE_1],
))

self.add(pr.LinkVariable(
name = 'Pin',
description = 'Power Measurement',
mode = 'RO',
linkedGet = lambda read: (self.Vin.get(read=read))*(self.Iin.get(read=read)),
typeStr = "Float32",
disp = '{:1.3f}',
units = 'W',
dependencies = [self.Vin,self.Iin],
))

self.add(pr.LinkVariable(
name = 'Pout',
description = 'Power Measurement',
mode = 'RO',
linkedGet = lambda read: (self.Vout.get(read=read))*(self.Iout.get(read=read)),
typeStr = "Float32",
disp = '{:1.3f}',
units = 'W',
dependencies = [self.Vout,self.Iout],
))

self.add(pr.LinkVariable(
name = 'Peff',
description = 'Power Conversion Efficiency',
mode = 'RO',
linkedGet = lambda read: 100.0*(self.Pout.get(read=read))/(self.Pin.get(read=read)) if self.Pin.get(read=read)>0.0 else 0.0,
typeStr = "Float32",
disp = '{:1.1f}',
units = '%',
dependencies = [self.Pin,self.Pout],
))
8 changes: 4 additions & 4 deletions python/surf/devices/linear/_Ltc4151.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ def __init__(self,
units = 'A',
disp = '{:1.3f}',
dependencies = [self.SenseMsb,self.SenseLsb],
linkedGet = lambda: (int(self.SenseMsb.value()<<4)|int(self.SenseLsb.value()&0xF))*20.0E-6/self.senseRes
linkedGet = lambda read: (int(self.SenseMsb.get(read=read)<<4)|int(self.SenseLsb.get(read=read)&0xF))*20.0E-6/self.senseRes
))

self.add(pr.RemoteVariable(
Expand Down Expand Up @@ -90,7 +90,7 @@ def __init__(self,
units = 'V',
disp = '{:1.3f}',
dependencies = [self.VinMsb,self.VinLsb],
linkedGet = lambda: (int(self.VinMsb.value()<<4)|int(self.VinLsb.value()&0xF))*25.0E-3
linkedGet = lambda read: (int(self.VinMsb.get(read=read)<<4)|int(self.VinLsb.get(read=read)&0xF))*25.0E-3
))

self.add(pr.LinkVariable(
Expand All @@ -100,7 +100,7 @@ def __init__(self,
units = 'W',
disp = '{:1.3f}',
dependencies = [self.Vin,self.Iin],
linkedGet = lambda: (self.Vin.value())*(self.Iin.value())
linkedGet = lambda read: (self.Vin.get(read=read))*(self.Iin.get(read=read))
))

self.add(pr.RemoteVariable(
Expand Down Expand Up @@ -134,7 +134,7 @@ def __init__(self,
units = 'V',
disp = '{:1.3f}',
dependencies = [self.AdinMsb,self.AdinLsb],
linkedGet = lambda: (int(self.AdinMsb.value()<<4)|int(self.AdinLsb.value()&0xF))*500.0E-6
linkedGet = lambda read: (int(self.AdinMsb.get(read=read)<<4)|int(self.AdinLsb.get(read=read)&0xF))*500.0E-6
))

self.add(pr.RemoteVariable(
Expand Down
1 change: 1 addition & 0 deletions python/surf/devices/linear/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,5 @@
##############################################################################
from surf.devices.linear._Ltc2270 import *
from surf.devices.linear._Ltc2945 import *
from surf.devices.linear._Ltc3815 import *
from surf.devices.linear._Ltc4151 import *
7 changes: 6 additions & 1 deletion python/surf/devices/nxp/_Sa56004x.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,14 @@
class Sa56004x(pr.Device):
def __init__(self,
pollInterval = 1,
simpleViewList = ['enable', 'LocalTemperature', 'RemoteTemperature', 'RemoteTcritSetpoint'],
**kwargs):
super().__init__(**kwargs)

if simpleViewList is not None:
self.simpleViewList = simpleViewList[:]
self.simpleViewList.append('enable')

############################################################################

def getTempReg(var):
Expand Down Expand Up @@ -560,5 +565,5 @@ def simpleView(self):
# Hide all the variable
self.hideVariables(hidden=True)
# Then unhide the most interesting ones
vars = ['enable', 'LocalTemperature', 'RemoteTemperature']
vars = self.simpleViewList
self.hideVariables(hidden=False, variables=vars)
Loading

0 comments on commit 265b083

Please sign in to comment.