🛠 Control de motor PWM y comunicación CAN FD en HPM5100

HPMicro HPM5100: Microcontrolador RISC-V de 400 MHz para control de motores y adquisición analógica · intermediaire · Configurez le HPM5100 pour piloter un moteur via 32 canaux PWM tout en transmettant les données de contrôle via CAN FD.

Objetivos

Este tutorial tiene como objetivo configurar el microcontrolador HPM5100 para una aplicación de control de motor en tiempo real. Aprenderá a inicializar los 32 canales PWM para la modulación de ancho de pulso, configurar la interfaz CAN FD para comunicación robusta a 8 Mbps e integrar FreeRTOS para la gestión de tareas. Este caso de uso combina la potencia de cálculo del núcleo RISC-V a 400 MHz con periféricos analógicos avanzados.

Hardware Necesario

Pasos

Clona el SDK HPM v1.13.0 y configura tu ruta. Asegúrate de que la cadena de herramientas RISC-V esté correctamente instalada. ``bash git clone https://github.com/hpmicro/sdk_hpm5100.git cd sdk_hpm5100 ``

  1. Entorno de Desarrollo

El HPM5100 dispone de 32 canales PWM sincronizados. En tu código de inicialización, habilita el módulo PWM y establece la frecuencia de conmutación. Para motores BLDC, usa temporizadores sincronizados para asegurar una conmutación precisa. ``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. Configuración PWM

Configura CAN FD para la transmisión de datos de control. Habilita el modo FD para alcanzar 8 Mbps. ``c canfd_config_t canfd_cfg; canfd_get_default_config(&canfd_cfg); canfd_cfg.bitrate = 500000; // Arbitraje canfd_cfg.data_bitrate = 8000000; // Fase de datos canfd_init(HPM_CANFD0, &canfd_cfg); canfd_enable_interrupt(HPM_CANFD0, CANFD_INT_RX_FIFO); ``

  1. Inicialización CAN FD

Crea una tarea para leer entradas (ADC o UART) y enviar comandos vía CAN. Otra tarea gestiona las actualizaciones de los informes 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. Integración FreeRTOS

Verificación

Conecta la interfaz CAN FD a tu PC. Usa una herramienta como Wireshark o un terminal CAN para observar los tramas enviadas a 8 Mbps. Verifica en un osciloscopio que las señales PWM en los pines correspondientes muestren ciclos de trabajo variables según las entradas ADC. Asegúrate de que el sistema no supere los límites térmicos si usas el modo de 480 MHz.

Para Ir Más Allá

Explora el uso de los cuatro amplificadores operacionales configurables como PGAs para el acondicionamiento de señal de corriente. También puedes habilitar el arranque seguro mediante AES-128 para proteger el firmware contra modificaciones no autorizadas, una función crítica para aplicaciones industriales.

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales