k8ik-stm/Control/rendered/STM_Control.md

125 lines
2 KiB
Markdown

```python
import time
import numpy as np
from matplotlib import pyplot as plt
from rp_overlay import overlay
import rp
fpga = overlay()
rp.rp_Init()
print("Red Pitaya initialized.")
```
Check FPGA [OK].
Red Pitaya initialized.
```python
rp.rp_GenReset()
rp.rp_AcqReset()
print("Reset generator and acquisition.")
```
Reset generator and acquisition.
```python
# Generator parameters
channel = rp.RP_CH_1
channel2 = rp.RP_CH_2
waveform = rp.RP_WAVEFORM_SINE
freq = 1
ampl = 1.0
print("Gen_start")
rp.rp_GenWaveform(channel, waveform)
rp.rp_GenFreqDirect(channel, freq)
rp.rp_GenAmp(channel, ampl)
rp.rp_GenWaveform(channel2, waveform)
rp.rp_GenFreqDirect(channel2, freq)
rp.rp_GenAmp(channel2, ampl)
rp.rp_GenTriggerSource(channel, rp.RP_GEN_TRIG_SRC_INTERNAL)
rp.rp_GenOutEnableSync(True)
rp.rp_GenSynchronise()
print("Started generator.")
```
Gen_start
Generator started.
```python
# Set Decimation
rp.rp_AcqSetDecimationFactor(16384)
rp.rp_AcqSetAveraging(True)
rp.rp_AcqSetGain(rp.RP_CH_1, rp.RP_HIGH)
V=rp.rp_AcqGetGainV(rp.RP_CH_1)
print("GainVoltage", V)
# Set trigger level and delay
rp.rp_AcqSetTriggerLevel(rp.RP_T_CH_1, 0.5)
rp.rp_AcqSetTriggerDelay(0)
# Start Acquisition
print("Acq_start")
rp.rp_AcqStart()
time.sleep(3)
# Specify trigger - immediately
rp.rp_AcqSetTriggerSrc(rp.RP_TRIG_SRC_NOW)
# Trigger state
while 1:
trig_state = rp.rp_AcqGetTriggerState()[1]
if trig_state == rp.RP_TRIG_STATE_TRIGGERED:
break
# Fill state
while 1:
if rp.rp_AcqGetBufferFillState()[1]:
break
### Get data ###
# Volts
N = 16384
fbuff = rp.fBuffer(N)
res = rp.rp_AcqGetOldestDataV(rp.RP_CH_1, N, fbuff)[1]
data_V = np.zeros(N, dtype = float)
X = np.arange(0, N, 1)
for i in range(0, N, 1):
data_V[i] = fbuff[i]
plt.plot(X, data_V)
plt.show()
```
GainVoltage [0, 20.0]
Acq_start
![png](STM_Control_files/STM_Control_3_1.png)
Only run the `rp_Release()` below when you do not want to further acquire data.
```python
# Release resources
rp.rp_Release()
```