🛠 Contrôle moteur PWM et communication CAN FD sur HPM5100

HPMicro HPM5100 : Microcontrôleur RISC-V 400 MHz pour la commande moteur et l'acquisition analogique · intermediaire · Configurez le HPM5100 pour piloter un moteur via 32 canaux PWM tout en transmettant les données de contrôle via CAN FD.

Objectifs

Ce tutoriel vise à configurer le microcontrôleur HPM5100 pour une application de contrôle moteur temps réel. Vous apprendrez à initialiser les 32 canaux PWM pour la modulation de largeur d'impulsion, à configurer l'interface CAN FD pour la communication robuste à 8 Mbps, et à intégrer FreeRTOS pour la gestion des tâches. Ce cas d'usage combine la puissance de calcul du cœur RISC-V à 400 MHz avec les périphériques analogiques avancés.

Matériel nécessaire

Étapes

Clonez le SDK HPM v1.13.0 et configurez votre chemin d'accès. Assurez-vous que la chaîne d'outils RISC-V est correctement installée. ``bash git clone https://github.com/hpmicro/sdk_hpm5100.git cd sdk_hpm5100 ``

  1. Environnement de développement

Le HPM5100 dispose de 32 canaux PWM synchronisés. Dans votre code d'initialisation, activez le module PWM et configurez la fréquence de commutation. Pour un moteur BLDC, utilisez les timers synchronisés pour assurer une commutation précise. ``c pwm_config_t pwm_cfg; pwm_get_default_config(&pwm_cfg); pwm_cfg.frequency = 20000; // 20 kHz pwm_init(HPM_PWM0, &pwm_cfg); pwm_enable_channel(HPM_PWM0, PWM_CHANNEL_0); ``

  1. Configuration du PWM

Configurez le CAN FD pour la transmission de données de contrôle. Activez le mode FD pour atteindre 8 Mbps. ``c canfd_config_t canfd_cfg; canfd_get_default_config(&canfd_cfg); canfd_cfg.bitrate = 500000; // Arbitration canfd_cfg.data_bitrate = 8000000; // Data phase canfd_init(HPM_CANFD0, &canfd_cfg); canfd_enable_interrupt(HPM_CANFD0, CANFD_INT_RX_FIFO); ``

  1. Initialisation CAN FD

Créez une tâche pour lire les entrées (ADC ou UART) et envoyer les commandes via CAN. Une autre tâche gère la mise à jour des rapports PWM. ``c void vMotorControlTask(void *pvParameters) { while(1) { uint16_t duty = read_adc_channel(0); pwm_set_duty(HPM_PWM0, PWM_CHANNEL_0, duty); canfd_send_frame(HPM_CANFD0, &tx_frame); vTaskDelay(pdMS_TO_TICKS(10)); } } ``

  1. Intégration FreeRTOS

Vérification

Connectez l'interface CAN FD à votre PC. Utilisez un outil comme Wireshark ou un terminal CAN pour observer les trames envoyées à 8 Mbps. Vérifiez sur un oscilloscope que les signaux PWM sur les broches correspondantes présentent un rapport cyclique variable selon les entrées ADC. Assurez-vous que le système ne dépasse pas les limites thermiques si vous utilisez le mode 480 MHz.

Pour aller plus loin

Explorez l'utilisation des quatre amplificateurs opérationnels configurables en PGA pour le conditionnement du signal de courant. Vous pouvez également activer le démarrage sécurisé via AES-128 pour protéger le firmware contre les modifications non autorisées, une fonctionnalité critique pour les applications industrielles.

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels