Files

4.7 KiB

Configuration CV/GATE pour STM32F3 Discovery

Vue d'ensemble

Ce projet implémente des sorties CV (Control Voltage) et GATE pour convertir les mouvements de souris ADB en signaux analogiques utilisables avec des synthétiseurs modulaires ou d'autres équipements audio analogiques.

Méthode utilisée : DAC 12-bit STM32F3 via HAL

Configuration matérielle

STM32F3 Discovery - Broches utilisées

  • CV1 (Axe X) : PA4 - DAC1_OUT1
  • CV2 (Axe Y) : PA5 - DAC1_OUT2
  • GATE (Bouton souris) : PA0 - Sortie numérique

Caractéristiques du DAC

  • Résolution : 12-bit (4096 niveaux, 0-4095)
  • Tension de sortie : 0V à 3.3V
  • Impédance de sortie : ~15kΩ
  • API utilisée : STM32 HAL (HAL_DAC_SetValue)

Schéma de conversion

Déplacements de souris vers CV (Mode cumulatif)

  • Les valeurs de déplacement de souris (int8_t, -128 à +127) sont utilisées pour incrémenter/décrémenter les valeurs CV courantes
  • Formule de mise à jour : CV_nouvelle = CV_courante + (mouvement_souris * CV_STEP_SIZE)
  • Point de départ : 2047 (correspond à ~1.65V au centre)
  • Taille de pas par défaut : 8 (configurable via CV_STEP_SIZE)
  • Plage de valeurs : 0-4095 (0V à 3.3V)
  • Comportement :
    • Mouvement vers la droite (+X) → CV1 augmente
    • Mouvement vers la gauche (-X) → CV1 diminue
    • Mouvement vers le haut (+Y) → CV2 augmente
    • Mouvement vers le bas (-Y) → CV2 diminue
  • Limitation automatique : Les valeurs sont automatiquement limitées entre 0 et 4095

Signal GATE

  • Bouton relâché : 0V (LOW)
  • Bouton appuyé : 3.3V (HIGH)

Utilisation avec des synthétiseurs modulaires

Mise à l'échelle pour Eurorack (±5V)

Pour utiliser avec des modules Eurorack, vous devrez ajouter un circuit d'amplification et de décalage :

  1. Amplificateur opérationnel pour passer de 0-3.3V à -5V/+5V
  2. Résistances de précision pour le calibrage
  3. Condensateurs de découplage pour filtrer le bruit numérique

Exemple de circuit d'interface

STM32 DAC (0-3.3V) → Op-Amp (TL072) → Sortie CV (-5V/+5V)
                    ↑
               Alimentation ±12V

Code d'initialisation

Le DAC est automatiquement initialisé dans hid_mouse_init() :

  • Configuration HAL du DAC1 avec canaux 1 et 2
  • Activation du buffer de sortie pour de meilleures performances
  • Démarrage automatique des canaux DAC
  • Initialisation des valeurs CV au centre (2047)
  • Vraies sorties analogiques sans besoin de filtrage

Contrôle des valeurs cumulatives

Fonctions disponibles

// Remet les valeurs CV au centre (2047 = 1.65V)
void hid_mouse_reset_cv_values(void);

// Obtient la valeur CV1 actuelle (0-4095)
uint16_t hid_mouse_get_cv1_value(void);

// Obtient la valeur CV2 actuelle (0-4095)  
uint16_t hid_mouse_get_cv2_value(void);

Utilisation pratique

  • Reset : Appelez hid_mouse_reset_cv_values() pour remettre les CV au centre
  • Lecture : Utilisez les fonctions get_cv*_value() pour surveiller les valeurs actuelles
  • Persistance : Les valeurs CV sont maintenues tant que le microcontrôleur est alimenté

Debugging et monitoring

Le code inclut des messages série pour surveiller les valeurs CV/GATE :

  • Affichage des coordonnées de souris originales
  • Affichage des valeurs DAC converties
  • État du signal GATE

Remarques importantes

  1. Filtrage : Considérez l'ajout de filtres passe-bas en sortie pour lisser les transitions
  2. Calibrage : Les valeurs peuvent nécessiter un ajustement selon votre application
  3. Protection : Ajoutez des protections en cas de court-circuit sur les sorties

Modifications possibles

Changement de broches

Pour utiliser d'autres broches DAC, modifiez les définitions dans hid_mouse.h :

#define DAC_CV1_PIN PA4  // Sortie CV1 
#define DAC_CV2_PIN PA5  // Sortie CV2
#define GATE_PIN PA0     // Sortie GATE

Note : Seules les broches avec capacité DAC peuvent être utilisées (PA4, PA5 sur STM32F3)

Ajustement de la sensibilité

Modifiez la taille de pas dans hid_mouse.h :

#define CV_STEP_SIZE 8  // Augmentez pour plus de sensibilité, diminuez pour plus de précision

Exemples de valeurs :

  • CV_STEP_SIZE 4 : Mouvement fin et précis
  • CV_STEP_SIZE 16 : Mouvement rapide et large

Changement de la valeur centrale

#define CV_CENTER_VALUE 2047  // Centre à 1.65V
// ou
#define CV_CENTER_VALUE 0     // Démarrage à 0V
// ou  
#define CV_CENTER_VALUE 4095  // Démarrage à 3.3V

Compatibilité

Cette implémentation est spécifique au STM32F3. Pour d'autres microcontrôleurs :

  • STM32F4/F7 : Code similaire avec adaptations HAL
  • ESP32 : Utilise les DAC intégrés avec des APIs différentes
  • Arduino Uno : PWM avec filtres passe-bas externes