Skip to content

03.09 Microcontrolador

David Redondo edited this page May 27, 2024 · 10 revisions

# Microcontrolador

  • Velocidad de reloj mayor a 200 MHz: En base a la experiencia del autor con otros inversores, el cálculo de todos los PIs, filtros, transformadas y trayectorias de control puede tomar hasta 2500 ciclos de reloj. Por lo tanto, dado que hay que ejecutar dos lazos de control para los dos motores, $\frac{2500 \cdot 2}{200 \text{ MHz}} = 25 \text{ }\text{\unit{\micro\second}} \leftrightarrow 40 \text{ kHz}$, 200 MHz es la mínima velocidad para poder conmutar a 40 kHz.

  • Unidad de punto flotante: Para evitar trabajar en coma fija, lo cual puede causar muchos problemas de integración y añade una capa de complejidad innecesaria, se pone como requisito que el MCU soporte el uso de float de forma nativa.

  • Dos timers avanzados: Son necesarios dos timers, uno para cada inversor, con características como la salida PWM bipolar con varios canales, configuración sencilla del tiempo muerto, etc.

  • Lecturas analógicas: Se necesitan al menos un par de ADCs de 12 bits suficientemente rápidos con múltiples canales cada uno, con tal de poder capturar las corrientes de fase y las tensiones de bus adecuadamente.

  • Interfaces de comunicación CAN, SPI, I$^2$C y USB: Dado que se requerirá la interacción con otros dispositivos, es esencial contar con varias interfaces de comunicación. Obviamente CAN para la comunicación con el vehículo, pero también SPI/I$^2$C para utilizar memorias externas, o UART/USB como manera de conectar el inversor de forma sencilla a un ordenador.

  • Capacidades de depuración avanzadas: Se requerirá de herramientas de depuración que permitan detener el código en puntos específicos, monitorizar en tiempo real el estado de las variables, etc.

  • Memoria flash superior a 500 kB: El binario de un programa muy extenso no debería pesar mucho más de 100 kB, sin embargo, si en el futuro se programa un bootloader u otras implementaciones como tablas de búsqueda grandes, la memoria flash debería ser el último de los problemas.

Teniendo en cuenta estos requisitos, se ha evaluado una variedad de familias y marcas de MCUs y DSPs, y se ha llegado a la conclusión de que el MCU STM32F777VI de la familia F7 de STMicroelectronics cumple con todos los criterios establecidos. Sus características incluyen:

  • Procesador ARM Cortex-M7 con FPU, funcionando a una velocidad de hasta 216 MHz.

  • Amplio conjunto de interfaces de comunicación, incluyendo I$^2$C, USART, SPI, CAN, USB y Ethernet.

  • 3 ADCs (24 canales máximo) de 12 bits y hasta 2.4 MSPS.

  • 18 timers, incluyendo timers de 16 y 32 bits, dos timers con PWM avanzado.

  • Soporte para depuración mediante interfaces SWD y JTAG, incluyendo el modo de Trace Asynchronous Serial Wire, que incorpora un pin de comunicación serie independiente de las capacidades de debug de SWD.

  • Hasta 2 MB de memoria flash, SRAM de 512 Kbytes y 16 Kbytes de RAM TCM para datos críticos en tiempo real.

El STM32F777VI cumple con todos los requisitos establecidos y proporciona capacidades adicionales que pueden ser beneficiosas para el desarrollo y la operación del convertidor. Además, es el mismo microcontrolador que se usa en el resto de ECUs del monoplaza, conviertiéndose en la elección más cómoda para el futuro desarrollo.