🛠 Control de motor PWM y comunicación CAN FD en HPM5100
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
- Placa de desarrollo HPM5100 (modelo HPM5151 recomendado)
- Cables USB Tipo-C para alimentación y depuración
- Interfaz CAN FD USB (para pruebas en PC)
- Entorno de desarrollo: SDK HPM v1.13.0, cadena de herramientas RISC-V
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 ``
- 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); ``
- 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); ``
- 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)); } } ``
- 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.