diff --git a/devices/Silabs/si5345/rtl/si5345.vhd b/devices/Silabs/si5345/rtl/Si5345.vhd similarity index 80% rename from devices/Silabs/si5345/rtl/si5345.vhd rename to devices/Silabs/si5345/rtl/Si5345.vhd index 7e33398727..66052e5099 100644 --- a/devices/Silabs/si5345/rtl/si5345.vhd +++ b/devices/Silabs/si5345/rtl/Si5345.vhd @@ -1,5 +1,5 @@ ------------------------------------------------------------------------------- --- File : si5345.vhd +-- File : Si5345.vhd -- Company : SLAC National Accelerator Laboratory ------------------------------------------------------------------------------- -- Description: SPI Master Wrapper that includes a state machine for SPI paging @@ -21,7 +21,7 @@ use ieee.std_logic_unsigned.all; use work.StdRtlPkg.all; use work.AxiLitePkg.all; -entity si5345 is +entity Si5345 is generic ( TPD_G : time := 1 ns; CLK_PERIOD_G : real := (1.0/156.25E+6); @@ -41,20 +41,20 @@ entity si5345 is coreSDin : in sl; coreSDout : out sl; coreCsb : out sl); -end entity si5345; +end entity Si5345; -architecture rtl of si5345 is +architecture rtl of Si5345 is - constant DLY_C : natural := 2*integer(SPI_SCLK_PERIOD_G/CLK_PERIOD_G); -- 2 SCLK delay between SPI cycles + constant DLY_C : natural := 4*integer(SPI_SCLK_PERIOD_G/CLK_PERIOD_G); -- >= 2 SCLK delay between SPI cycles type StateType is ( IDLE_S, INIT_S, REQ_S, - ACK_S); + ACK_S, + DONE_S); type RegType is record - rst : sl; axiRd : sl; wrEn : sl; wrData : slv(15 downto 0); @@ -62,7 +62,7 @@ architecture rtl of si5345 is addr : slv(7 downto 0); page : slv(7 downto 0); timer : natural range 0 to DLY_C; - cnt : natural range 0 to 3; + cnt : natural range 0 to 4; wrArray : Slv16Array(3 downto 0); axiReadSlave : AxiLiteReadSlaveType; axiWriteSlave : AxiLiteWriteSlaveType; @@ -70,7 +70,6 @@ architecture rtl of si5345 is end record RegType; constant REG_INIT_C : RegType := ( - rst => '0', axiRd => '0', wrEn => '0', wrData => (others => '0'), @@ -87,8 +86,15 @@ architecture rtl of si5345 is signal r : RegType := REG_INIT_C; signal rin : RegType; - signal rdEn : sl; - signal rdData : slv(15 downto 0); + signal freeRunClk : sl; + signal rdEn : sl; + signal rdData : slv(15 downto 0); + + -- attribute dont_touch : string; + -- attribute dont_touch of r : signal is "TRUE"; + -- attribute dont_touch of freeRunClk : signal is "TRUE"; + -- attribute dont_touch of rdEn : signal is "TRUE"; + -- attribute dont_touch of rdData : signal is "TRUE"; begin @@ -99,8 +105,10 @@ begin -- Latch the current value v := r; - -- Reset strobes - v.wrEn := '0'; + -- Flow Control + if (rdEn = '0') then + v.wrEn := '0'; + end if; -- Increment the timer if (r.timer /= DLY_C) then @@ -114,6 +122,8 @@ begin case r.state is ---------------------------------------------------------------------- when IDLE_S => + -- Reset the timer + v.timer := 0; -- Check if write transaction if (axiStatus.writeEnable = '1') then -- Set the flag @@ -151,10 +161,10 @@ begin -- Check if write transaction if (r.axiRd = '0') then -- Write Data - v.wrArray(2) := x"40" & r.data; + v.wrArray(3) := x"40" & r.data; else -- Read Data - v.wrArray(2) := x"80" & x"FF"; + v.wrArray(3) := x"80" & x"FF"; end if; -- Next State v.state := REQ_S; @@ -165,8 +175,6 @@ begin -- Start the transaction v.wrEn := '1'; v.wrData := r.wrArray(r.cnt); - -- Increment the counter - v.cnt := r.cnt + 1; --- Next state v.state := ACK_S; end if; @@ -176,6 +184,8 @@ begin if (rdEn = '1') and (r.wrEn = '0') then -- Reset the timer v.timer := 0; + -- Increment the counter + v.cnt := r.cnt + 1; -- Check for last transaction if (r.cnt = 3) then -- Reset the counter @@ -188,15 +198,32 @@ begin axiSlaveReadResponse(v.axiReadSlave); end if; --- Next state - v.state := IDLE_S; + v.state := DONE_S; else --- Next state v.state := REQ_S; end if; end if; + ---------------------------------------------------------------------- + when DONE_S => + -- Check for min. chip select gap + if (r.timer = DLY_C) then + --- Next state + v.state := IDLE_S; + end if; ---------------------------------------------------------------------- end case; + -- Outputs + axiWriteSlave <= r.axiWriteSlave; + axiReadSlave <= r.axiReadSlave; + coreRst <= axiRst; + if (r.state = IDLE_S) then + freeRunClk <= '0'; + else + freeRunClk <= '1'; + end if; + -- Reset if (axiRst = '1') then v := REG_INIT_C; @@ -205,11 +232,6 @@ begin -- Register the variable for next clock cycle rin <= v; - -- Outputs - axiWriteSlave <= r.axiWriteSlave; - axiReadSlave <= r.axiReadSlave; - coreRst <= (r.rst or axiRst); - end process comb; seq : process (axiClk) is @@ -229,16 +251,17 @@ begin CLK_PERIOD_G => CLK_PERIOD_G, SPI_SCLK_PERIOD_G => SPI_SCLK_PERIOD_G) port map ( - clk => axiClk, - sRst => axiRst, - chipSel => "0", - wrEn => r.wrEn, - wrData => r.wrData, - rdEn => rdEn, - rdData => rdData, - spiCsL(0) => coreCsb, - spiSclk => coreSclk, - spiSdi => coreSDout, - spiSdo => coreSDin); + clk => axiClk, + sRst => axiRst, + chipSel => "0", + freeRunClk => freeRunClk, + wrEn => r.wrEn, + wrData => r.wrData, + rdEn => rdEn, + rdData => rdData, + spiCsL(0) => coreCsb, + spiSclk => coreSclk, + spiSdi => coreSDout, + spiSdo => coreSDin); end architecture rtl; diff --git a/protocols/spi/rtl/SpiMaster.vhd b/protocols/spi/rtl/SpiMaster.vhd index fa8b35afae..22233a0e28 100644 --- a/protocols/spi/rtl/SpiMaster.vhd +++ b/protocols/spi/rtl/SpiMaster.vhd @@ -31,21 +31,22 @@ entity SpiMaster is SPI_SCLK_PERIOD_G : real := 1.0E-6); -- 1 MHz port ( --Global Signals - clk : in sl; - sRst : in sl; + clk : in sl; + sRst : in sl; -- Parallel interface - chipSel : in slv(log2(NUM_CHIPS_G)-1 downto 0); - wrEn : in sl; - wrData : in slv(DATA_SIZE_G-1 downto 0); - dataSize : in slv(log2(DATA_SIZE_G)-1 downto 0) := toSlv(DATA_SIZE_G-1, log2(DATA_SIZE_G)); - rdEn : out sl; - rdData : out slv(DATA_SIZE_G-1 downto 0); + freeRunClk : in sl := '0'; + chipSel : in slv(log2(NUM_CHIPS_G)-1 downto 0); + wrEn : in sl; + wrData : in slv(DATA_SIZE_G-1 downto 0); + dataSize : in slv(log2(DATA_SIZE_G)-1 downto 0) := toSlv(DATA_SIZE_G-1, log2(DATA_SIZE_G)); + rdEn : out sl; + rdData : out slv(DATA_SIZE_G-1 downto 0); shiftCount : out slv(bitSize(DATA_SIZE_G)-1 downto 0); --SPI interface - spiCsL : out slv(NUM_CHIPS_G-1 downto 0); - spiSclk : out sl; - spiSdi : out sl; - spiSdo : in sl); + spiCsL : out slv(NUM_CHIPS_G-1 downto 0); + spiSclk : out sl; + spiSdi : out sl; + spiSdo : in sl); end SpiMaster; architecture rtl of SpiMaster is @@ -57,6 +58,7 @@ architecture rtl of SpiMaster is -- Types type StateType is ( IDLE_S, + FREE_RUNNING_CLK_S, SHIFT_S, SAMPLE_S, DONE_S); @@ -94,101 +96,150 @@ begin spiSdoRes <= to_x01z(spiSdo); - comb : process (chipSel, dataSize, r, sRst, spiSdoRes, wrData, wrEn) is + comb : process (chipSel, dataSize, freeRunClk, r, sRst, spiSdoRes, wrData, + wrEn) is variable v : RegType; begin + -- Latch the current value v := r; + -- State Machine case (r.state) is + ---------------------------------------------------------------------- when IDLE_S => - + -- Reset the signals v.spiSclk := CPOL_G; v.spiSdi := '0'; v.dataCounter := (others => '0'); v.sclkCounter := (others => '0'); v.rdEn := '1'; -- rdEn always valid between txns, indicates ready for next txn - + -- Check for the start of a transaction if (wrEn = '1') then + -- Setup for the SPI transaction v.rdEn := '0'; v.wrData := wrData; v.rdData := (others => '0'); v.spiCsL := not (decode(chipSel)(NUM_CHIPS_G-1 downto 0)); - + -- Check if rising edge sampling if (CPHA_G = '0') then -- Sample on first sclk edge so shift here before that happens v.spiSdi := wrData(DATA_SIZE_G-1); v.wrData := wrData(DATA_SIZE_G-2 downto 0) & '0'; + -- Next state v.state := SAMPLE_S; else + -- Next state v.state := SHIFT_S; end if; + -- Check if free running the SCLK between commands + elsif (freeRunClk = '1') then + -- Next state + v.state := FREE_RUNNING_CLK_S; end if; - + ---------------------------------------------------------------------- + when FREE_RUNNING_CLK_S => + -- Wait half a clock period then shift out the next data bit + v.sclkCounter := r.sclkCounter + 1; + -- Check for max count + if (r.sclkCounter = SPI_CLK_PERIOD_DIV2_CYCLES_C) then + -- Reset the counter + v.sclkCounter := (others => '0'); + -- Toggle the clock + v.spiSclk := not(r.spiSclk); + -- Check if next cycle in phase of IDLE + if (v.spiSclk = CPOL_G) then + -- Next state + v.state := IDLE_S; + end if; + end if; + ---------------------------------------------------------------------- when SHIFT_S => -- Wait half a clock period then shift out the next data bit v.sclkCounter := r.sclkCounter + 1; + -- Check for max count if (r.sclkCounter = SPI_CLK_PERIOD_DIV2_CYCLES_C) then + -- Reset the counter v.sclkCounter := (others => '0'); - v.spiSclk := not r.spiSclk; + -- Toggle the clock + v.spiSclk := not(r.spiSclk); + -- Shift the data v.spiSdi := r.wrData(DATA_SIZE_G-1); v.wrData := r.wrData(DATA_SIZE_G-2 downto 0) & '0'; + -- Next state (default) v.state := SAMPLE_S; - + -- Check if rising edge sampling if (CPHA_G = '0') then + -- Increment the counter v.dataCounter := r.dataCounter + 1; + -- Check if last bit sent if (r.dataCounter = dataSize) then + -- Next state v.state := DONE_S; end if; end if; end if; - + ---------------------------------------------------------------------- when SAMPLE_S => -- Wait half a clock period then sample the next data bit v.sclkCounter := r.sclkCounter + 1; + -- Check for max count if (r.sclkCounter = SPI_CLK_PERIOD_DIV2_CYCLES_C) then + -- Reset the counter v.sclkCounter := (others => '0'); - v.spiSclk := not r.spiSclk; + -- Toggle the clock + v.spiSclk := not(r.spiSclk); + -- Shift the data v.rdData := r.rdData(DATA_SIZE_G-2 downto 0) & spiSdoRes; + -- Next state (default) v.state := SHIFT_S; - + -- Check if falling edge sampling if (CPHA_G = '1') then + -- Increment the counter v.dataCounter := r.dataCounter + 1; + -- Check if last bit sent if (r.dataCounter = dataSize) then + -- Next state v.state := DONE_S; end if; end if; end if; - + ---------------------------------------------------------------------- when DONE_S => -- Assert rdEn after half a SPI clk period -- Go back to idle after one SPI clk period -- Otherwise back to back operations happen too fast. v.sclkCounter := r.sclkCounter + 1; + -- Check for max count if (r.sclkCounter = SPI_CLK_PERIOD_DIV2_CYCLES_C) then + -- Reset the counter v.sclkCounter := (others => '0'); + -- De-assert the chip select bus v.spiCsL := (others => '1'); - + -- Check if falling edge sampling if (r.spiCsL = slvOne(NUM_CHIPS_G)) then + -- Next state v.state := IDLE_S; end if; end if; - when others => null; + ---------------------------------------------------------------------- end case; + -- Outputs + spiSclk <= r.spiSclk; + spiSdi <= r.spiSdi; + spiCsL <= r.spiCsL; + rdEn <= r.rdEn; + rdData <= r.rdData; + shiftCount <= r.dataCounter; + + -- Reset if (sRst = '1') then v := REG_INIT_C; end if; + -- Register the variable for next clock cycle rin <= v; - spiSclk <= r.spiSclk; - spiSdi <= r.spiSdi; - spiCsL <= r.spiCsL; - - rdEn <= r.rdEn; - rdData <= r.rdData; - shiftCount <= r.dataCounter; - end process comb; seq : process (clk) is diff --git a/python/surf/axi/_AxiVersion.py b/python/surf/axi/_AxiVersion.py index 5cd894b82c..46015f146b 100644 --- a/python/surf/axi/_AxiVersion.py +++ b/python/surf/axi/_AxiVersion.py @@ -63,7 +63,7 @@ def __init__( bitOffset = 0x00, base = pr.UInt, mode = 'RW', - disp = '{:#08x}' + disp = '{:#08x}', )) self.add(pr.RemoteVariable( @@ -77,14 +77,16 @@ def __init__( mode = 'RO', disp = '{:d}', units = 'seconds', - pollInterval = 1 + pollInterval = 1, )) self.add(pr.LinkVariable( - name = 'UpTime', - mode = 'RO', + name = 'UpTime', + description = 'Time since power up or last firmware reload', + mode = 'RO', dependencies = [self.UpTimeCnt], - linkedGet = lambda: str(datetime.timedelta(seconds=self.UpTimeCnt.value())) + linkedGet = lambda: str(datetime.timedelta(seconds=self.UpTimeCnt.value())), + units = 'HH:MM:SS', )) self.add(pr.RemoteVariable( @@ -148,6 +150,7 @@ def UserRst(): bitOffset = 0x00, base = pr.UInt, mode = 'RO', + hidden = True, )) self.addRemoteVariables( @@ -190,7 +193,7 @@ def UserRst(): mode = 'RO', dependencies = [self.GitHash], disp = '{:07x}', - linkedGet = lambda: self.GitHash.value() >> 132 + linkedGet = lambda: self.GitHash.value() >> 132, )) self.add(pr.RemoteVariable( diff --git a/python/surf/devices/linear/_Ltc4151.py b/python/surf/devices/linear/_Ltc4151.py index c368caca84..fe7b2261f8 100644 --- a/python/surf/devices/linear/_Ltc4151.py +++ b/python/surf/devices/linear/_Ltc4151.py @@ -57,7 +57,7 @@ def __init__(self, self.add(pr.LinkVariable( name = 'Iin', - description = 'Current Measurment', + description = 'Current Measurement', mode = 'RO', units = 'A', disp = '{:1.3f}', @@ -91,7 +91,7 @@ def __init__(self, self.add(pr.LinkVariable( name = 'Vin', - description = 'Voltage Measurment', + description = 'Voltage Measurement', mode = 'RO', units = 'V', disp = '{:1.3f}', @@ -101,7 +101,7 @@ def __init__(self, self.add(pr.LinkVariable( name = 'Pin', - description = 'Power Measurment', + description = 'Power Measurement', mode = 'RO', units = 'W', disp = '{:1.3f}', @@ -135,7 +135,7 @@ def __init__(self, self.add(pr.LinkVariable( name = 'ADC Input', - description = 'ADC Voltage Measurment', + description = 'ADC Voltage Measurement', mode = 'RO', units = 'V', disp = '{:1.3f}', @@ -151,5 +151,6 @@ def __init__(self, bitOffset = 0, base = pr.UInt, mode = 'RW', + hidden = True, )) \ No newline at end of file diff --git a/python/surf/devices/nxp/_Sa56004x.py b/python/surf/devices/nxp/_Sa56004x.py index 4c39db6ee9..f0d14947f9 100644 --- a/python/surf/devices/nxp/_Sa56004x.py +++ b/python/surf/devices/nxp/_Sa56004x.py @@ -559,4 +559,13 @@ def addBoolPair(name,description,rdOffset,wrOffset,bitOffset): )) ############################################################################ - \ No newline at end of file + + # Default to simple view + self.simpleView() + + def simpleView(self): + # Hide all the variable + self.hideVariables(hidden=True) + # Then unhide the most interesting ones + vars = ['enable', 'LocalTemperature', 'RemoteTemperature'] + self.hideVariables(hidden=False, variables=vars) \ No newline at end of file diff --git a/python/surf/devices/silabs/_Si5345.py b/python/surf/devices/silabs/_Si5345.py index 87375465e8..0db0982a41 100644 --- a/python/surf/devices/silabs/_Si5345.py +++ b/python/surf/devices/silabs/_Si5345.py @@ -20,15 +20,84 @@ import pyrogue as pr import csv +import click class Si5345(pr.Device): def __init__(self, - name = "Si5345", - description = "Si5345", - simpleDisply = True, + name = "Si5345", + description = "Si5345", + simpleDisplay = True, + advanceUser = False, **kwargs): super().__init__(name=name, description=description, size=(0x1000<<2), **kwargs) + self.add(pr.LocalVariable( + name = "CsvFilePath", + description = "Used if command's argument is empty", + mode = "RW", + value = "", + )) + + ############################## + # Commands + ############################## + @self.command(value='',description="Load the .CSV from CBPro.",) + def LoadCsvFile(arg): + # Check if non-empty argument + if (arg != ""): + path = arg + else: + # Use the variable path instead + path = self.CsvFilePath.get() + + # Print the path that was used + click.secho( ('Si5345.LoadCsvFile(): %s' % path ), fg='green') + + # Power down during the configuration load + self.Page0.PDN.set(True) + + # Open the .CSV file + with open(path) as csvfile: + reader = csv.reader(csvfile, delimiter=',', quoting=csv.QUOTE_NONE) + # Loop through the rows in the CSV file + for row in reader: + if (row[0]!='Address'): + self._rawWrite( + offset = (int(row[0],16)<<2), + data = int(row[1],16), + ) + + # Update local RemoteVariables and verify conflagration + self.readBlocks(recurse=True) + self.checkBlocks(recurse=True) + + # Power Up after the configuration load + self.Page0.PDN.set(False) + + # Clear the internal error flags + self.Page0.ClearIntErrFlag() + + ############################## + # Devices + ############################## + self.add(Si5345Page0(offset=0x0,simpleDisplay=simpleDisplay,expand=False)) + self.add(Si5345Page1(offset=0x0,simpleDisplay=simpleDisplay,expand=False,hidden=advanceUser)) + self.add(Si5345Page2(offset=0x0,simpleDisplay=simpleDisplay,expand=False,hidden=advanceUser)) + self.add(Si5345Page3(offset=0x0,simpleDisplay=simpleDisplay,expand=False,hidden=advanceUser)) + self.add(Si5345Page4(offset=0x0,simpleDisplay=simpleDisplay,expand=False,hidden=advanceUser)) + self.add(Si5345Page5(offset=0x0,simpleDisplay=simpleDisplay,expand=False,hidden=advanceUser)) + self.add(Si5345Page9(offset=0x0,simpleDisplay=simpleDisplay,expand=False,hidden=advanceUser)) + self.add(Si5345PageA(offset=0x0,simpleDisplay=simpleDisplay,expand=False,hidden=advanceUser)) + self.add(Si5345PageB(offset=0x0,simpleDisplay=simpleDisplay,expand=False,hidden=advanceUser)) + +class Si5345Page0(pr.Device): + def __init__(self, + name = "Page0", + description = "Alarms, interrupts, reset, other configuration", + simpleDisplay = True, + **kwargs): + super().__init__(name=name, description=description, **kwargs) + ############################## # 15.1 Page 0 Registers Si5345 ############################## @@ -106,7 +175,7 @@ def __init__(self, description = 'Device temperature grading, 0 = Industrial (40 C to 85 C) ambient conditions', offset = (0x0009 << 2), bitSize = 8, - mode = 'RW', + mode = 'RO', )) self.add(pr.RemoteVariable( @@ -114,7 +183,7 @@ def __init__(self, description = 'Package ID, 0 = 9x9 mm 64 QFN', offset = (0x000A << 2), bitSize = 8, - mode = 'RW', + mode = 'RO', )) self.add(pr.RemoteVariable( @@ -123,7 +192,8 @@ def __init__(self, offset = (0x000B << 2), bitSize = 7, mode = 'RO', - )) + hidden = simpleDisplay, + )) self.add(pr.RemoteVariable( name = 'SYSINCAL', @@ -133,6 +203,7 @@ def __init__(self, bitSize = 1, bitOffset = 0, mode = 'RO', + pollInterval = 1, )) self.add(pr.RemoteVariable( @@ -143,6 +214,7 @@ def __init__(self, bitSize = 1, bitOffset = 1, mode = 'RO', + pollInterval = 1, )) self.add(pr.RemoteVariable( @@ -153,7 +225,8 @@ def __init__(self, bitSize = 1, bitOffset = 3, mode = 'RO', - )) + pollInterval = 1, + )) self.add(pr.RemoteVariable( name = 'SMBUS_TIMEOUT', @@ -163,7 +236,8 @@ def __init__(self, bitSize = 1, bitOffset = 5, mode = 'RO', - )) + hidden = simpleDisplay, + )) self.add(pr.RemoteVariable( name = 'LOS', @@ -172,7 +246,8 @@ def __init__(self, bitSize = 4, bitOffset = 0, mode = 'RO', - )) + pollInterval = 1, + )) self.add(pr.RemoteVariable( name = 'OOF', @@ -181,7 +256,8 @@ def __init__(self, bitSize = 4, bitOffset = 4, mode = 'RO', - )) + pollInterval = 1, + )) self.add(pr.RemoteVariable( name = 'LOL', @@ -191,7 +267,8 @@ def __init__(self, bitSize = 1, bitOffset = 1, mode = 'RO', - )) + pollInterval = 1, + )) self.add(pr.RemoteVariable( name = 'HOLD', @@ -201,7 +278,8 @@ def __init__(self, bitSize = 1, bitOffset = 5, mode = 'RO', - )) + pollInterval = 1, + )) self.add(pr.RemoteVariable( name = 'CAL_PLL', @@ -211,8 +289,17 @@ def __init__(self, bitSize = 1, bitOffset = 5, mode = 'RO', - )) + pollInterval = 1, + )) + self.add(pr.RemoteCommand( + name = 'ClearIntErrFlag', + description = 'command to clears the internal error flags', + offset = (0x0011 << 2), + bitSize = 1, + function = lambda cmd: cmd.post(0), + )) + self.add(pr.RemoteVariable( name = 'SYSINCAL_FLG', description = 'Sticky version of SYSINCAL. Write a 0 to this bit to clear.', @@ -220,8 +307,9 @@ def __init__(self, base = pr.Bool, bitSize = 1, bitOffset = 0, - mode = 'RW', - )) + mode = 'RO', + pollInterval = 1, + )) self.add(pr.RemoteVariable( name = 'LOSXAXB_FLG', @@ -230,8 +318,9 @@ def __init__(self, base = pr.Bool, bitSize = 1, bitOffset = 1, - mode = 'RW', - )) + mode = 'RO', + pollInterval = 1, + )) self.add(pr.RemoteVariable( name = 'XAXB_ERR_FLG', @@ -240,8 +329,9 @@ def __init__(self, base = pr.Bool, bitSize = 1, bitOffset = 3, - mode = 'RW', - )) + mode = 'RO', + pollInterval = 1, + )) self.add(pr.RemoteVariable( name = 'SMBUS_TIMEOUT_FLG', @@ -250,8 +340,9 @@ def __init__(self, base = pr.Bool, bitSize = 1, bitOffset = 5, - mode = 'RW', - )) + mode = 'RO', + hidden = simpleDisplay, + )) self.add(pr.RemoteVariable( name = 'LOS_FLG', @@ -259,7 +350,7 @@ def __init__(self, offset = (0x0012 << 2), bitSize = 4, bitOffset = 0, - mode = 'RW', + mode = 'RO', )) self.add(pr.RemoteVariable( @@ -268,7 +359,7 @@ def __init__(self, offset = (0x0012 << 2), bitSize = 4, bitOffset = 4, - mode = 'RW', + mode = 'RO', )) self.add(pr.RemoteVariable( @@ -278,7 +369,7 @@ def __init__(self, base = pr.Bool, bitSize = 1, bitOffset = 1, - mode = 'RW', + mode = 'RO', )) self.add(pr.RemoteVariable( @@ -288,7 +379,7 @@ def __init__(self, base = pr.Bool, bitSize = 1, bitOffset = 5, - mode = 'RW', + mode = 'RO', )) self.add(pr.RemoteVariable( @@ -298,7 +389,7 @@ def __init__(self, base = pr.Bool, bitSize = 1, bitOffset = 5, - mode = 'RW', + mode = 'RO', )) self.add(pr.RemoteVariable( @@ -309,7 +400,7 @@ def __init__(self, bitSize = 1, bitOffset = 1, mode = 'RW', - hidden = simpleDisply, + hidden = simpleDisplay, )) self.add(pr.RemoteVariable( @@ -320,7 +411,8 @@ def __init__(self, bitSize = 1, bitOffset = 0, mode = 'RW', - )) + hidden = simpleDisplay, + )) self.add(pr.RemoteVariable( name = 'LOSXAXB_INTR_MSK', @@ -330,7 +422,8 @@ def __init__(self, bitSize = 1, bitOffset = 1, mode = 'RW', - )) + hidden = simpleDisplay, + )) self.add(pr.RemoteVariable( name = 'SMBUS_TIMEOUT_FLG_MSK', @@ -340,6 +433,7 @@ def __init__(self, bitSize = 1, bitOffset = 5, mode = 'RW', + hidden = simpleDisplay, )) self.add(pr.RemoteVariable( @@ -361,7 +455,8 @@ def __init__(self, bitSize = 4, bitOffset = 0, mode = 'RW', - )) + hidden = simpleDisplay, + )) self.add(pr.RemoteVariable( name = 'OOF_INTR_MSK', @@ -370,7 +465,8 @@ def __init__(self, bitSize = 4, bitOffset = 4, mode = 'RW', - )) + hidden = simpleDisplay, + )) self.add(pr.RemoteVariable( name = 'LOL_INTR_MSK', @@ -380,6 +476,7 @@ def __init__(self, bitSize = 1, bitOffset = 1, mode = 'RW', + hidden = simpleDisplay, )) self.add(pr.RemoteVariable( @@ -390,7 +487,8 @@ def __init__(self, bitSize = 1, bitOffset = 5, mode = 'RW', - )) + hidden = simpleDisplay, + )) self.add(pr.RemoteVariable( name = 'CAL_INTR_MSK', @@ -400,7 +498,8 @@ def __init__(self, bitSize = 1, bitOffset = 5, mode = 'RW', - )) + hidden = simpleDisplay, + )) self.add(pr.RemoteCommand( name = "SOFT_RST_ALL", @@ -423,24 +522,24 @@ def __init__(self, )) self.add(pr.RemoteCommand( - name = "FINC", - description = "1 a rising edge will cause the selected MultiSynth to increment the output frequency by the Nx_FSTEPW parameter. See registers 0x03390x0358", - offset = (0x001D << 2), - bitSize = 1, - bitOffset = 0, - # hidden = True, - function = pr.BaseCommand.toggle, - )) + name = "FINC", + description = "1 a rising edge will cause the selected MultiSynth to increment the output frequency by the Nx_FSTEPW parameter. See registers 0x03390x0358", + offset = (0x001D << 2), + bitSize = 1, + bitOffset = 0, + function = pr.BaseCommand.toggle, + hidden = simpleDisplay, + )) self.add(pr.RemoteCommand( - name = "FDEC", - description = "1 a rising edge will cause the selected MultiSynth to decrement the output frequency by the Nx_FSTEPW parameter. See registers 0x03390x0358", - offset = (0x001D << 2), - bitSize = 1, - bitOffset = 1, - # hidden = True, - function = pr.BaseCommand.toggle, - )) + name = "FDEC", + description = "1 a rising edge will cause the selected MultiSynth to decrement the output frequency by the Nx_FSTEPW parameter. See registers 0x03390x0358", + offset = (0x001D << 2), + bitSize = 1, + bitOffset = 1, + function = pr.BaseCommand.toggle, + hidden = simpleDisplay, + )) self.add(pr.RemoteVariable( name = 'PDN', @@ -468,7 +567,6 @@ def __init__(self, offset = (0x001E << 2), bitSize = 1, bitOffset = 2, - # hidden = True, function = pr.BaseCommand.toggle, )) @@ -480,6 +578,7 @@ def __init__(self, bitSize = 1, bitOffset = 3, mode = 'RW', + hidden = simpleDisplay, )) self.add(pr.RemoteVariable( @@ -490,7 +589,7 @@ def __init__(self, bitSize = 1, bitOffset = 5, mode = 'RW', - hidden = simpleDisply, + hidden = simpleDisplay, )) self.add(pr.RemoteVariable( @@ -535,6 +634,7 @@ def __init__(self, offset = ((0x002E+(2*i)) << 2), bitSize = 8, mode = 'RW', + hidden = simpleDisplay, )) self.add(pr.RemoteVariable( name = f'LOS_TRG_THR_HI[{i}]', @@ -542,7 +642,9 @@ def __init__(self, offset = ((0x002F+(2*i)) << 2), bitSize = 8, mode = 'RW', - )) + hidden = simpleDisplay, + )) + for i in range(4): self.add(pr.RemoteVariable( @@ -551,14 +653,18 @@ def __init__(self, offset = ((0x0036+(2*i)) << 2), bitSize = 8, mode = 'RW', + hidden = simpleDisplay, )) + self.add(pr.RemoteVariable( name = f'LOS_CLR_THR_HI[{i}]', description = 'Clear Threshold 16-bit Threshold Value', offset = ((0x0037+(2*i)) << 2), bitSize = 8, mode = 'RW', - )) + hidden = simpleDisplay, + )) + self.add(pr.RemoteVariable( name = 'OOF_EN', @@ -600,7 +706,7 @@ def __init__(self, offset = ((0x0041+i) << 2), bitSize = 5, mode = 'RW', - hidden = simpleDisply, + hidden = simpleDisplay, )) self.add(pr.RemoteVariable( @@ -609,7 +715,7 @@ def __init__(self, offset = (0x0045 << 2), bitSize = 5, mode = 'RW', - hidden = simpleDisply, + hidden = simpleDisplay, )) for i in range(4): @@ -619,7 +725,8 @@ def __init__(self, offset = ((0x0046+i) << 2), bitSize = 8, mode = 'RW', - )) + hidden = simpleDisplay, + )) for i in range(4): self.add(pr.RemoteVariable( @@ -628,7 +735,8 @@ def __init__(self, offset = ((0x004A+i) << 2), bitSize = 8, mode = 'RW', - )) + hidden = simpleDisplay, + )) self.add(pr.RemoteVariable( name = 'OOF_DETWIN_SEL[0]', @@ -637,7 +745,7 @@ def __init__(self, bitSize = 3, bitOffset = 0, mode = 'RW', - hidden = simpleDisply, + hidden = simpleDisplay, )) self.add(pr.RemoteVariable( @@ -647,7 +755,7 @@ def __init__(self, bitSize = 3, bitOffset = 4, mode = 'RW', - hidden = simpleDisply, + hidden = simpleDisplay, )) self.add(pr.RemoteVariable( @@ -657,7 +765,7 @@ def __init__(self, bitSize = 3, bitOffset = 0, mode = 'RW', - hidden = simpleDisply, + hidden = simpleDisplay, )) self.add(pr.RemoteVariable( @@ -667,7 +775,7 @@ def __init__(self, bitSize = 3, bitOffset = 4, mode = 'RW', - hidden = simpleDisply, + hidden = simpleDisplay, )) self.add(pr.RemoteVariable( @@ -677,7 +785,7 @@ def __init__(self, bitSize = 4, bitOffset = 0, mode = 'RW', - hidden = simpleDisply, + hidden = simpleDisplay, )) for i in range(4): @@ -687,7 +795,8 @@ def __init__(self, offset = ((0x0051+i) << 2), bitSize = 4, mode = 'RW', - )) + hidden = simpleDisplay, + )) for i in range(4): self.add(pr.RemoteVariable( @@ -696,7 +805,8 @@ def __init__(self, offset = ((0x0055+i) << 2), bitSize = 4, mode = 'RW', - )) + hidden = simpleDisplay, + )) for i in range(4): self.add(pr.RemoteVariable( @@ -706,7 +816,7 @@ def __init__(self, bitSize = 2, bitOffset = (2*i), mode = 'RW', - hidden = simpleDisply, + hidden = simpleDisplay, )) for i in range(4): @@ -716,7 +826,7 @@ def __init__(self, offset = ((0x005A+i) << 2), bitSize = 8, mode = 'RW', - hidden = simpleDisply, + hidden = simpleDisplay, )) for i in range(4): @@ -726,7 +836,7 @@ def __init__(self, offset = ((0x005E+i) << 2), bitSize = 8, mode = 'RW', - hidden = simpleDisply, + hidden = simpleDisplay, )) for i in range(4): @@ -736,7 +846,7 @@ def __init__(self, offset = ((0x0062+i) << 2), bitSize = 8, mode = 'RW', - hidden = simpleDisply, + hidden = simpleDisplay, )) for i in range(4): @@ -746,7 +856,7 @@ def __init__(self, offset = ((0x0066+i) << 2), bitSize = 8, mode = 'RW', - hidden = simpleDisply, + hidden = simpleDisplay, )) self.add(pr.RemoteVariable( @@ -766,7 +876,7 @@ def __init__(self, bitSize = 4, bitOffset = 4, mode = 'RW', - hidden = simpleDisply, + hidden = simpleDisplay, )) self.add(pr.RemoteVariable( @@ -776,7 +886,7 @@ def __init__(self, bitSize = 2, bitOffset = 2, mode = 'RW', - hidden = simpleDisply, + hidden = simpleDisplay, )) self.add(pr.RemoteVariable( @@ -786,7 +896,7 @@ def __init__(self, bitSize = 4, bitOffset = 4, mode = 'RW', - hidden = simpleDisply, + hidden = simpleDisplay, )) self.add(pr.RemoteVariable( @@ -796,7 +906,7 @@ def __init__(self, bitSize = 4, bitOffset = 4, mode = 'RW', - hidden = simpleDisply, + hidden = simpleDisplay, )) self.add(pr.RemoteVariable( @@ -825,7 +935,7 @@ def __init__(self, bitSize = 2, bitOffset = 2, mode = 'RW', - hidden = simpleDisply, + hidden = simpleDisplay, )) self.add(pr.RemoteVariable( @@ -889,7 +999,7 @@ def __init__(self, offset = ((0x00A9+i) << 2), bitSize = 8, mode = 'RW', - hidden = simpleDisply, + hidden = simpleDisplay, )) self.add(pr.RemoteVariable( @@ -943,7 +1053,7 @@ def __init__(self, offset = ((0x00EA+i) << 2), bitSize = 8, mode = 'RW', - hidden = simpleDisply, + hidden = simpleDisplay, )) self.add(pr.RemoteVariable( @@ -954,7 +1064,7 @@ def __init__(self, bitSize = 1, bitOffset = 0, mode = 'RW', - hidden = simpleDisply, + hidden = simpleDisplay, )) self.add(pr.RemoteVariable( @@ -965,7 +1075,7 @@ def __init__(self, bitSize = 1, bitOffset = 1, mode = 'RW', - hidden = simpleDisply, + hidden = simpleDisplay, )) self.add(pr.RemoteVariable( @@ -976,7 +1086,7 @@ def __init__(self, bitSize = 1, bitOffset = 2, mode = 'RO', - hidden = simpleDisply, + hidden = simpleDisplay, )) self.add(pr.RemoteVariable( @@ -987,7 +1097,7 @@ def __init__(self, bitSize = 1, bitOffset = 0, mode = 'RO', - hidden = simpleDisply, + hidden = simpleDisplay, )) self.add(pr.RemoteVariable( @@ -998,7 +1108,7 @@ def __init__(self, bitSize = 1, bitOffset = 1, mode = 'RO', - hidden = simpleDisply, + hidden = simpleDisplay, )) self.add(pr.RemoteVariable( @@ -1009,7 +1119,7 @@ def __init__(self, bitSize = 1, bitOffset = 2, mode = 'RO', - hidden = simpleDisply, + hidden = simpleDisplay, )) self.add(pr.RemoteVariable( @@ -1020,7 +1130,7 @@ def __init__(self, bitSize = 1, bitOffset = 4, mode = 'RO', - hidden = simpleDisply, + hidden = simpleDisplay, )) self.add(pr.RemoteVariable( @@ -1031,7 +1141,7 @@ def __init__(self, bitSize = 1, bitOffset = 5, mode = 'RO', - hidden = simpleDisply, + hidden = simpleDisplay, )) self.add(pr.RemoteVariable( @@ -1041,7 +1151,7 @@ def __init__(self, bitSize = 4, bitOffset = 0, mode = 'RO', - hidden = simpleDisply, + hidden = simpleDisplay, )) self.add(pr.RemoteVariable( @@ -1051,7 +1161,7 @@ def __init__(self, bitSize = 4, bitOffset = 4, mode = 'RO', - hidden = simpleDisply, + hidden = simpleDisplay, )) self.add(pr.RemoteVariable( @@ -1062,7 +1172,7 @@ def __init__(self, bitSize = 1, bitOffset = 1, mode = 'RO', - hidden = simpleDisply, + hidden = simpleDisplay, )) self.add(pr.RemoteVariable( @@ -1073,7 +1183,7 @@ def __init__(self, bitSize = 1, bitOffset = 5, mode = 'RO', - hidden = simpleDisply, + hidden = simpleDisplay, )) self.add(pr.RemoteVariable( @@ -1084,7 +1194,15 @@ def __init__(self, bitOffset = 0, mode = 'RO', )) - + +class Si5345Page1(pr.Device): + def __init__(self, + name = "Page1", + description = "Clock output configuration", + simpleDisplay = True, + **kwargs): + super().__init__(name=name, description=description, **kwargs) + ############################## # 15.1 Page 1 Registers Si5345 ############################## @@ -1264,7 +1382,7 @@ def __init__(self, bitSize = 8, bitOffset = 0, mode = 'RW', - hidden = simpleDisply, + hidden = simpleDisplay, )) self.add(pr.RemoteVariable( @@ -1274,7 +1392,7 @@ def __init__(self, bitSize = 4, bitOffset = 0, mode = 'RW', - hidden = simpleDisply, + hidden = simpleDisplay, )) self.add(pr.RemoteVariable( @@ -1285,7 +1403,7 @@ def __init__(self, bitSize = 1, bitOffset = 1, mode = 'RW', - hidden = simpleDisply, + hidden = simpleDisplay, )) self.add(pr.RemoteVariable( @@ -1296,7 +1414,7 @@ def __init__(self, bitSize = 1, bitOffset = 5, mode = 'RW', - hidden = simpleDisply, + hidden = simpleDisplay, )) self.add(pr.RemoteVariable( @@ -1317,7 +1435,7 @@ def __init__(self, bitSize = 1, bitOffset = 7, mode = 'RW', - hidden = simpleDisply, + hidden = simpleDisplay, )) self.add(pr.RemoteVariable( @@ -1338,7 +1456,7 @@ def __init__(self, bitSize = 1, bitOffset = 5, mode = 'RW', - hidden = simpleDisply, + hidden = simpleDisplay, )) self.add(pr.RemoteVariable( @@ -1351,6 +1469,14 @@ def __init__(self, mode = 'RW', )) +class Si5345Page2(pr.Device): + def __init__(self, + name = "Page2", + description = "P,R dividers, scratch area", + simpleDisplay = True, + **kwargs): + super().__init__(name=name, description=description, **kwargs) + ############################## # 15.1 Page 2 Registers Si5345 ############################## @@ -1596,7 +1722,7 @@ def __init__(self, offset = ((0x026B+i) << 2), bitSize = 8, mode = 'RW', - hidden = simpleDisply, + hidden = simpleDisplay, )) for i in range(8): @@ -1606,7 +1732,7 @@ def __init__(self, offset = ((0x0278+i) << 2), bitSize = 8, mode = 'RW', - hidden = simpleDisply, + hidden = simpleDisplay, )) self.add(pr.RemoteVariable( @@ -1634,7 +1760,7 @@ def __init__(self, offset = ((0x028A+i) << 2), bitSize = 5, mode = 'RW', - hidden = simpleDisply, + hidden = simpleDisplay, )) for i in range(4): @@ -1644,7 +1770,7 @@ def __init__(self, offset = ((0x028E+i) << 2), bitSize = 5, mode = 'RW', - hidden = simpleDisply, + hidden = simpleDisplay, )) self.add(pr.RemoteVariable( @@ -1654,7 +1780,7 @@ def __init__(self, bitSize = 4, bitOffset = 4, mode = 'RW', - hidden = simpleDisply, + hidden = simpleDisplay, )) self.add(pr.RemoteVariable( @@ -1675,7 +1801,7 @@ def __init__(self, bitSize = 1, bitOffset = 1, mode = 'RW', - hidden = simpleDisply, + hidden = simpleDisplay, )) self.add(pr.RemoteVariable( @@ -1686,7 +1812,7 @@ def __init__(self, bitSize = 1, bitOffset = 1, mode = 'RW', - hidden = simpleDisply, + hidden = simpleDisplay, )) for i in range(3): @@ -1696,7 +1822,7 @@ def __init__(self, offset = ((0x029D+i) << 2), bitSize = 8, mode = 'RW', - hidden = simpleDisply, + hidden = simpleDisplay, )) for i in range(3): @@ -1706,7 +1832,7 @@ def __init__(self, offset = ((0x02A9+i) << 2), bitSize = 8, mode = 'RW', - hidden = simpleDisply, + hidden = simpleDisplay, )) self.add(pr.RemoteVariable( @@ -1716,7 +1842,7 @@ def __init__(self, bitSize = 2, bitOffset = 2, mode = 'RW', - hidden = simpleDisply, + hidden = simpleDisplay, )) self.add(pr.RemoteVariable( @@ -1727,9 +1853,17 @@ def __init__(self, bitSize = 1, bitOffset = 1, mode = 'RO', - hidden = simpleDisply, + hidden = simpleDisplay, )) +class Si5345Page3(pr.Device): + def __init__(self, + name = "Page3", + description = "Output N dividers, N divider Finc/Fdec", + simpleDisplay = True, + **kwargs): + super().__init__(name=name, description=description, **kwargs) + ############################## # 15.1 Page 3 Registers Si5345 ############################## @@ -1938,6 +2072,14 @@ def __init__(self, mode = 'RW', )) +class Si5345Page4(pr.Device): + def __init__(self, + name = "Page4", + description = "ZD mode configuration", + simpleDisplay = True, + **kwargs): + super().__init__(name=name, description=description, **kwargs) + ############################## # 15.1 Page 4 Registers Si5345 ############################## @@ -1974,9 +2116,17 @@ def __init__(self, bitSize = 1, bitOffset = 4, mode = 'RW', - hidden = simpleDisply, + hidden = simpleDisplay, )) +class Si5345Page5(pr.Device): + def __init__(self, + name = "Page5", + description = "M divider, BW, holdover, input switch, FINC/DEC", + simpleDisplay = True, + **kwargs): + super().__init__(name=name, description=description, **kwargs) + ############################## # 15.1 Page 5 Registers Si5345 ############################## @@ -2169,7 +2319,7 @@ def __init__(self, bitSize = 3, bitOffset = 5, mode = 'RW', - hidden = simpleDisply, + hidden = simpleDisplay, )) self.add(pr.RemoteVariable( @@ -2180,7 +2330,7 @@ def __init__(self, bitSize = 1, bitOffset = 1, mode = 'RW', - hidden = simpleDisply, + hidden = simpleDisplay, )) self.add(pr.RemoteVariable( @@ -2190,7 +2340,7 @@ def __init__(self, bitSize = 5, bitOffset = 0, mode = 'RW', - hidden = simpleDisply, + hidden = simpleDisplay, )) self.add(pr.RemoteVariable( @@ -2200,7 +2350,7 @@ def __init__(self, bitSize = 5, bitOffset = 0, mode = 'RW', - hidden = simpleDisply, + hidden = simpleDisplay, )) self.add(pr.RemoteVariable( @@ -2210,7 +2360,7 @@ def __init__(self, bitSize = 5, bitOffset = 0, mode = 'RW', - hidden = simpleDisply, + hidden = simpleDisplay, )) for i in range(3): @@ -2220,7 +2370,7 @@ def __init__(self, offset = ((0x0532+i) << 2), bitSize = 8, mode = 'RW', - hidden = simpleDisply, + hidden = simpleDisplay, )) self.add(pr.RemoteVariable( @@ -2285,9 +2435,9 @@ def __init__(self, enum = { 0x0: 'no priority', 0x1: 'priority 1', - 0x1: 'priority 2', - 0x1: 'priority 3', - 0x1: 'priority 4', + 0x2: 'priority 2', + 0x3: 'priority 3', + 0x4: 'priority 4', }, )) @@ -2301,9 +2451,9 @@ def __init__(self, enum = { 0x0: 'no priority', 0x1: 'priority 1', - 0x1: 'priority 2', - 0x1: 'priority 3', - 0x1: 'priority 4', + 0x2: 'priority 2', + 0x3: 'priority 3', + 0x4: 'priority 4', }, )) @@ -2317,9 +2467,9 @@ def __init__(self, enum = { 0x0: 'no priority', 0x1: 'priority 1', - 0x1: 'priority 2', - 0x1: 'priority 3', - 0x1: 'priority 4', + 0x2: 'priority 2', + 0x3: 'priority 3', + 0x4: 'priority 4', }, )) @@ -2333,9 +2483,9 @@ def __init__(self, enum = { 0x0: 'no priority', 0x1: 'priority 1', - 0x1: 'priority 2', - 0x1: 'priority 3', - 0x1: 'priority 4', + 0x2: 'priority 2', + 0x3: 'priority 3', + 0x4: 'priority 4', }, )) @@ -2370,7 +2520,7 @@ def __init__(self, offset = ((0x053B+i) << 2), bitSize = 8, mode = 'RW', - hidden = simpleDisply, + hidden = simpleDisplay, )) self.add(pr.RemoteVariable( @@ -2380,7 +2530,7 @@ def __init__(self, bitSize = 5, bitOffset = 0, mode = 'RW', - hidden = simpleDisply, + hidden = simpleDisplay, )) self.add(pr.RemoteVariable( @@ -2390,7 +2540,7 @@ def __init__(self, bitSize = 5, bitOffset = 0, mode = 'RW', - hidden = simpleDisply, + hidden = simpleDisplay, )) self.add(pr.RemoteVariable( @@ -2420,7 +2570,7 @@ def __init__(self, bitSize = 4, bitOffset = 0, mode = 'RW', - hidden = simpleDisply, + hidden = simpleDisplay, )) for i in range(2): @@ -2430,7 +2580,7 @@ def __init__(self, offset = ((0x0589+i) << 2), bitSize = 8, mode = 'RW', - hidden = simpleDisply, + hidden = simpleDisplay, )) self.add(pr.RemoteVariable( @@ -2451,7 +2601,7 @@ def __init__(self, bitSize = 1, bitOffset = 4, mode = 'RW', - hidden = simpleDisply, + hidden = simpleDisplay, )) self.add(pr.RemoteVariable( @@ -2462,7 +2612,7 @@ def __init__(self, bitSize = 1, bitOffset = 5, mode = 'RW', - hidden = simpleDisply, + hidden = simpleDisplay, )) self.add(pr.RemoteVariable( @@ -2473,7 +2623,7 @@ def __init__(self, bitSize = 1, bitOffset = 6, mode = 'RW', - hidden = simpleDisply, + hidden = simpleDisplay, )) self.add(pr.RemoteVariable( @@ -2484,7 +2634,7 @@ def __init__(self, bitSize = 1, bitOffset = 7, mode = 'RW', - hidden = simpleDisply, + hidden = simpleDisplay, )) for i in range(6): @@ -2494,7 +2644,7 @@ def __init__(self, offset = ((0x059D+i) << 2), bitSize = 6, mode = 'RW', - hidden = simpleDisply, + hidden = simpleDisplay, )) self.add(pr.RemoteVariable( @@ -2504,7 +2654,7 @@ def __init__(self, bitSize = 3, bitOffset = 0, mode = 'RW', - hidden = simpleDisply, + hidden = simpleDisplay, )) self.add(pr.RemoteVariable( @@ -2517,6 +2667,14 @@ def __init__(self, mode = 'RW', )) +class Si5345Page9(pr.Device): + def __init__(self, + name = "Page9", + description = "Control IO configuration", + simpleDisplay = True, + **kwargs): + super().__init__(name=name, description=description, **kwargs) + ############################## # 15.1 Page 9 Registers Si5345 ############################## @@ -2566,7 +2724,7 @@ def __init__(self, bitSize = 4, bitOffset = 0, mode = 'RW', - hidden = simpleDisply, + hidden = simpleDisplay, )) for i in range(2): @@ -2576,7 +2734,7 @@ def __init__(self, offset = ((0x094E+i) << 2), bitSize = 8, mode = 'RW', - hidden = simpleDisply, + hidden = simpleDisplay, )) self.add(pr.RemoteVariable( @@ -2587,9 +2745,16 @@ def __init__(self, bitSize = 1, bitOffset = 0, mode = 'RW', - hidden = simpleDisply, + hidden = simpleDisplay, )) +class Si5345PageA(pr.Device): + def __init__(self, + name = "PageA", + simpleDisplay = True, + **kwargs): + super().__init__(name=name, description=description, **kwargs) + ############################## # 15.1 Page A Registers Si5345 ############################## @@ -2601,7 +2766,7 @@ def __init__(self, bitSize = 5, bitOffset = 0, mode = 'RW', - hidden = simpleDisply, + hidden = simpleDisplay, )) self.add(pr.RemoteVariable( @@ -2638,9 +2803,16 @@ def __init__(self, offset = ((0x0A14+i) << 2), bitSize = 3, mode = 'RW', - hidden = simpleDisply, + hidden = simpleDisplay, )) +class Si5345PageB(pr.Device): + def __init__(self, + name = "PageB", + simpleDisplay = True, + **kwargs): + super().__init__(name=name, description=description, **kwargs) + ############################## # 15.1 Page B Registers Si5345 ############################## @@ -2709,25 +2881,4 @@ def __init__(self, bitSize = 8, mode = 'RW', )) - - ############################## - # Commands - ############################## - @self.command(value='',description="Load the .CSV from CBPro.",) - def LoadCsvFile(arg): - # Check if non-empty argument - if (arg != ""): - path = arg - else: - # Use the variable path instead - path = self.CsvFilePath.get() - - # Open the .CSV file - with open(path) as csvfile: - reader = csv.reader(csvfile, delimiter=',', quoting=csv.QUOTE_NONE) - # Loop through the rows in the CSV file - for row in reader: - self._rawWrite( - offset = (row['Address']<<2), - data = row['Data'], - ) + \ No newline at end of file