-
Notifications
You must be signed in to change notification settings - Fork 62
Expand file tree
/
Copy pathexample_mp.py
More file actions
93 lines (79 loc) · 2.78 KB
/
example_mp.py
File metadata and controls
93 lines (79 loc) · 2.78 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
"""
Basic usage of PPK2 Python API - multiprocessing version.
The basic ampere mode sequence is:
1. read modifiers
2. set ampere mode
3. read stream of data
"""
import time
from ppk2_api.ppk2_api import PPK2_MP as PPK2_API
ppk2s_connected = PPK2_API.list_devices()
if len(ppk2s_connected) == 1:
ppk2_port = ppk2s_connected[0][0]
ppk2_serial = ppk2s_connected[0][1]
print(f"Found PPK2 at {ppk2_port} with serial number {ppk2_serial}")
else:
print(f"Too many connected PPK2's: {ppk2s_connected}")
exit()
ppk2_test = PPK2_API(
ppk2_port,
buffer_max_size_seconds=1,
buffer_chunk_seconds=0.01,
timeout=1,
write_timeout=1,
exclusive=True,
)
ppk2_test.get_modifiers()
ppk2_test.set_source_voltage(3300)
"""
Source mode example
"""
# set source meter mode
ppk2_test.use_source_meter()
# enable DUT power
ppk2_test.toggle_DUT_power("ON")
# start measuring
ppk2_test.start_measuring()
# measurements are a constant stream of bytes
# the number of measurements in one sampling period depends on the wait between serial reads
# it appears the maximum number of bytes received is 1024
# the sampling rate of the PPK2 is 100 samples per millisecond
while True:
read_data = ppk2_test.get_data()
if read_data != b"":
samples, raw_digital = ppk2_test.get_samples(read_data)
print(f"Average of {len(samples)} samples is: {sum(samples)/len(samples)}uA")
# Raw digital contains the raw digital data from the PPK2
# The number of raw samples is equal to the number of samples in the samples list
# We have to process the raw digital data to get the actual digital data
digital_channels = ppk2_test.digital_channels(raw_digital)
for ch in digital_channels:
# Print last 10 values of each channel
print(ch[-10:])
print()
time.sleep(0.001)
# disable DUT power
ppk2_test.toggle_DUT_power("OFF")
ppk2_test.stop_measuring()
"""
Ampere mode example
"""
# set ampere meter mode
ppk2_test.use_ampere_meter()
ppk2_test.start_measuring()
while True:
read_data = ppk2_test.get_data()
if read_data != b"":
samples, raw_digital = ppk2_test.get_samples(read_data)
print(f"Average of {len(samples)} samples is: {sum(samples)/len(samples)}uA")
# Raw digital contains the raw digital data from the PPK2
# The number of raw samples is equal to the number of samples in the samples list
# We have to process the raw digital data to get the actual digital data
digital_channels = ppk2_test.digital_channels(raw_digital)
for ch in digital_channels:
# Print last 10 values of each channel
print(ch[-10:])
print()
# lower time between sampling -> less samples read in one sampling period
time.sleep(0.001)
ppk2_test.stop_measuring()