diff --git a/bin/recvtr.service b/bin/recvtr.service index 084c78b595536b6d9c874aa3b41bc456240392a2..dfbe5d5b7378315f78eb09949c2bfb51b364f4a5 100644 --- a/bin/recvtr.service +++ b/bin/recvtr.service @@ -4,7 +4,7 @@ After=multi-user.target [Service] Type=simple -ExecStart=recvtr +ExecStart=recvtr2 [Install] WantedBy=multi-user.target diff --git a/bin/recvtr2 b/bin/recvtr2 new file mode 100755 index 0000000000000000000000000000000000000000..896ce8ef392fbc9151f939532131b59eb642cc04 --- /dev/null +++ b/bin/recvtr2 @@ -0,0 +1,18 @@ +#!/bin/bash +read_lmp_id +lmp_id=$? + +conffile="RECVTR_HB,PPS" + +if [ $lmp_id -lt 2 ] +then + conffile ="RECVTR_LB" +fi + +if [ $lmp_id -eq 10 ] || [ $lmp_id -eq 21 ] +then + conffile ="CCDTR" +fi + +echo $lmp_id,$conffile +hwtr -p 4840 -c $conffile diff --git a/install.sh b/install.sh index 62493797dc9b55a8f1dee28b3276fca04f7e7f79..923ed872b9ed6bb07649f129cfb7583a18f9fb13 100755 --- a/install.sh +++ b/install.sh @@ -1,6 +1,7 @@ #!/bin/bash sudo python3.11 setup.py install -sudo systemctl restart recvtr.service -sudo systemctl restart apscttr.service -sudo systemctl restart apsputr.service -sudo systemctl restart unb2tr.service +sudo systemctl restart pitr.service +#sudo systemctl restart recvtr.service +#sudo systemctl restart apscttr.service +#sudo systemctl restart apsputr.service +#sudo systemctl restart unb2tr.service diff --git a/pypcc/config/RECVTR_HBQM.yaml b/pypcc/config/RECVTR_HBQM.yaml new file mode 100644 index 0000000000000000000000000000000000000000..94045c1318d9e7c593c3a0d083f49963abfd0bb8 --- /dev/null +++ b/pypcc/config/RECVTR_HBQM.yaml @@ -0,0 +1,1044 @@ +version: "1.0" +description: "1234" +name: "RECVTR" + +drivers: + - name: I2C1 #TCA9548 + type: i2c_switch + devreg: [0x70,0x71,0x72,0x73] + parameters: [1] #I2C port number + parent: I2C_reset_GPIO + - name: I2C_reset_GPIO + type: gpio + parameters: [15] + - 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 + I2Ccut: 35 #error count to disable I2C (14 for LTS?) + status: RECVTR_I2C_error + - 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: 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 + +# - name: SPI3bb +# type: spibitbang3 #SPI bitbang via GPIO expander: CLK, SDIO, SDIOdir,CS +# devreg: [IO3.GPIO1,IO3.GPIO1,IO3.CONF1,IO3.GPIO2] +# parameters: [1,3,5, 0,2,4, 0,2,4, 0,1,2] +# parent: I2C_RCU +# - name: HBA_trigger +# type: gpio_hba_trigger +# parameters: [15] #PPS GPIO pin +# devreg: [0x40.0x10] #I2C broadcast register +# 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: 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: 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: JESD_control3 + description: JESD link control + address: 0x61 + - 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 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 + 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 #3.0V ref #T=DATAOUT * Vref/12.25/32. Vref=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 #3.0V ref, divider r=1/4, scale=Vref/2^23 / r + 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 #3.0V ref, divider r=1/2, scale=Vref/2^23 / r + 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 #3.0V ref, divider r=1/2 + 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: 1.43051e-5 #3V ref, divider r=1/40 + 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: 1.43051e-5 #3V ref, divider r=1/40 + 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: 3.9736e-7 #3V ref, 2.7K res, =Vref/2^(23) * 3000/R + 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 powered on. + driver: I2C_RCU + devreg: IO3.GPIO2 + width: 1 + bitoffset: 7 + rw: ro + 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 + 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: 0x100 #32 characters + rw: ro + dtype: string + dim: 32 + mask: RCU_mask + check_value: RCU2H + + - 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 + 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: 1 + rw: ro + dtype: boolean + dim: 96 + dim2: [3,32] +# debug: true + read_parallel: 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 + mask: ANT_mask + + - name: RCU_ADC_testsignal + driver: I2C_RCU + devreg: [ADC1.JESD_control1,ADC2.JESD_control1,ADC3.JESD_control1] + width: 1 + bitoffset: 5 + rw: ro + dtype: boolean + dim: 96 + dim2: [3,32] + mask: ANT_mask + + - name: RCU_ADC_JESD3 + driver: I2C_RCU + devreg: [ADC1.JESD_control3,ADC2.JESD_control3,ADC3.JESD_control3] + width: 8 + rw: rw + dtype: uint8 + dim: 96 + dim2: [3,32] + debug: true + mask: ANT_mask + + - 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 (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 + dim: 96 + dim2: [3,32] + mask: ANT_mask + read_parallel: all +# debug: true + + - 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 + + +#RCU2H points + - name: 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 + dim: 96 + dim2: [3,32] + mask: ANT_mask + + - name: RCU_firmware_version + description: git firmware version + driver: I2C_RCU + devreg: HB_UC.firmware + width: 32 + rw: ro + dtype: uint32 + endian: "<" + dim: 32 + mask: RCU_mask + +#HBAT points + - name: HBAT_BF_delay_steps + description: HBAT1 frontend delays (0.5ns steps) + driver: I2C_HBAT + devreg: [HBAT1.XY,HBAT2.XY,HBAT3.XY] + bitoffset: [2,2,2] + width: 5 + rw: rw + dtype: uint8 + dim: 3072 + dim2: [32,96] + mask: ANT_mask + wait: -1 #-1 = PPS +# wait: 1000 #ms + + - name: [RCU_IO4_GPIO1,RCU_IO4_GPIO2] + driver: I2C_RCU + devreg: [IO4.GPIO1,IO4.GPIO2] + width: 8 + rw: ro + dtype: uint8 + dim: 32 + mask: RCU_mask + debug: True + + + - name: HBAT_LED_on + description: HBA frontend control + driver: I2C_HBAT + devreg: [HBAT1.XY,HBAT2.XY,HBAT3.XY] + bitoffset: 0 + width: 1 + rw: rw + dtype: boolean + dim: 3072 + dim2: [32,96] + mask: ANT_mask + wait: 1000 + - name: HBAT_PWR_LNA_on + description: HBA frontend control + driver: I2C_HBAT + devreg: [HBAT1.XY,HBAT2.XY,HBAT3.XY] + bitoffset: 7 + width: 1 + rw: rw + dtype: boolean + dim: 3072 + dim2: [32,96] + mask: ANT_mask + wait: 1000 + - name: HBAT_PWR_on + description: HBA frontend control + driver: I2C_HBAT + devreg: [HBAT1.XY,HBAT2.XY,HBAT3.XY] + bitoffset: 1 + width: 1 + rw: rw + dtype: boolean + convert_unit: bool_invert + dim: 3072 + dim2: [32,96] + mask: ANT_mask + wait: 1000 + +# - name: [RCU_uC_VPP,RCU_uC_PGC,RCU_uC_PGD] +# driver: I2C_RCU +# devreg: IO4.GPIO2 +# bitoffset: [0,3,0] +# width: 3 +# rw: rw +# dtype: uint8 +# dim: 96 +# dim2: [3,32] +# mask: ANT_mask + + +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_ADC_sync: Update #disabled for testing + - RCU_ADC_testsignal: Update #disabled for testing + - RCU_DTH_on: Update #check if not also in RCU_update + - RCU_IO4_GPIO1: Update #should be last, as it will fail for low-band + - 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 + - RCU_PCB_version: Update + #Start with all off + - IO2.GPIO1: 0x00 #default is 1, so should be cleared before making output + - IO2.CONF1: 0x80 #Pgood on 0x80 + - IO1.GPIO2: 0x00 # + - IO1.CONF2: 0 # + + #Power on + - RCU_PWR_DIGITAL_on : 1 #switch on with delay + - RCU_PWR_ANALOG_on : 1 #switch on with delay + #Set registers to default values + +# - IO1.POL1: 0 +# - IO1.POL2: 0 +# - IO2.POL1: 0 +# - IO2.POL2: 0 +# - IO4.POL1: 0 +# - IO4.POL2: 0 + - IO2.GPIO1: 0x4A #0x40 Dig on, 0x0a =10dB att + - IO2.GPIO2: 0x52 #0x09 #Band0 (or 0x12 or 0x24) #LED green=on=low 0x40 +# - IO3.GPIO1: 0xD5 #ADC_SDIO=high, clk=low, DTH_EN=high +# - IO3.GPIO2: 0xC7 #ADC SC=high, DTH_SDA=high + - IO3.POL1: 0 + - IO3.POL2: 0 + - IO3.GPIO1: 0x15 # x001 0101 #ADC_SDIO=high, clk=low, PWDN=low=on DTH_EN=low + - IO3.GPIO2: 0x47 # 0100 0111 #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 +#ADC SPI bus reset + - IO3.GPIO2: 0xC0 #CS low, DTH Shutdown + - IO3.GPIO1: 0x17 #CLK high + - IO3.GPIO1: 0x15 #CLK low + - IO3.GPIO1: 0x17 #CLK high + - IO3.GPIO1: 0x15 #CLK low + - IO3.GPIO2: 0x47 #CS high + + + - IO4.CONF1: 0xC0 #pin 0x40, 0x80 not used + - IO4.CONF2: 0x00 #reset uC? + - IO4.GPIO1: 0x2A #DAB switch states: 0x2A or 0x51 + - IO4.GPIO2: 0x02 #Band select + - IO4.CONF2: 0xF8 + - HB_UC.waitPPS: 1 #wait for PPS + - HB_UC.VREF: 0x0C + + - RCU_update: 0 +# - RCU_GPIO1: Update +# - RCU_GPIO2: Update +# - RCU_attenuator: [10,10,10] #Set OPC-UA variable +# - WAIT: 500 #ms to wait + - ADC1_on: 0 #call another opc-ua method + - ADC2_on: 0 + - ADC3_on: 0 +# - IO3.GPIO1: 0xD5 #DTH_EN=high -> ADCs disables +# - IO3.GPIO2: 0xC7 # + - WAIT: 100 #ms to wait + - RCU_ADC_shutdown : [1,1,1] + - WAIT: 100 #ms to wait + - RCU_ADC_shutdown : [1,1,0] +# - WAIT: 10 #ms to wait + - RCU_ADC_shutdown : [1,0,0] +# - WAIT: 10 #ms to wait + - RCU_ADC_shutdown : [0,0,0] +# - IO3.GPIO1: 0x15 #DTH_EN=low -> ADC enabled +# - IO3.GPIO2: 0x47 + - RCU_DTH_on: Update #check dither while giving ADCs some time to lock + - RCU_ADC_locked: Update #disabled for testing + - RCU_ADC_sync: Update #disabled for testing + - RCU_ADC_testsignal: 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_DTH_shutdown: Update +# - RCU_DTH_freq: Update +# - RCU_DTH_on: Update #disabled for testing +# - RCU_hband_select: Update + - RCU_DAB_filter_on: Update + - RCU_firmware_version: Update + - 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 + - RCU_IO4_GPIO1: Update + - RCU_IO4_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_HBAT_WAIT_PPS +# driver: I2C_RCU +# mask: RCU_mask +# debug: True +# instructions: +# - RCU_state: 3 +# - HB_UC_update.wait_pps : 1 +# - RCU_state: 1 + +# Frequencies used: +# 97402400, 97419775, 97437100, 98260000, 98274975, 98289900, 97845600, 97861775, +# 97877900, 98645600, 98659375, 98673100, 97627600, 97644375, 97661100, 98456400, +# 98470775, 98485100, 98056400, 98071975, 98087500, 98827600, 98840775, 98853900, +# 97515900, 97532975, 97550000, 98359100, 98373775, 98388400, 97951900, 97967775, +# 97983600, 98737500, 98750975, 98764400, 97737500, 97753975, 97770400, 98551900, +# 98565975, 98580000, 98159100, 98174375, 98189600, 98915900, 98928775, 98941600, +# 97459375, 97476600, 97493775, 98309775, 98324600, 98339375, 97898975, 97915000, +# 97930975, 98691775, 98705400, 98718975, 97682775, 97699400, 97715975, 98504375, +# 98518600, 98532775, 98107975, 98123400, 98138775, 98871975, 98885000, 98897975, +# 97571975, 97588900, 97605775, 98407975, 98422500, 98436975, 98004375, 98020100, +# 98035775, 98782775, 98796100, 98809375, 97791775, 97808100, 97824375, 98598975, +# 98612900, 98626775, 98209775, 98224900, 98239975, 98959375, 98972100, 98984775 + + + - name: RCU_DTH_on + description: Switch dither source on + driver: I2C_RCU + mask: RCU_mask +# rw: hidden + instructions: + - RCU_DTH_freq : [ + 5, 206, 62, 32, 5, 206, 129, 255, 5, 206, 197, 172, 5, 219, 84, 32, 5, 219, 142, 159, 5, 219, 200, 236, 5, 213, 1, 96, 5, 213, 64, 143, 5, 213, 127, 140, + 5, 225, 54, 96, 5, 225, 108, 47, 5, 225, 161, 204, 5, 209, 173, 208, 5, 209, 239, 87, 5, 210, 48, 172, 5, 222, 83, 80, 5, 222, 139, 119, 5, 222, 195, 108, + 5, 216, 56, 208, 5, 216, 117, 167, 5, 216, 178, 76, 5, 227, 253, 80, 5, 228, 48, 199, 5, 228, 100, 12, 5, 207, 249, 124, 5, 208, 60, 47, 5, 208, 126, 176, + 5, 220, 215, 60, 5, 221, 16, 143, 5, 221, 73, 176, 5, 214, 160, 156, 5, 214, 222, 159, 5, 215, 28, 112, 5, 226, 157, 92, 5, 226, 209, 255, 5, 227, 6, 112, + 5, 211, 91, 28, 5, 211, 155, 119, 5, 211, 219, 160, 5, 223, 200, 92, 5, 223, 255, 87, 5, 224, 54, 32, 5, 217, 201, 252, 5, 218, 5, 167, 5, 218, 65, 32, + 5, 229, 86, 60, 5, 229, 136, 135, 5, 229, 186, 160, 5, 207, 28, 175, 5, 207, 95, 248, 5, 207, 163, 15, 5, 220, 22, 143, 5, 220, 80, 120, 5, 220, 138, 47, + 5, 213, 209, 223, 5, 214, 16, 120, 5, 214, 78, 223, 5, 225, 234, 191, 5, 226, 31, 248, 5, 226, 84, 255, 5, 210, 133, 87, 5, 210, 198, 72, 5, 211, 7, 7, + 5, 223, 14, 183, 5, 223, 70, 72, 5, 223, 125, 167, 5, 217, 2, 71, 5, 217, 62, 136, 5, 217, 122, 151, 5, 228, 170, 167, 5, 228, 221, 136, 5, 229, 16, 55, + 5, 208, 212, 135, 5, 209, 22, 164, 5, 209, 88, 143, 5, 221, 150, 39, 5, 221, 206, 228, 5, 222, 7, 111, 5, 215, 109, 151, 5, 215, 171, 4, 5, 215, 232, 63, + 5, 227, 78, 55, 5, 227, 130, 68, 5, 227, 182, 31, 5, 212, 47, 31, 5, 212, 110, 228, 5, 212, 174, 119, 5, 224, 128, 63, 5, 224, 182, 164, 5, 224, 236, 215, + 5, 218, 143, 239, 5, 218, 203, 4, 5, 219, 5, 231, 5, 230, 0, 15, 5, 230, 49, 196, 5, 230, 99, 71 + ] + - DTH1.PA_CONFIG : [0,45,0,0,125,127] + - DTH2.PA_CONFIG : [0,45,0,0,125,127] + - DTH3.PA_CONFIG : [0,45,0,0,125,127] + - RCU_DTH_PWR : Update +# - RCU_DTH_config : [0,0,0] +# - RCU_DTH_config: Update #debug + - RCU_DTH_setup : 0 + - 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 + + - name: RCU_DTH_restart #restart to update frequency + driver: I2C_RCU + mask: RCU_mask + debug: True + instructions: + - DTH1.Stop : [0,0] + - DTH2.Stop : [0,0] + - DTH3.Stop : [0,0] + - DTH1.Start : [0,1,0,0,1] + - DTH2.Start : [0,1,0,0,1] + - DTH3.Start : [0,1,0,0,1] + + + - name: RCU_ADC_testsignal_on + driver: I2C_RCU + instructions: + - ADC1.JESD_control1 : 0x34 + - ADC1.Update: 1 #Needed to update ADC registers + - ADC2.JESD_control1 : 0x34 + - ADC2.Update: 1 #Needed to update ADC registers + - ADC3.JESD_control1 : 0x34 + - ADC3.Update: 1 #Needed to update ADC registers + - RCU_ADC_testsignal: Update #disabled for testing diff --git a/setup.cfg b/setup.cfg index 7463ac67a3ae651da73a1775c89329915a25e1fb..fd9fbd47744054b706ed0107e0e5b7bbf1df8735 100644 --- a/setup.cfg +++ b/setup.cfg @@ -15,7 +15,7 @@ packages=find: python_requires = >=3.7 scripts = bin/unb2tr bin/apscttr - bin/recvtr + bin/recvtr2 bin/apsputr bin/ccdtr