slogic32u3-adc-analog-capture.py
Ejemplo de adquisición de datos analógicos a través del módulo ADC opcional, con conversión digital a voltaje.
Este código asume que el módulo ADC opcional es reconocido por el controlador libsigrok como canales analógicos. Configura el muestreo a 100 MSa/s y lee datos sin procesar. La conversión de voltaje usa una referencia de 3.3 V sobre 8 bits, a ajustar según la especificación real del módulo.
slogic32u3-adc-analog-capture.py
import libsigrok
import numpy as np
# Hypothèse : Le module ADC est exposé comme des canaux analogiques supplémentaires
# ou via un pilote spécifique. Les canaux analogiques sont souvent indexés après les logiques.
# Exemple : Canaux 32-35 pour les 4 entrées analogiques.
def read_analog_channels():
ctx = libsigrok.Context()
drivers = ctx.driver_list()
driver = next((d for d in drivers if 'slogic' in d.name.lower()), None)
dev = driver.scan()[0]
dev.open()
# Activer les canaux analogiques (ex: 4 canaux)
# Note : La configuration exacte des canaux analogiques dépend du pilote
dev.config_set(libsigrok.CONF_NUM_ANALOG_CHANNELS, 4)
dev.config_set(libsigrok.CONF_SAMPLE_RATE, 100000000) # 100 MSa/s
dev.start()
samples = []
try:
# Lire quelques paquets
for _ in range(10):
packet = dev.receive()
if packet:
samples.extend(packet)
finally:
dev.stop()
dev.close()
# Conversion en tension
# ADC 8 bits, plage 0-3.3V (à vérifier selon le schéma du module ADC)
# Si les données sont brutes (0-255) :
data = np.array(samples)
# Supposons que les données sont entiers 8-bit
voltages = (data / 255.0) * 3.3
print(f"Tension moyenne Canal 0 : {np.mean(voltages[:len(voltages)//4]):.2f} V")
if __name__ == "__main__":
read_analog_channels()