spi-capture-analysis-8.ino

Sipeed SLogic32U3: 32-Channel USB 3.2 Gen2 Logic Analyzer · File : spi-capture-analysis-8.ino · Language : python · Use case : Capturer un bus SPI à 4 canaux (MOSI, MISO, SCK, CS) et décoder les trames avec sigrok-cli pour identifier les commandes.

Using sigrok-cli via Python to capture SPI lines and decode the protocol in real-time to visualize sent packets.

Hardware: SLogic32U3 with 4 channels connected to SPI signals. Software: sigrok-cli. Execution: ensure channels match SCK/MOSI/MISO/CS order. SPI decoder requires active CS (usually low, but configurable).

spi-capture-analysis-8.ino

import subprocess
import sys

# Configuration de la capture SPI
# Canaux : 0=SCK, 1=MOSI, 2=MISO, 3=CS (Exemple de câblage)
# Taux : 800 MS/s pour 4 canaux maximum
DRIVER = 'slogic'
CHANNELS = '0-3'
RATE = '800M'
TIME = '1s'
DECODER = 'spi'
DECODER_OPTS = 'mode=0 cpol=0 cpha=0 cs_active=high'

command = [
    'sigrok-cli',
    '-d', DRIVER,
    '-c', CHANNELS,
    '-r', RATE,
    '-A', TIME,
    '-p', f'0={DECODER} {DECODER_OPTS}',
    '-O', 'decode'
]

print("Lancement de la capture et décodage SPI...")
try:
    result = subprocess.run(command, capture_output=True, text=True, check=True)
    print("Données décodées :")
    print(result.stdout)
except subprocess.CalledProcessError as e:
    print(f"Erreur lors de la capture : {e.stderr}")
except FileNotFoundError:
    print("Erreur : sigrok-cli non trouvé. Installez-le d'abord.")

← Back to the board