Pilote TMC2209
Description
TMC2209_driver est la couche qui pilote directement le driver de moteur pas-à-pas Trinamic TMC2209 via :
- Un signal PWM sur la broche STEP (contrôle la vitesse de rotation)
- Une GPIO sur la broche DIR (contrôle le sens de rotation)
- Une GPIO sur la broche ENN (enable/disable du driver)
c
typedef struct TMC2209_driver {
TIM_HandleTypeDef* timer_handle;
uint32_t timer_channel;
uint32_t timer_frequency;
bool is_channel_n; // true si canal complémentaire (ex: TIM_CHANNEL_1N)
GPIO_TypeDef* dir_pin_port;
uint32_t dir_pin_number;
GPIO_TypeDef* en_pin_port;
uint32_t en_pin_number;
} TMC2209_driver;Attributs
| Attribut | Type | Description |
|---|---|---|
timer_handle | TIM_HandleTypeDef* | Handle du timer STM32 générant le PWM sur STEP |
timer_channel | uint32_t | Canal du timer (TIM_CHANNEL_1, TIM_CHANNEL_2, …) |
timer_frequency | uint32_t | Fréquence de base du timer (32 MHz, fixe après Driver_init) |
is_channel_n | bool | true si le canal est complémentaire (suffixe N) — bascule entre HAL_TIM_PWM_Start_IT et HAL_TIMEx_PWMN_Start_IT |
dir_pin_port | GPIO_TypeDef* | Port GPIO de la broche DIR |
dir_pin_number | uint32_t | Numéro de pin de la broche DIR |
en_pin_port | GPIO_TypeDef* | Port GPIO de la broche ENN |
en_pin_number | uint32_t | Numéro de pin de la broche ENN |
Méthodes publiques
Driver_init
c
void Driver_init(TMC2209_driver* self);Initialise le driver en fixant timer_frequency à 32 MHz. Cette constante est utilisée dans tous les calculs de PWM.
Driver_set_dir_pin
c
void Driver_set_dir_pin(TMC2209_driver* self, GPIO_PinState state);Contrôle le sens de rotation du moteur via la broche DIR.
state | Sens |
|---|---|
GPIO_PIN_SET | Sens positif (avant) |
GPIO_PIN_RESET | Sens négatif (arrière) |
Driver_send_pwm_signal
c
void Driver_send_pwm_signal(TMC2209_driver* self, uint32_t frequency);Configure le timer pour générer un PWM à la fréquence demandée (calcul de ARR, PSC et CCR), puis démarre le timer en mode interruption.
| Paramètre | Description |
|---|---|
frequency | Fréquence en Hz = pas/s. 0 = arrêt du PWM. |