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 :
- Amplificateur opérationnel pour passer de 0-3.3V à -5V/+5V
- Résistances de précision pour le calibrage
- 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
- Filtrage : Considérez l'ajout de filtres passe-bas en sortie pour lisser les transitions
- Calibrage : Les valeurs peuvent nécessiter un ajustement selon votre application
- 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écisCV_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