Ir a contenido
RP2040: El microcontrolador más potente en su gama - 330ohms

RP2040: El microcontrolador más potente en su gama - 330ohms

Anteriormente hablamos del lanzamiento del nuevo microcontrolador que lanzó la fundación Raspberry Pi, pero no tuvimos oportunidad de observarlo con más detenimiento. En esta entrada queremos diseccionar un poco este microcontrolador y mostrarte por qué pensamos que es el mejor de su gama.

Los periféricos

El RP2040 incorpora 30 pines GPIO multifunción con los cuales se pueden controlar una gran variedad de sensores y actuadores. Algunos de estos pines multifunción incluyen puertos seriales como el SPI, I2C, UART y también es posible implementar USB 1.1. El microcontrolador incluye 4 canales ADC de 12 bits el cual también esta conectado a un sensor de temperatura. Además, posee 16 canales PWM, divididos en 8 pares.

Configuración interna del chip. Vïa: Raspberry Pi

La velocidad y la memoria

Otro de los aspectos más interesantes del chip es la velocidad de procesamiento que puede alcanzar. El integrado trabaja a una velocidad estándar de 133 MHz, lo cual supera por completo las velocidades que pueden alcanzar el ATMEGA328P (Arduino UNO y Nano) o las versiones más recientes de la serie Nano, como la Every o la 33 y 33 BLE, que tienen frecuencias de reloj de 20 MHZ y 48 MHz. Incluso si se necesita, se puede aumentar la velocidad de reloj, como hemos visto en prototipos para generar video HDMI. La memoria SRAM también es un punto fuerte, ya que puede almacenar 264 KB, comparados con los 6KB del ATMega4809 de la Every o los 256 KB del nRF52840 el 33 BLE.

Algunos desarrolladores han aprovechado la velocidad del micro para implementar salidas de video HDMI en sus tarjetas. Vía: CNX Software

Programmable Input-Ouput (PIO)

Esta es una de las caracterísiticas más interesantes del RP2040. El chip integra lo que denomina entradas-salidas programables, que son en si un conjunto de máquinas de estados (procesadores muy simples) que te permiten implementar protocolos seriales muy específicos (por ejemplo el que emplean los LED NeoPixel). Esto te permite delegar el procesamiento de estas señales a las maquinas de estados mientras el programa principal se ejecuta en los 2 procesadores. Lo llamativo de este periférico es que la velocidad de las señales puede ser muy alta, prácticamente de un cuarto de la velocidad de reloj.

Las maquinas de estados poseen 9 instrucciones con las que se pueden implementar los protocolos. En total se tienen 2 bloques con 4 maquinas de estados cada una. Vïa: Raspberry Pi

La arquitectura ARM Cortex M0+

El chip incluye dos procesadores ARM Cortex M0+, con los cuales se pueden realizar las tareas que se deseen. La importancia de mencionar esta arquitectura, a diferencia de otros como el ATMEGA o PIC es que es una de las arquitecturas de microcontroladores con más éxito en sistemas embebidos. Algunas de las características de esta familia de microcontroladores son:

  • El de menor consumo, especialmente útil para dispositivos portátiles
  • Varios modos de reposo para prolongar la autonomía
  • Interfaz JTAG y SWD para depurar código
  • Permite implementar Sistemas Operativos en Tiempo Real (RTOS)

Conclusiones:

Por el precio al que se oferta el RP2040, es el microcontrolador más potente disponible. El microcontrolador no solo integra tecnología ARM de ultima generación, también incorpora periféricos innovadores como el PIO. Y aunque menos relacionado con el chip en si, la fundación Raspberry Pi proporcionó una documentación bastante completa, desde la hoja de especificaciones del integrado hasta una guía de diseño de hardware, las cuales vienen a ser muy valiosas para el desarrollador. Su aplicación más destacada es en la tarjeta Raspberry Pi Pico, por lo que comparado con otras tarjetas de desarrollo, se adquiere una herramienta muy potente a un costo muy competitivo.

Referencias:

RP2040 Datasheet

RP2040 MICROCONTROLLER

What is PIO | Programmable I/O on Raspberry Pi Pico

Vía: 330ohms
Artículo anterior Tutorial #8 de Raspberry Pi Pico: sensor ultrasónico - 330ohms