Skip to content
Snippets Groups Projects
Commit 34d989bc authored by Paulus Kruger's avatar Paulus Kruger
Browse files

RCU2H comm+config

parent 9561105b
No related branches found
No related tags found
No related merge requests found
Pipeline #47433 passed
version: "1.0"
description: "1234"
name: "RECVTR"
drivers:
- name: I2C1 #TCA9548
type: i2c_iss
parameters: [4] #COM port
- name: I2C_RCU
type: i2c_dev #I2C devices
parent: I2C1
status: CLK_I2C_STATUS
- name: I2C_HBAT
type: hba1 #Special driver to manage HBAT1s.
parent: I2C_RCU
devreg: [0x40.0xFF] #I2C broadcast register
parameters: [24] #PPS GPIO pin
- name: I2Cbb1
type: i2cbitbang1 #I2C bitbang via GPIO expander
devreg: [IO3.GPIO2,IO3.GPIO2,IO3.CONF2]
parameters: [5,6,6] #pins
parent: I2C_RCU
- name: I2Cbb2
type: i2cbitbang1
devreg: [IO3.GPIO2,IO3.GPIO2,IO3.CONF2]
parameters: [4,6,6]
parent: I2C_RCU
- name: I2Cbb3
type: i2cbitbang1
devreg: [IO3.GPIO2,IO3.GPIO2,IO3.CONF2]
parameters: [3,6,6]
parent: I2C_RCU
- name: SPIbb1
type: spibitbang1 #SPI bitbang via GPIO expander: CLK, SDIO, SDIOdir,CS
devreg: [IO3.GPIO1,IO3.GPIO1,IO3.CONF1,IO3.GPIO2]
parameters: [1,0,0,0]
parent: I2C_RCU
- name: SPIbb2
type: spibitbang1
devreg: [IO3.GPIO1,IO3.GPIO1,IO3.CONF1,IO3.GPIO2]
parameters: [3,2,2,1]
parent: I2C_RCU
- name: SPIbb3
type: spibitbang1
devreg: [IO3.GPIO1,IO3.GPIO1,IO3.CONF1,IO3.GPIO2]
parameters: [5,4,4,2]
parent: I2C_RCU
#This is the I2C devices in the RCU
device_registers:
- name: IO
dim: 4
description: [IO-Expander for filter selection,IO-Expander for ON/OFF, Band, BUFx2,IO-Expander for ADC control]
address: [0x75,0x76,0x20,0x77]
device: [TCA9539,TCA9539,TCA6416,TCA9539]
driver: I2C_RCU
registers:
- name: CONF1
description: Direction of port1
address: 6
store: True
- name: CONF2
description: Direction of port2
address: 7
store: True
- name: GPIO1
description: Input/Ouput port 1
address: [0,2] #Read / Write address different
store: True
- name: GPIO2
description: Input/Ouput port 2
address: [1,3]
store: True
- name: DIR1
address: 4
- name: DIR2
address: 5
- name: ROM
description: IO-Expander for filter selection
address: 0x50
driver: I2C1
registers:
- name: ID
description: Random
address: 0xfc
- name: Version
description: Set in production
address: 0
- name: Serial
address: 0x20
- name: AN
description: Monitor ADC on RCU
address: 0x74 #was 0x14 on RCU2-DIG PCBs
device: LTC2495
driver: I2C1
registers:
- name: V_1v8
address: 0xB080
- name: V_2v5
address: 0xB880
- name: V_3v3
address: 0xB180
- name: I_Ant0
address: 0xB980
- name: I_Ant1
address: 0xB280
- name: I_Ant2
address: 0xBA80
- name: V_Ant_I0
address: 0xB380
- name: V_Ant_O0
address: 0xBB80
- name: V_Ant_I1
address: 0xB480
- name: V_Ant_O1
address: 0xBC80
- name: V_Ant_I2
address: 0xB580
- name: V_Ant_O2
address: 0xBD80
- name: Temp
address: 0xA0C0
#This 'special' devices that uses I2C
- name: HB_UC
description: RCU microcontroller
address: 0x40
driver: I2C1
registers:
- { name: "waitPPS", address: 12, description: "1=wait for PPS"}
- { name: "VREF", address: 13, description: "0..15/16 ratio of Vref"}
- { name: "firmware", address: 0x10, description: "software version"}
# - name: HB_UC_update
# description: RCU microcontroller
# address: 0x40
# driver: HBA_trigger
# registers:
# - name: wait_pps
# address: 10
- name: HBAT
dim: 3
address: [0x41,0x42,0x43]
description: Virtual HBAT0 interface
driver: I2C_HBAT
registers:
- name: XY
address: 0x10
description: XY delay register
store: "w" #only store on write
- name: Version
address: 127
description: HBAT server version
- name: ADC
dim: 3
description: ADC SPI control
device: AD9683
driver: [SPIbb1,SPIbb2,SPIbb3]
registers:
- name: PLL_stat
description: PLL locked status
address: 0x0A
- name: JESD_control1
description: JESD link control
address: 0x5F
- name: SYNC_control
address: 0x3A
- name: CML_level
description: CML output adjust
address: 0x15
- name: Update
description: Global device uptate
address: 0xFF
- name: testmode
address: 0x0D
- name: dither
address: 0x0C
- name: JESDscramble
address: 0x6E
- name: PDWNmodes
address: 0x08
- name: DCcorrect
address: 0x40
- name: DTH
dim: 3
description: CW dither source
device: SI4012
driver: [I2Cbb1,I2Cbb2,I2Cbb3]
address: 0x70
registers:
- name: Freq
description: Frequency
address: [0x1240,0x1140]
- name: Property
description: Properties
address: [0x12,0x11]
- name: State
address: [0x61,0x60]
- name: Start
description: Start CW
address: [0x62,0x62]
- name: Stop
description: Stop CW
address: [0x67,0x67]
- name: Rev
address: 0x10
- name: Tune
address: [0x1221,0x1121]
- name: CONF
address: [0x1210,0x1110]
- name: PA_CONFIG
address: [0x1260,0x1160]
store: True
variables:
- name: RCU_I2C_STATUS
driver: I2C_RCU
rw: ro #server RW variable, not linked to IO
dtype: uint8
- name: [CH1_attenuator_dB,CH2_attenuator_dB,CH3_attenuator_dB]
description: RCU Attenuation (dB)
driver: I2C_RCU
devreg: [IO1.GPIO1,IO1.GPIO2,IO2.GPIO1]
bitoffset: [0,0,0]
width: 6
rw: rw
dtype: uint8
dim: 3
- name: [CH1_band_select,CH2_band_select,CH3_band_select]
description: Band select for highband 2,1,4 for 110-190,170-230,210-240
driver: I2C_RCU
devreg: [IO2.GPIO2,IO2.GPIO2,IO4.GPIO2]
bitoffset: [0,3,0]
width: 3
rw: rw
dtype: uint8
- name: [RCU_IO1_GPIO1,RCU_IO1_GPIO2,RCU_IO2_GPIO1,RCU_IO2_GPIO2,RCU_IO3_GPIO1,RCU_IO3_GPIO2]
driver: I2C_RCU
devreg: [IO1.GPIO1,IO1.GPIO2,IO2.GPIO1,IO2.GPIO2,IO3.GPIO1,IO3.GPIO2]
width: 8
rw: ro
dtype: uint8
- name: RCU_LED_red_on
driver: I2C_RCU
description: Red LED on front panel
devreg: IO2.GPIO2
bitoffset: 6
width: 1
rw: rw
dtype: boolean
convert_unit: bool_invert
- name: RCU_LED_green_on
driver: I2C_RCU
description: Green LED on front panel
devreg: IO2.GPIO2
bitoffset: 7
width: 1
rw: rw
dtype: boolean
convert_unit: bool_invert
- name: RCU_TEMP
description: RCU PCB Temperature (Celsius)
driver: I2C_RCU
devreg: AN.Temp
width: 23
scale: 4.210e-3 #Scaled 1.1 for 3.3V ref. 3.827e-3 for 3.0V #T=DATAOUT * Vref/12.25/32. Vref=1.5 V
convert_unit: Kelvin2Celsius
rw: ro
dtype: double
- name: RCU_PWR_3V3
description: RCU 3.3V voltage (V)
driver: I2C_RCU
devreg: AN.V_3v3
width: 23
scale: 1.609e-6 #Scaled 1.1: 1.463e-6 #3.0V
rw: ro
dtype: double
- name: RCU_PWR_1V8
description: RCU 1.8V voltage (V)
driver: I2C_RCU
devreg: AN.V_1v8
width: 23
scale: 7.8679e-7 #Scaled 1.1: 7.1526e-7 #3.0V ref
rw: ro
dtype: double
- name: RCU_PWR_2V5
description: RCU 2.5V voltage (V)
driver: I2C_RCU
devreg: AN.V_2v5
width: 23
scale: 7.8679e-7 #Scaled 1.1: 7.1526e-7 #3.0V ref
rw: ro
dtype: double
- name: [CH1_PWR_ANT_VOUT,CH2_PWR_ANT_VOUT,CH3_PWR_ANT_VOUT]
description: Voltage on antenna output of RCU (V). Controlled by ANT_PWR_ON.
driver: I2C_RCU
devreg: [AN.V_Ant_O0,AN.V_Ant_O1,AN.V_Ant_O2]
width: 23
scale: 1.57356e-5 #Scaled 1.1: 1.43051e-5 #3V ref
rw: ro
dtype: double
- name: [CH1_PWR_ANT_VIN,CH2_PWR_ANT_VIN,CH3_PWR_ANT_VIN]
description: RCU antenna voltage before switch (V)
driver: I2C_RCU
devreg: [AN.V_Ant_I0,AN.V_Ant_I1,AN.V_Ant_I2]
width: 23
scale: 1.57356e-5 #Scaled 1.1: 1.43051e-5 #3V ref
rw: ro
dtype: double
- name: [CH1_PWR_ANT_IOUT,CH2_PWR_ANT_IOUT,CH3_PWR_ANT_IOUT]
description: Current drawn on antenna output of RCU (A). 15mA offset due to LED on RCU
driver: I2C_RCU
devreg: [AN.I_Ant0,AN.I_Ant1,AN.I_Ant2]
width: 23
scale: 2.62262e-7 #4.5K res
rw: ro
dtype: double
- name: RCU_PWR_DIGITAL_on
description: RCU digital power enable. Controlled by calling RCU_on/RCU_off
driver: I2C_RCU
devreg: IO2.GPIO1
width: 1
bitoffset: 6
rw: ro #rw for testing
dtype: boolean
- name: RCU_PWR_good
description: Status of RCU power given by LDOs.
driver: I2C_RCU
devreg: IO2.GPIO1
width: 1
bitoffset: 7
rw: ro
dtype: boolean
- name: RCU_PWR_ANALOG_on
description: RCU analog power enable. Controlled by RCU_on/off
driver: I2C_RCU
devreg: IO1.GPIO2
width: 1
bitoffset: 7
rw: rw #rw for testing
dtype: boolean
- name: [CH1_DTH_shutdown,CH2_DTH_shutdown,CH3_DTH_shutdown]
description: False means dither source & ADC powered on.
driver: I2C_RCU
devreg: [IO3.GPIO1,IO3.GPIO1,IO3.GPIO2]
width: 1
bitoffset: [7,6,7]
rw: ro
dtype: boolean
- name: CH1_PWR_ANT_on
description: Antenna power output ON/OFF control. Monitored by Ant_VOUT.
driver: I2C_RCU
devreg: IO1.GPIO1
width: 1
bitoffset: 6
rw: rw
dtype: boolean
- name: CH2_PWR_ANT_on
description: Antenna power output ON/OFF control. Monitored by Ant_VOUT.
driver: I2C_RCU
devreg: IO1.GPIO1
width: 1
bitoffset: 7
rw: rw
dtype: boolean
- name: [CH3_PWR_ANT_on]
description: Antenna power output ON/OFF control. Monitored by Ant_VOUT.
driver: I2C_RCU
devreg: IO1.GPIO2
width: 1
bitoffset: 6
rw: rw
dtype: boolean
# - name: [CH1_PWR_ANT_on,CH2_PWR_ANT_on,CH3_PWR_ANT_on]
# description: Antenna power output ON/OFF control. Monitored by Ant_VOUT.
# driver: I2C_RCU
# devreg: [IO1.GPIO1,IO1.GPIO1,IO1.GPIO2]
# width: 1
# bitoffset: [6,7,6]
# rw: rw
# dtype: boolean
- name: RCU_PCB_ID
description: Unique PCB ID
driver: I2C_RCU
devreg: ROM.ID
width: 32
rw: ro
dtype: uint32
- name: RCU_PCB_version
description: RCU version number
driver: I2C_RCU
devreg: ROM.Version
width: 0x100 #32 characters
rw: ro
dtype: string
- name: RCU_PCB_number
description: PCB number (astron.nl/webforms/IenS-Boarden/view.php?id=xxx)
driver: I2C_RCU
devreg: ROM.Serial
width: 0x100 #32 characters
rw: ro
dtype: string
- name: [CH1_ADC_locked,CH2_ADC_locked,CH3_ADC_locked]
description: RCU ADC lock status. May generated noise and polling disabled in future
driver: I2C_RCU
devreg: [ADC1.PLL_stat,ADC2.PLL_stat,ADC3.PLL_stat]
width: 1
rw: ro
dtype: boolean
- name: [CH1_ADC_sync,CH2_ADC_sync,CH3_ADC_sync]
driver: I2C_RCU
devreg: [ADC1.SYNC_control,ADC2.SYNC_control,ADC3.SYNC_control]
width: 8
rw: ro
dtype: uint8
- name: [CH1_ADC_JESD,CH2_ADC_JESD,CH3_ADC_JESD]
driver: I2C_RCU
devreg: [ADC1.JESD_control1,ADC2.JESD_control1,ADC3.JESD_control1]
width: 8
rw: ro
dtype: uint8
- name: [CH1_ADC_CML_level,CH2_ADC_CML_level,CH3_ADC_CML_level]
driver: I2C_RCU
devreg: [ADC1.CML_level,ADC2.CML_level,ADC3.CML_level]
width: 8
rw: ro
dtype: uint8
- name: [CH1_DTH_freq,CH2_DTH_freq,CH3_DTH_freq]
description: RCU Dither source frequency (Hz). Should be around 102MHz.
driver: I2C_RCU
devreg: [DTH1.Freq,DTH2.Freq,DTH3.Freq]
width: 32
rw: rw
dtype: uint32
- name: [CH1_DTH_PWR,CH2_DTH_PWR,CH3_DTH_PWR]
description: RCU Dither source power (dBm). Range -25 to -4.
driver: I2C_RCU
devreg: [DTH1.PA_CONFIG,DTH2.PA_CONFIG,DTH3.PA_CONFIG]
width: 48
rw: rw
dtype: double
scale: si4012_6bytes_to_pwr
- name: [CH1_DTH_on,CH2_DTH_on,CH3_DTH_on]
description: RCU Dither on. Controlled by RCU_DTH_on/off
driver: I2C_RCU
devreg: [DTH1.State,DTH2.State,DTH3.State]
width: 1 #read only first of 2 bytes
bitoffset: [1,1,1]
rw: ro
dtype: boolean
#RCU2H points
- name: [CH1_RCU_DAB_filter_on,CH2_RCU_DAB_filter_on,CH3_RCU_DAB_filter_on]
description: DAB filter enable
driver: I2C_RCU
devreg: [IO4.GPIO1,IO4.GPIO1,IO4.GPIO1]
bitoffset: [0,2,4]
width: 2
rw: rw
dtype: boolean
convert_unit: int12_to_bool
- name: RCU_firmware_version
description: git firmware version
driver: I2C_RCU
devreg: HB_UC.firmware
width: 32
rw: ro
dtype: uint32
endian: "<"
#HBAT points
- name: CH1_HBAT_BF_byte
driver: I2C_HBAT
devreg: HBAT1.XY
bitoffset: 0
width: 8
rw: rw
dtype: uint8
dim: 32
wait: 1000 #ms
- name: CH2_HBAT_BF_byte
driver: I2C_HBAT
devreg: HBAT2.XY
bitoffset: 0
width: 8
rw: rw
dtype: uint8
dim: 32
wait: 1000 #ms
- name: CH3_HBAT_BF_byte
driver: I2C_HBAT
devreg: HBAT3.XY
bitoffset: 0
width: 8
rw: rw
dtype: uint8
dim: 32
wait: 1000 #ms
- name: CH1_HBAT_BF2_byte
driver: I2C_RCU
devreg: HBAT1.XY
bitoffset: 0
width: 8
rw: rw
dtype: uint8
dim: 32
wait: 1000 #ms
- name: CH2_HBAT_BF2_byte
driver: I2C_RCU
devreg: HBAT2.XY
bitoffset: 0
width: 8
rw: rw
dtype: uint8
dim: 32
wait: 1000 #ms
- name: CH3_HBAT_BF2_byte
driver: I2C_RCU
devreg: HBAT3.XY
bitoffset: 0
width: 8
rw: rw
dtype: uint8
dim: 32
wait: 1000 #ms
- name: [RCU_IO4_GPIO1,RCU_IO4_GPIO2]
driver: I2C_RCU
devreg: [IO4.GPIO1,IO4.GPIO2]
width: 8
rw: ro
dtype: uint8
methods:
- name: RECVTR_Init #Called after startup to load. Should have all stored registers
driver: I2C_RCU
debug: True
instructions:
- RCU_IO1_GPIO1: Update
- RCU_IO1_GPIO2: Update
- RCU_IO2_GPIO1: Update
- RCU_IO2_GPIO2: Update
- RCU_IO3_GPIO1: Update
- RCU_IO3_GPIO2: Update
- RCU_IO4_GPIO1: Update
- RCU_IO4_GPIO2: Update
- name: RCU_on
description: Initialize RCU and it in the ON state
driver: I2C_RCU
mask: RCU_mask
instructions:
- RECVTR_I2C_error: 0
- IO2.CONF1: 0x80 #Pgood on 0x80
- IO2.GPIO1: 0x4A #0x40 Dig on, 0x0a =10dB att
- IO2.GPIO2: 0x52 #0x09 #Band0 (or 0x12 or 0x24) #LED green=on=low 0x40
- IO3.DIR1: 0
- IO3.DIR2: 0
- IO3.GPIO1: 0x15 #ADC_SDIO=high, clk=low, DTH_EN=low
- IO3.GPIO2: 0x47 #ADC SC=high, DTH_SDA=high
- IO1.GPIO1: 0x0A #0x0a = 10dB att
- IO1.GPIO2: 0x8A #0x80 Analog on, 0x0a=10dB att
- IO2.CONF2: 0
- IO3.CONF1: 0
- IO3.CONF2: 0
- IO1.CONF1: 0
- IO1.CONF2: 0
- IO4.CONF1: 0xC0 #pin 0x40, 0x80 not used
- IO4.CONF2: 0xF8
- IO4.GPIO1: 0x2A #DAB switch states: 0x2A or 0x51
- IO4.GPIO2: 0x02 #Band select
- name: RCU_off
driver: I2C_RCU
mask: RCU_mask
instructions:
- IO1.GPIO1: 0
- IO1.GPIO2: 0
- IO2.GPIO1: 0
- IO2.GPIO2: 0
- IO3.GPIO1: 0
- IO3.GPIO2: 0
- IO4.GPIO1: 0
- IO4.GPIO2: 0
- IO2.CONF1: 0x80 #Pgood on 0x80
- IO2.CONF2: 0
- IO1.CONF1: 0
- IO1.CONF2: 0
- IO4.CONF1: 0xC0 #pin 0x40, 0x80 not used
- IO4.CONF2: 0xF8
- name: ADC_on
driver: I2C_RCU
debug: True
instructions:
- ADC1.JESD_control1 : 0x14
- ADC1.SYNC_control: 1 #Setup ADCs
- ADC1.CML_level: 0x7
- ADC1.dither : 0x00
- ADC1.Update: 1 #Needed to update ADC registers
- ADC2.JESD_control1 : 0x14
- ADC2.SYNC_control: 1 #Setup ADCs
- ADC2.CML_level: 0x7
- ADC2.dither : 0x00
- ADC2.Update: 1 #Needed to update ADC registers
- ADC3.JESD_control1 : 0x14
- ADC3.SYNC_control: 1 #Setup ADCs
- ADC3.CML_level: 0x7
- ADC3.dither : 0x00
- ADC3.Update: 1 #Needed to update ADC registers
\ No newline at end of file
...@@ -38,12 +38,12 @@ drivers: ...@@ -38,12 +38,12 @@ drivers:
- name: SPIbb2 - name: SPIbb2
type: spibitbang1 type: spibitbang1
devreg: [IO3.GPIO1,IO3.GPIO1,IO3.CONF1,IO3.GPIO2] devreg: [IO3.GPIO1,IO3.GPIO1,IO3.CONF1,IO3.GPIO2]
parameters: [3,2,2,1] parameters: [1,2,2,1]
parent: I2C_RCU parent: I2C_RCU
- name: SPIbb3 - name: SPIbb3
type: spibitbang1 type: spibitbang1
devreg: [IO3.GPIO1,IO3.GPIO1,IO3.CONF1,IO3.GPIO2] devreg: [IO3.GPIO1,IO3.GPIO1,IO3.CONF1,IO3.GPIO2]
parameters: [5,4,4,2] parameters: [1,4,4,2]
parent: I2C_RCU parent: I2C_RCU
#This is the I2C devices in the RCU #This is the I2C devices in the RCU
...@@ -362,24 +362,61 @@ variables: ...@@ -362,24 +362,61 @@ variables:
rw: rw #rw for testing rw: rw #rw for testing
dtype: boolean dtype: boolean
- name: [CH1_DTH_shutdown,CH2_DTH_shutdown,CH3_DTH_shutdown] - name: RCU_DTH_shutdown
description: False means dither source & ADC powered on. description: False means dither source powered on.
driver: I2C_RCU driver: I2C_RCU
devreg: [IO3.GPIO1,IO3.GPIO1,IO3.GPIO2] devreg: IO3.GPIO2
width: 1 width: 1
bitoffset: [7,6,7] bitoffset: 7
rw: ro rw: rw
dtype: boolean
- name: [CH1_ADC_shutdown,CH2_ADC_shutdown,CH3_ADC_shutdown]
description: False means ADC powered on.
driver: I2C_RCU
devreg: [IO3.GPIO1,IO3.GPIO1,IO3.GPIO1]
width: 1
bitoffset: [6,3,5]
rw: rw
dtype: boolean dtype: boolean
- name: [CH1_PWR_ANT_on,CH2_PWR_ANT_on,CH3_PWR_ANT_on]
- name: CH1_PWR_ANT_on
description: Antenna power output ON/OFF control. Monitored by Ant_VOUT. description: Antenna power output ON/OFF control. Monitored by Ant_VOUT.
driver: I2C_RCU driver: I2C_RCU
devreg: [IO1.GPIO1,IO1.GPIO1,IO1.GPIO2] devreg: IO1.GPIO1
width: 1 width: 1
bitoffset: [6,7,6] bitoffset: 6
rw: rw rw: rw
dtype: boolean dtype: boolean
- name: CH2_PWR_ANT_on
description: Antenna power output ON/OFF control. Monitored by Ant_VOUT.
driver: I2C_RCU
devreg: IO1.GPIO1
width: 1
bitoffset: 7
rw: rw
dtype: boolean
- name: [CH3_PWR_ANT_on]
description: Antenna power output ON/OFF control. Monitored by Ant_VOUT.
driver: I2C_RCU
devreg: IO1.GPIO2
width: 1
bitoffset: 6
rw: rw
dtype: boolean
# - name: [CH1_PWR_ANT_on,CH2_PWR_ANT_on,CH3_PWR_ANT_on]
# description: Antenna power output ON/OFF control. Monitored by Ant_VOUT.
# driver: I2C_RCU
# devreg: [IO1.GPIO1,IO1.GPIO1,IO1.GPIO2]
# width: 1
# bitoffset: [6,7,6]
# rw: rw
# dtype: boolean
- name: RCU_PCB_ID - name: RCU_PCB_ID
description: Unique PCB ID description: Unique PCB ID
...@@ -483,58 +520,69 @@ variables: ...@@ -483,58 +520,69 @@ variables:
endian: "<" endian: "<"
#HBAT points #HBAT points
- name: [CH1_HBAT_BF_delay_steps,CH2_HBAT_BF_delay_steps,CH3_HBAT_BF_delay_steps] - name: CH1_HBAT_BF_byte
description: HBAT1 frontend delays (0.5ns steps)
driver: I2C_HBAT driver: I2C_HBAT
devreg: [HBAT1.XY,HBAT2.XY,HBAT3.XY] devreg: HBAT1.XY
bitoffset: [2,2,2] bitoffset: 0
width: 5 width: 8
rw: rw rw: rw
dtype: uint8 dtype: uint8
dim: 32 dim: 32
wait: PPS wait: 1000 #ms
# wait: 1000 #ms - name: CH2_HBAT_BF_byte
driver: I2C_HBAT
- name: [RCU_IO4_GPIO1,RCU_IO4_GPIO2] devreg: HBAT2.XY
driver: I2C_RCU bitoffset: 0
devreg: [IO4.GPIO1,IO4.GPIO2]
width: 8 width: 8
rw: ro rw: rw
dtype: uint8 dtype: uint8
dim: 32
wait: 1000 #ms
- name: [CH1_HBAT_LED_on,CH2_HBAT_LED_on,CH3_HBAT_LED_on] - name: CH3_HBAT_BF_byte
description: HBA frontend control
driver: I2C_HBAT driver: I2C_HBAT
devreg: [HBAT1.XY,HBAT2.XY,HBAT3.XY] devreg: HBAT3.XY
bitoffset: 0 bitoffset: 0
width: 1 width: 8
rw: rw rw: rw
dtype: boolean dtype: uint8
dim: 32 dim: 32
wait: 1000 #ms
- name: [CH1_HBAT_PWR_LNA_on,CH2_HBAT_PWR_LNA_on,CH3_HBAT_PWR_LNA_on] - name: CH1_HBAT_BF2_byte
description: HBA frontend control driver: I2C_RCU
driver: I2C_HBAT devreg: HBAT1.XY
devreg: [HBAT1.XY,HBAT2.XY,HBAT3.XY] bitoffset: 0
bitoffset: 7 width: 8
width: 1
rw: rw rw: rw
dtype: boolean dtype: uint8
dim: 32 dim: 32
wait: 1000 wait: 1000 #ms
- name: CH2_HBAT_BF2_byte
- name: [CH1_HBAT_PWR_on,CH2_HBAT_PWR_on,CH3_HBAT_PWR_on] driver: I2C_RCU
description: HBA frontend control devreg: HBAT2.XY
driver: I2C_HBAT bitoffset: 0
devreg: [HBAT1.XY,HBAT2.XY,HBAT3.XY] width: 8
bitoffset: 1
width: 1
rw: rw rw: rw
dtype: boolean dtype: uint8
convert_unit: bool_invert dim: 32
wait: 1000 #ms
- name: CH3_HBAT_BF2_byte
driver: I2C_RCU
devreg: HBAT3.XY
bitoffset: 0
width: 8
rw: rw
dtype: uint8
dim: 32 dim: 32
wait: 1000 wait: 1000 #ms
- name: [RCU_IO4_GPIO1,RCU_IO4_GPIO2]
driver: I2C_RCU
devreg: [IO4.GPIO1,IO4.GPIO2]
width: 8
rw: ro
dtype: uint8
methods: methods:
- name: RECVTR_Init #Called after startup to load. Should have all stored registers - name: RECVTR_Init #Called after startup to load. Should have all stored registers
...@@ -594,3 +642,30 @@ methods: ...@@ -594,3 +642,30 @@ methods:
- IO1.CONF2: 0 - IO1.CONF2: 0
- IO4.CONF1: 0xC0 #pin 0x40, 0x80 not used - IO4.CONF1: 0xC0 #pin 0x40, 0x80 not used
- IO4.CONF2: 0xF8 - IO4.CONF2: 0xF8
- name: ADC_on
driver: I2C_RCU
debug: True
instructions:
- ADC1.JESD_control1 : 0x14
- ADC1.SYNC_control: 1 #Setup ADCs
- ADC1.CML_level: 0x7
- ADC1.dither : 0x00
- ADC1.Update: 1 #Needed to update ADC registers
- ADC2.JESD_control1 : 0x14
- ADC2.SYNC_control: 1 #Setup ADCs
- ADC2.CML_level: 0x7
- ADC2.dither : 0x00
- ADC2.Update: 1 #Needed to update ADC registers
- ADC3.JESD_control1 : 0x14
- ADC3.SYNC_control: 1 #Setup ADCs
- ADC3.CML_level: 0x7
- ADC3.dither : 0x00
- ADC3.Update: 1 #Needed to update ADC registers
- CH1_ADC_shutdown : 1
- CH2_ADC_shutdown : 1
- CH3_ADC_shutdown : 1
- WAIT: 100 #ms to wait
- CH1_ADC_shutdown : 0
- CH2_ADC_shutdown : 0
- CH3_ADC_shutdown : 0
\ No newline at end of file
...@@ -36,6 +36,16 @@ class i2cdirect(): ...@@ -36,6 +36,16 @@ class i2cdirect():
data=data[0].data data=data[0].data
return byte2var(var1,data),var1 return byte2var(var1,data),var1
def GetRaw(self,name):
varid=self.conf.getvarid(name);
if varid is None:
logging.error("Variable "+name+" not found")
return None,None
var1=self.conf.getvars()[varid]
drv=var1.get('drivercls');
data=drv.OPCUAReadVariable(varid,var1,[])
return data,var1
def SetVal(self,name,data): def SetVal(self,name,data):
varid=self.conf.getvarid(name); varid=self.conf.getvarid(name);
......
...@@ -28,6 +28,7 @@ class hba1(hwdev): ...@@ -28,6 +28,7 @@ class hba1(hwdev):
def OPCUASetVariable(self,varid,var1,data,mask): def OPCUASetVariable(self,varid,var1,data,mask):
logging.info(str(("HBA set Var",var1['name'],len(data),len(mask),data[:32*3],mask[:12]))) logging.info(str(("HBA set Var",var1['name'],len(data),len(mask),data[:32*3],mask[:12])))
self.conf['parentcls'].SetGetVarValueMask(var1,data,mask,getalso=False) self.conf['parentcls'].SetGetVarValueMask(var1,data,mask,getalso=False)
if len(mask)>0:
RCUmask=[(mask[i*3] | mask[i*3+1] | mask[i*3+2]) for i in range(32)] RCUmask=[(mask[i*3] | mask[i*3+1] | mask[i*3+2]) for i in range(32)]
# print(RCUmask) # print(RCUmask)
#Wait for PPS if required else wait a bit #Wait for PPS if required else wait a bit
......
...@@ -149,7 +149,7 @@ class i2c_dev(hwdev): ...@@ -149,7 +149,7 @@ class i2c_dev(hwdev):
def i2csetget(self,*args,**kwargs): def i2csetget(self,*args,**kwargs):
return self.conf['parentcls'].i2csetget(*args,**kwargs) return self.conf['parentcls'].i2csetget(*args,**kwargs)
def SetGetVarValueMask(self,var1,data,mask): def SetGetVarValueMask(self,var1,data,mask,getalso=False):
Step,Step2=GetSteps(var1); Step,Step2=GetSteps(var1);
value1=[0]*Step*Step2; value1=[0]*Step*Step2;
# Step=(len(var1['devreg']) if isinstance(var1['devreg'],list) else 1) # Step=(len(var1['devreg']) if isinstance(var1['devreg'],list) else 1)
......
...@@ -5,7 +5,7 @@ import logging ...@@ -5,7 +5,7 @@ import logging
logging.basicConfig(level="ERROR",format='%(asctime)s [%(levelname)-8s,%(filename)-20s:%(lineno)-3d] %(message)s') logging.basicConfig(level="ERROR",format='%(asctime)s [%(levelname)-8s,%(filename)-20s:%(lineno)-3d] %(message)s')
#logging.basicConfig(level="DEBUG",format='%(asctime)s [%(levelname)-8s,%(filename)-20s:%(lineno)-3d] %(message)s') #logging.basicConfig(level="DEBUG",format='%(asctime)s [%(levelname)-8s,%(filename)-20s:%(lineno)-3d] %(message)s')
d1=i2cdirect('RECVTR_LB_TEST.yaml') d1=i2cdirect('RECVTR_LB_TEST')
def RCU_off(d1): def RCU_off(d1):
logging.warning("Switch RCU Power off"); logging.warning("Switch RCU Power off");
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment