diff --git a/pypcc/config/RECVTR_HB.yaml b/pypcc/config/RECVTR_HB.yaml index 26d41dba80344ef53bdc1379b56e26f76e21c8c4..6f5506d631690a0ed7621bb85dd34d53fd7c7c48 100644 --- a/pypcc/config/RECVTR_HB.yaml +++ b/pypcc/config/RECVTR_HB.yaml @@ -11,10 +11,6 @@ drivers: type: i2c_array #An array of similar devices connected to an I2C switch parent: I2C1 parameters: [20,22,0,2, 4,6,10,12, 14,16,18,24, 26,28,30,8, 7,5,3,1, 23,21,19,13, 11,9,15,17, 31,29,27,25] #RCU lookup table -# parameters: [32,32,32,32 ,32,32,10,12 ,14,16,18,24 ,26,28,30,8 ,32,32,32,32 ,32,32,32,32 ,32,32,32,32 ,32,32,32,32] #RCU lookup table -# parameters: [20,22,0,2,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32] #RCU lookup table -# parameters: [22,0,2,4,6,10,22,0,2,4,6,10,22,0,2,4,6,10,22,0,2,4,6,10,22,0,2,4,6,10,22,0]#repeat 1..7 for RCUH BF test -# 12,14,16,18,24,26,28,30,8,7,5,3,1,23,21,19,13,11,9,15,17,31,29,27,25] #RCU lookup table I2Ccut: 35 #error count to disable I2C (14 for LTS?) status: RECVTR_I2C_error - name: I2C_HBAT @@ -347,7 +343,7 @@ variables: 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 + scale: 3.827e-3 #3.0V ref #T=DATAOUT * Vref/12.25/32. Vref=1.5 V convert_unit: Kelvin2Celsius rw: ro dtype: double @@ -361,7 +357,7 @@ variables: driver: I2C_RCU devreg: AN.V_3v3 width: 23 - scale: 1.609e-6 #Scaled 1.1: 1.463e-6 #3.0V + scale: 1.463e-6 #3.0V ref, divider r=1/4, scale=Vref/2^23 / r rw: ro dtype: double dim: 32 @@ -374,7 +370,7 @@ variables: driver: I2C_RCU devreg: AN.V_1v8 width: 23 - scale: 7.8679e-7 #Scaled 1.1: 7.1526e-7 #3.0V ref + scale: 7.1526e-7 #3.0V ref, divider r=1/2, scale=Vref/2^23 / r rw: ro dtype: double dim: 32 @@ -387,7 +383,7 @@ variables: driver: I2C_RCU devreg: AN.V_2v5 width: 23 - scale: 7.8679e-7 #Scaled 1.1: 7.1526e-7 #3.0V ref + scale: 7.1526e-7 #3.0V ref, divider r=1/2 rw: ro dtype: double dim: 32 @@ -400,7 +396,7 @@ variables: 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 + scale: 1.43051e-5 #3V ref, divider r=1/40 rw: ro dtype: double dim: 96 @@ -414,7 +410,7 @@ variables: 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 + scale: 1.43051e-5 #3V ref, divider r=1/40 rw: ro dtype: double dim: 96 @@ -428,7 +424,7 @@ variables: driver: I2C_RCU devreg: [AN.I_Ant0,AN.I_Ant1,AN.I_Ant2] width: 23 - scale: 2.62262e-7 #4.5K res + scale: 3.9736e-7 #3V ref, 2.7K res, =Vref/2^(23) * 3000/R rw: ro dtype: double dim: 96 @@ -472,7 +468,7 @@ variables: mask: RCU_mask - name: RCU_DTH_shutdown - description: False means dither source & ADC powered on. + description: False means dither source powered on. driver: I2C_RCU devreg: IO3.GPIO2 width: 1 @@ -480,7 +476,6 @@ variables: rw: ro dtype: boolean dim: 32 -# dim2: [3,32] mask: RCU_mask debug: True @@ -509,7 +504,6 @@ variables: dim2: [3,32] mask: ANT_mask - - name: RCU_PCB_ID description: Unique PCB ID driver: I2C_RCU diff --git a/pypcc/config/RECVTR_LB.yaml b/pypcc/config/RECVTR_LB.yaml index 995da15f788f2613490e607066ed1e6cc1636d74..bb14580139a5fa0a8fe9113a3481d05e90720134 100644 --- a/pypcc/config/RECVTR_LB.yaml +++ b/pypcc/config/RECVTR_LB.yaml @@ -11,10 +11,6 @@ drivers: type: i2c_array #An array of similar devices connected to an I2C switch parent: I2C1 parameters: [20,22,0,2, 4,6,10,12, 14,16,18,24, 26,28,30,8, 7,5,3,1, 23,21,19,13, 11,9,15,17, 31,29,27,25] #RCU lookup table -# parameters: [20,22,0,2 ,4,6,32,32 ,32,32,32,32 ,32,32,32,32 ,32,32,32,32 ,32,32,32,32 ,32,32,32,32 ,32,32,32,32] #RCU lookup table -# parameters: [20,22,0,2,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32] #RCU lookup table -# parameters: [22,0,2,4,6,10,22,0,2,4,6,10,22,0,2,4,6,10,22,0,2,4,6,10,22,0,2,4,6,10,22,0]#repeat 1..7 for RCUH BF test -# 12,14,16,18,24,26,28,30,8,7,5,3,1,23,21,19,13,11,9,15,17,31,29,27,25] #RCU lookup table I2Ccut: 35 #error count to disable I2C (14 for LTS?) status: RECVTR_I2C_error - name: I2Cbb1 @@ -45,12 +41,12 @@ drivers: - name: SPIbb2 type: spibitbang1 devreg: [IO3.GPIO1,IO3.GPIO1,IO3.CONF1,IO3.GPIO2] - parameters: [3,2,2,1] + parameters: [1,2,2,1] parent: I2C_RCU - name: SPIbb3 type: spibitbang1 devreg: [IO3.GPIO1,IO3.GPIO1,IO3.CONF1,IO3.GPIO2] - parameters: [5,4,4,2] + parameters: [1,4,4,2] parent: I2C_RCU @@ -426,11 +422,23 @@ variables: mask: RCU_mask - name: RCU_DTH_shutdown - description: False means dither source & ADC powered on. + description: False means dither source powered on. driver: I2C_RCU - devreg: [IO3.GPIO1,IO3.GPIO1,IO3.GPIO2] + devreg: IO3.GPIO2 width: 1 - bitoffset: [7,6,7] + bitoffset: 7 + rw: rw + dtype: boolean + dim: 32 + mask: RCU_mask + debug: True + + - name: RCU_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: ro dtype: boolean dim: 96 @@ -438,6 +446,7 @@ variables: mask: ANT_mask debug: True + - name: RCU_PWR_ANT_on description: Antenna power output ON/OFF control. Monitored by Ant_VOUT. driver: I2C_RCU @@ -464,7 +473,7 @@ variables: description: RCU version number driver: I2C_RCU devreg: ROM.Version - width: 0x80 #16 characters + width: 0x100 #32 characters rw: ro dtype: string dim: 32 @@ -475,7 +484,7 @@ variables: description: PCB number (astron.nl/webforms/IenS-Boarden/view.php?id=xxx) driver: I2C_RCU devreg: ROM.Serial - width: 0x80 #16 characters + width: 0x100 #32 characters rw: ro dtype: string dim: 32 @@ -659,12 +668,13 @@ methods: - ADC3_on: 0 # - WAIT: 500 #ms to wait #Toggle enable pin - - IO3.GPIO1: 0xD5 #ADC_SDIO=high, clk=low, DTH_EN=high - - IO3.GPIO2: 0xC7 #ADC SC=high, DTH_SDA=high, DTH_EN=high + - RCU_ADC_shutdown : [1,1,1] +# - IO3.GPIO1: 0xD5 #ADC_SDIO=high, clk=low, DTH_EN=high +# - IO3.GPIO2: 0xC7 #ADC SC=high, DTH_SDA=high, DTH_EN=high - WAIT: 100 #ms to wait #todo: test if necessary - - IO3.GPIO1: 0x15 #enable ADC 0,1 - - IO3.GPIO2: 0x47 #enable ADC 2 - + - RCU_ADC_shutdown : [0,0,0] +# - IO3.GPIO1: 0x15 #enable ADC 0,1 +# - IO3.GPIO2: 0x47 #enable ADC 2 - RCU_DTH_on: Update #check dither while giving ADCs some time to lock # - WAIT: 500 #ms to wait - RCU_ADC_locked: Update #disabled for testing diff --git a/pypcc/config/RECVTR_LBQM.yaml b/pypcc/config/RECVTR_LBQM.yaml new file mode 100644 index 0000000000000000000000000000000000000000..995da15f788f2613490e607066ed1e6cc1636d74 --- /dev/null +++ b/pypcc/config/RECVTR_LBQM.yaml @@ -0,0 +1,787 @@ +version: "1.0" +description: "1234" +name: "RECVTR" + +drivers: + - name: I2C1 #TCA9548 + type: i2c_switch + devreg: [0x70,0x71,0x72,0x73] + parameters: [1] #I2C port number + - name: I2C_RCU + type: i2c_array #An array of similar devices connected to an I2C switch + parent: I2C1 + parameters: [20,22,0,2, 4,6,10,12, 14,16,18,24, 26,28,30,8, 7,5,3,1, 23,21,19,13, 11,9,15,17, 31,29,27,25] #RCU lookup table +# parameters: [20,22,0,2 ,4,6,32,32 ,32,32,32,32 ,32,32,32,32 ,32,32,32,32 ,32,32,32,32 ,32,32,32,32 ,32,32,32,32] #RCU lookup table +# parameters: [20,22,0,2,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32] #RCU lookup table +# parameters: [22,0,2,4,6,10,22,0,2,4,6,10,22,0,2,4,6,10,22,0,2,4,6,10,22,0,2,4,6,10,22,0]#repeat 1..7 for RCUH BF test +# 12,14,16,18,24,26,28,30,8,7,5,3,1,23,21,19,13,11,9,15,17,31,29,27,25] #RCU lookup table + I2Ccut: 35 #error count to disable I2C (14 for LTS?) + status: RECVTR_I2C_error + - name: I2Cbb1 + type: i2cbitbangp #I2C bitbang via GPIO expander + devreg: [IO3.GPIO2,IO3.GPIO2,IO3.CONF2] + parameters: [5,6,6] #pins + parent: I2C_RCU + - name: I2Cbb2 + type: i2cbitbangp + devreg: [IO3.GPIO2,IO3.GPIO2,IO3.CONF2] + parameters: [4,6,6] + parent: I2C_RCU + - name: I2Cbb3 + type: i2cbitbangp + devreg: [IO3.GPIO2,IO3.GPIO2,IO3.CONF2] + parameters: [3,6,6] + parent: I2C_RCU +# - name: I2Cbbp +# type: i2cbitbangp +# devreg: [IO3.GPIO2,IO3.GPIO2,IO3.CONF2] +# parameters: [5,4,3,6,6,6,6,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: 3 + description: [IO-Expander for filter selection,IO-Expander for ON/OFF, Band, BUFx2,IO-Expander for ADC control] + address: [0x75,0x76,0x20] + device: [TCA9539,TCA9539,TCA6416] + driver: I2C1 + 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: POL1 + address: 4 + - name: POL2 + 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: 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: RECVTR_monitor_rate + description: Rate at which monitored points are polled (seconds) + driver: I2C_RCU + rw: variable + dtype: uint8 + + - name: ANT_mask + description: Only RF chains with a true mask is set + driver: I2C_RCU + rw: variable #server RW variable, not linked to IO + dtype: boolean + dim: 96 + dim2: [3,32] + + - name: RCU_mask + description: Only RCUs with a true mask is set + driver: I2C_RCU + rw: variable #server RW variable, not linked to IO + dtype: boolean + dim: 32 + + - name: RECVTR_I2C_error + description: 0=Good, >0 communication error + driver: I2C_RCU + rw: ro #server RW variable, not linked to IO + dtype: uint8 + mask: RCU_mask + dim: 32 + +# - name: RCU_state +# description: State of RCUs 0=unknown, 1=ready, 2=busy, 3= wait PPS, 4=error +# driver: I2C_RCU +# rw: ro #server variable, not linked to IO +# dtype: uint8 +# dim: 1 + + - name: RECVTR_translator_busy + description: True when I2C line is busy + rw: ro #server variable, not linked to IO + dtype: boolean + dim: 1 + + - name: RCU_attenuator_dB + description: RCU Attenuation (dB) + driver: I2C_RCU + devreg: [IO1.GPIO1,IO1.GPIO2,IO2.GPIO1] + bitoffset: [0,0,0] + width: 5 + rw: rw + dtype: uint8 + dim: 96 + dim2: [3,32] + mask: ANT_mask + + - name: RCU_band_select + description: Band select 1=10MHz,2=30MHz + driver: I2C_RCU + devreg: [IO2.GPIO2,IO2.GPIO2,IO2.GPIO2] + bitoffset: [0,2,4] + width: 2 + rw: rw + dtype: uint8 + dim: 96 + dim2: [3,32] + mask: ANT_mask + + - 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 + dim: 32 + mask: RCU_mask + debug: True + + - 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 + dim: 32 + mask: RCU_mask + + - 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 + dim: 32 + mask: RCU_mask + + - name: RCU_TEMP + description: RCU PCB Temperature (Celsius) + driver: I2C_RCU + devreg: AN.Temp + width: 23 + scale: 3.827e-3 #T=DATAOUT * Vref/12.25/32. Vreg=1.5 V + convert_unit: Kelvin2Celsius + rw: ro + dtype: double + dim: 32 + monitor: true + read_parallel: true + mask: RECVTR_I2C_error + + - name: RCU_PWR_3V3 + description: RCU 3.3V voltage (V) + driver: I2C_RCU + devreg: AN.V_3v3 + width: 23 + scale: 1.463e-6 + rw: ro + dtype: double + dim: 32 + read_parallel: true + monitor: true + mask: RECVTR_I2C_error + + - name: RCU_PWR_1V8 + description: RCU 1.8V voltage (V) + driver: I2C_RCU + devreg: AN.V_1v8 + width: 23 + scale: 7.1526e-7 + rw: ro + dtype: double + dim: 32 + read_parallel: true + monitor: true + mask: RECVTR_I2C_error + + - name: RCU_PWR_2V5 + description: RCU 2.5V voltage (V) + driver: I2C_RCU + devreg: AN.V_2v5 + width: 23 + scale: 7.1526e-7 + rw: ro + dtype: double + dim: 32 + read_parallel: true + monitor: true + mask: RECVTR_I2C_error + + - name: RCU_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: 2.7895e-6 + rw: ro + dtype: double + dim: 96 + dim2: [3,32] + read_parallel: true + monitor: true + mask: RECVTR_I2C_error + + - name: RCU_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: 2.7895e-6 + rw: ro + dtype: double + dim: 96 + dim2: [3,32] + read_parallel: true + monitor: true + mask: RECVTR_I2C_error + + - name: RCU_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: 7.1526e-8 + rw: ro + dtype: double + dim: 96 + dim2: [3,32] + read_parallel: true + monitor: true + mask: RECVTR_I2C_error + + - 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 + dim: 32 + mask: RCU_mask + + - 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 + dim: 32 + monitor: true + mask: RECVTR_I2C_error + + - 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 + dim: 32 + mask: RCU_mask + + - name: RCU_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 + dim: 96 + dim2: [3,32] + mask: ANT_mask + debug: True + + - name: RCU_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 + dim: 96 + dim2: [3,32] + mask: ANT_mask + + - name: RCU_PCB_ID + description: Unique PCB ID + driver: I2C_RCU + devreg: ROM.ID + width: 32 + rw: ro + dtype: uint32 + dim: 32 + mask: RCU_mask + + - name: RCU_PCB_version + description: RCU version number + driver: I2C_RCU + devreg: ROM.Version + width: 0x80 #16 characters + rw: ro + dtype: string + dim: 32 + mask: RCU_mask + check_value: RCU2L + + - name: RCU_PCB_number + description: PCB number (astron.nl/webforms/IenS-Boarden/view.php?id=xxx) + driver: I2C_RCU + devreg: ROM.Serial + width: 0x80 #16 characters + rw: ro + dtype: string + dim: 32 + mask: RCU_mask + + - name: RCU_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 + dim: 96 + dim2: [3,32] +# monitor: true + read_parallel: true + + - name: RCU_ADC_sync + driver: I2C_RCU + devreg: [ADC1.SYNC_control,ADC2.SYNC_control,ADC3.SYNC_control] + width: 8 + rw: ro + dtype: uint8 + dim: 96 + dim2: [3,32] + debug: true + + - name: RCU_ADC_JESD + driver: I2C_RCU + devreg: [ADC1.JESD_control1,ADC2.JESD_control1,ADC3.JESD_control1] + width: 8 + rw: ro + dtype: uint8 + dim: 96 + dim2: [3,32] + debug: true + + - name: RCU_ADC_CML_level + driver: I2C_RCU + devreg: [ADC1.CML_level,ADC2.CML_level,ADC3.CML_level] + width: 8 + rw: ro + dtype: uint8 + dim: 96 + dim2: [3,32] + debug: true + + - name: RCU_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 + dim: 96 + dim2: [3,32] + mask: ANT_mask + read_parallel: all + + - name: RCU_DTH_PWR + description: RCU Dither source power + driver: I2C_RCU + devreg: [DTH1.PA_CONFIG,DTH2.PA_CONFIG,DTH3.PA_CONFIG] + width: 48 + rw: rw + dtype: double + scale: si4012_6bytes_to_pwr + dim: 96 + dim2: [3,32] + mask: ANT_mask + read_parallel: all +# debug: true + + +# - name: RCU_DTH_tune +# driver: I2C_RCU +# devreg: [DTH1.Tune,DTH2.Tune,DTH3.Tune] +# width: 16 +# rw: rw +# dtype: uint32 +# dim: 96 +# dim2: [3,32] +# mask: ANT_mask +# debug: true +# read_parallel: all + +# - name: RCU_DTH_config +# driver: I2C_RCU +# devreg: [DTH1.CONF,DTH2.CONF,DTH3.CONF] +# width: 8 +# rw: rw +# dtype: uint32 +# dim: 96 +# dim2: [3,32] +# mask: ANT_mask +# debug: true +# read_parallel: all + + - name: RCU_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 + dim: 96 + dim2: [3,32] + mask: ANT_mask + read_parallel: all + +# - name: RCU_DTH_Rev +# driver: I2C_RCU +# devreg: [DTH1.Rev,DTH2.Rev,DTH3.Rev] +# width: 88 +# rw: rw +# dtype: uint32 +# dim: 96 +# dim2: [3,32] +# mask: ANT_mask +# debug: true +# read_parallel: all + +methods: + - name: RECVTR_Init #Called after startup to load. Should have all stored registers + driver: I2C_RCU + debug: True + instructions: + - RCU_PCB_version: Update + - RCU_IO1_GPIO1: Update + - RCU_IO1_GPIO2: Update + - RCU_IO2_GPIO1: Update + - RCU_IO2_GPIO2: Update + - RCU_IO3_GPIO1: Update + - RCU_IO3_GPIO2: Update +# - IO1.GPIO2: Update +# - IO2.GPIO1: Update +# - IO2.GPIO2: Update +# - IO3.GPIO1: Update +# - IO3.GPIO2: Update + - IO3.CONF1: Update + - RCU_update: 0 + - RCU_ADC_locked: Update #check if not also in RCU_update + - RCU_DTH_on: Update #check if not also in RCU_update + + - name: RCU_on + description: Initialize RCU and it in the ON state + driver: I2C_RCU + mask: RCU_mask + instructions: + - RECVTR_I2C_error: 0 + - RCU_PCB_version: Update + - IO2.CONF1: 0x80 #Pgood on 0x80 + - IO2.GPIO1: 0x4A #0x40 Dig on, 0x0a =10dB att + - IO2.GPIO2: 0x55 #0x15 #Band0 (or 0x2a band 1) #LED green=on=low + - IO3.GPIO1: 0x15 #ADC_SDIO=high, clk=low, DTH_EN=low + - IO3.GPIO2: 0x47 #ADC SC=high, DTH_SDA=high, DTH_EN=low + - IO1.GPIO1: 0x0A #0x0a = 10dB att + - IO1.GPIO2: 0x8A #0x80 Analog on, 0x0a=10dB att +# - IO1.POL1: 0 +# - IO1.POL2: 0 +# - IO2.POL1: 0 +# - IO2.POL2: 0 + - IO2.CONF2: 0 + - IO3.CONF1: 0 + - IO3.CONF2: 0 + - IO3.POL1: 0 + - IO3.POL2: 0 + - IO1.CONF1: 0 + - IO1.CONF2: 0 +# - RCU_GPIO1: Update +# - RCU_GPIO2: Update +# - RCU_attenuator: [10,10,10] #Set OPC-UA variable +#name="RCU_DTH_shutdown" + - RCU_update: 0 + - WAIT: 500 #ms to wait + - ADC1_on: 0 #call another opc-ua method +# - WAIT: 1000 #ms to wait + - ADC2_on: 0 +# - WAIT: 1000 #ms to wait + - ADC3_on: 0 +# - WAIT: 500 #ms to wait +#Toggle enable pin + - IO3.GPIO1: 0xD5 #ADC_SDIO=high, clk=low, DTH_EN=high + - IO3.GPIO2: 0xC7 #ADC SC=high, DTH_SDA=high, DTH_EN=high + - WAIT: 100 #ms to wait #todo: test if necessary + - IO3.GPIO1: 0x15 #enable ADC 0,1 + - IO3.GPIO2: 0x47 #enable ADC 2 + + - RCU_DTH_on: Update #check dither while giving ADCs some time to lock +# - WAIT: 500 #ms to wait + - RCU_ADC_locked: Update #disabled for testing + + - name: RCU_update + driver: I2C_RCU + mask: RCU_mask + debug: True + instructions: + - RCU_PWR_DIGITAL_on: Update #Read value and update the OPC-UA variable + - RCU_PWR_ANALOG_on: Update + - RCU_PWR_ANT_on: Update + - RCU_PCB_ID: Update +# - RCU_PCB_version: Update + - RCU_PCB_number: Update + - RCU_LED_red_on: Update + - RCU_LED_green_on: Update + - RCU_attenuator_dB: Update + - RCU_band_select: Update +# - RCU_ADC_locked: Update #disabled for testing +# - RCU_ADC_sync: Update #disabled for testing +# - RCU_DTH_shutdown: Update +# - RCU_DTH_freq: Update +# - RCU_DTH_on: Update #disabled for testing + - RCU_IO1_GPIO1: Update #needed for debug/testing + - RCU_IO1_GPIO2: Update + - RCU_IO2_GPIO1: Update + - RCU_IO2_GPIO2: Update + - RCU_IO3_GPIO1: Update + - RCU_IO3_GPIO2: Update + + + - name: ADC1_on + driver: I2C_RCU + debug: True +# rw: hidden + 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 + + - name: ADC2_on + driver: I2C_RCU + debug: True +# rw: hidden + instructions: + - 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 + + - name: ADC3_on + driver: I2C_RCU + debug: True +# rw: hidden + instructions: + - 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 + + - name: RCU_off + description: Put RCU in low-power state + driver: I2C_RCU + mask: RCU_mask + instructions: + - RECVTR_I2C_error: 0 + - RCU_PWR_ANALOG_on: 0 #Switch power off + - RCU_PWR_DIGITAL_on: 0 #Switch power off + - IO2.GPIO1: 0 + - IO2.GPIO2: 0 + - IO3.GPIO1: 0 + - IO3.GPIO2: 0 + - IO1.GPIO1: 0 + - IO1.GPIO2: 0 + - RCU_update: 0 + #todo, also make all GPIO pins (except power enables) inputs to remove all power from devices. + + - name: RCU_DTH_on + description: Switch dither source on + driver: I2C_RCU + mask: RCU_mask +# rw: hidden + instructions: +# - RCU_DTH_config : [0,0,0] +# - RCU_DTH_config: Update #debug + - DTH1.CONF : [0,0,0] + - DTH2.CONF : [0,0,0] + - DTH3.CONF : [0,0,0] + - DTH1.Tune : [0,0] #no tuning + - DTH2.Tune : [0,0] #no tuning + - DTH3.Tune : [0,0] #no tuning +# - RCU_DTH_tune: Update #debug + - DTH1.Start : [0,1,0,0,1] + - DTH2.Start : [0,1,0,0,1] + - DTH3.Start : [0,1,0,0,1] + - RCU_DTH_on : Update + + - name: RCU_DTH_off + description: Switch dither source off + driver: I2C_RCU + mask: RCU_mask +# rw: hidden + instructions: +# - RCU_DTH_SHUTDOWN : [1,1,1] +# - WAIT: 100 +# - RCU_DTH_SHUTDOWN : [0,0,0] +# - RCU_DTH_SHUTDOWN : 1 + - DTH1.Stop : [0,0] + - DTH2.Stop : [0,0] + - DTH3.Stop : [0,0] +# - DTH1.State : [0,0] +# - DTH2.State : [0,0] +# - DTH3.State : [0,0] +# - RCU_DTH_on: Update + diff --git a/python_scripts/setVersion.py b/python_scripts/setVersion.py index 989d66e748745904bfdd07e9af887a83cf02acf3..ded37bc6db5f45b3256c3c291b36504f3b4976f9 100644 --- a/python_scripts/setVersion.py +++ b/python_scripts/setVersion.py @@ -1,5 +1,5 @@ ##NB translator should be off or monitor should be 0 -name='RECVTR_HB' #YAML config file with all register values etc +name='RECVTR_LB' #YAML config file with all register values etc varID='RCU_PCB_ID' #name='UNB2TR' #YAML config file with all register values etc @@ -11,17 +11,17 @@ logFile='SetVersion' import logging import argparse -from opcuaserv import opcuaserv -from opcuaserv import i2client -from opcuaserv import yamlreader +from pypcc.opcuaserv import opcuaserv +from pypcc.opcuaserv import i2client +from pypcc.opcuaserv import yamlreader #from opcuaserv import pypcc2 -from i2cserv import i2cthread +from pypcc.i2cserv import i2cthread import threading import time import sys import signal -from yamlconfig import Find; -import yamlconfig as yc +from pypcc.yamlconfig import Find; +import pypcc.yamlconfig as yc from datetime import datetime testtime=datetime.now().strftime("%y-%m-%d %H:%M") diff --git a/scripts/get_all.py b/scripts/get_all.py new file mode 100644 index 0000000000000000000000000000000000000000..5d5b91c35f0d4ed5e07d7cae42abe040579c4566 --- /dev/null +++ b/scripts/get_all.py @@ -0,0 +1,11 @@ +from test_common import * +from time import sleep +connect("opc.tcp://localhost:4841/") + + +names=get_all_variables() +for name in names: + att=get_value(name) + print(name,'=',att) + +disconnect(); diff --git a/scripts/test_common.py b/scripts/test_common.py index 02a36ba0596ef0217997ec45b3081c41504aeab0..2492c63d18f7ac995dd5e42b8ab2e2b69656941b 100644 --- a/scripts/test_common.py +++ b/scripts/test_common.py @@ -5,8 +5,10 @@ sys.path.insert(0, "..") import logging import time -from opcua import Client -from opcua import ua +from asyncua.sync import ua, Client + +#from opcua import Client +#from opcua import ua #import numpy as np def connect(Address=Address): @@ -45,9 +47,10 @@ def get_all_variables(): vars0=[] obj0=root.get_child(["0:Objects"]) for nodeid in obj0.get_children(): - ch = client.get_node(nodeid) - name=ch.get_display_name().Text - if ch.get_node_class()==ua.NodeClass.Variable: +# print(nodeid) + ch = client.get_node(nodeid.nodeid) + name=ch.read_display_name().Text + if ch.read_node_class()==ua.NodeClass.Variable: vars0.append(name) return vars0