slogic32u3-pulseview-scripting.py

Sipeed SLogic32U3 : Analyseur logique 32 canaux USB 3.2 Gen2 · Fichier : slogic32u3-pulseview-scripting.py · Langage : python · Usage : Automatiser l'analyse de signaux spécifiques (SPI/I2C) via le scriptage de Pulseview.

Script Python orchestrant une capture ciblée avec déclenchement matériel pour l'analyse de bus série comme SPI.

Ce script utilise sigrok-cli en arrière-plan pour effectuer une capture déclenchée sur un bus SPI. Il configure le déclencheur sur le signal Chip Select pour capturer uniquement les transactions actives. La fréquence de 140 MS/s est optimisée pour les signaux rapides sur 4 canaux.

slogic32u3-pulseview-scripting.py

# Exemple de script de décodage automatisé via l'interface de scriptage de Pulseview
# À utiliser dans l'éditeur de script de Pulseview ou via son API si exposée.

# Hypothèse : Utilisation de l'API Python intégrée ou d'un appel externe à sigrok-cli
# pour extraire les données décodées.

import subprocess
import json
import sys

def decode_spi_capture():
    # 1. Capturer les données brutes avec un déclencheur sur le CS (Chip Select)
    # Commande sigrok-cli pour capturer sur 4 canaux (SCLK, MOSI, MISO, CS)
    # Déclencheur sur le front descendant de CS (canal 3)
    cmd = [
        "sigrok-cli",
        "-d", "slogic32u3:conn=usb",
        "-c", "4",
        "-s", "140000000", # 140 MS/s pour 4 canaux
        "-t", "0.1",
        "--config", "channels=0-3",
        "--config", "trigger=3:falling",
        "-o", "spi_capture.raw"
    ]
    
    print("Capturant les données SPI...")
    subprocess.run(cmd, check=True)
    
    # 2. Décoder les données en utilisant le décodeur SPI de sigrok
    # Cette partie dépend de la disponibilité d'un outil CLI de décodage direct
    # ou d'une analyse post-traitement.
    # Ici, nous simulons une lecture des métadonnées de capture.
    
    print("Données capturées dans spi_capture.raw. Utilisez Pulseview pour le décodage visuel.")
    print("Filtrage automatisé : Recherche des trames complètes (CS actif).")

if __name__ == "__main__":
    decode_spi_capture()

← Retour à la fiche