Last active
September 21, 2023 01:57
-
-
Save bergkvist/13f8623812256313374c3d5bff0b9f5a to your computer and use it in GitHub Desktop.
Saleae Logic 2 Automation in Python - working with UART.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# pip install pyserial==3.5 logic2-automation==1.0.6 | |
from saleae import automation | |
import serial | |
import time | |
# Make sure that this is accessible to your Linux user. It probably isn't. | |
# Run `sudo chmod a+rw /dev/ttyUSB1` to allow everyone on the machine access. | |
tty = serial.Serial('/dev/ttyUSB1') # UART over USB | |
# Remember to enable "Automation" in Logic 2 software. | |
# Preferences > Enable Automation Server ([Ctrl+,] opens preferences) | |
# 10430 is the default port Logic 2 listens on when this is activated | |
manager = automation.Manager.connect(port=10430) | |
# device_id can be left out, or be set to the serial number of your logic analyzer. | |
# manager.start_capture(...) is non-blocking, and starts the capture in the background. | |
capture = manager.start_capture( | |
device_id='0000000000000000', | |
device_configuration=automation.LogicDeviceConfiguration( | |
enabled_digital_channels=[0,1,2,3], | |
enabled_analog_channels=[0,1,2,3], | |
digital_sample_rate=500_000_000, | |
analog_sample_rate=12_500_000, | |
digital_threshold_volts=3.3, | |
), | |
capture_configuration=automation.CaptureConfiguration( | |
capture_mode=automation.TimedCaptureMode(duration_seconds=1.0) | |
) | |
) | |
# You can now do whatever you want for the duration of the capture | |
# and run any kind of tests your desire | |
time.sleep(0.5) | |
tty.write(b'Hello world') | |
# Analyzers can be added after capture/tests have finished, as you don't want | |
# adding them to affect the timing of your tests. | |
# This will helpfully show our decoded UART-data as labels over the waveform | |
capture.add_analyzer(label='UART RX', | |
name='Async Serial', | |
settings={'Input Channel': 2, | |
'Bit Rate (Bits/s)': 9600, | |
'Bits per Frame': 8, | |
'Stop Bits': 1}) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment