28 de julho de 2021

Do bit Ao Byte

Embarcados, Linux e programação

Raspberry Pi Pico RP2040

RP2040

Nesse artigo começa uma longa série sobre o Raspberry Pi Pico. E vale dedicar alguns minutos às leituras e vídeos, porque esse hardware é incrível! Tanto que abri uma “exceção” e pulei 2 semanas de artigos agendados para fazer a apresentação. Então aproveite a série e se adiante, comprando a sua RP2040 absurdamente barata na RoboCore, que está com um preço INCRÍVEL. Se acabar, não chore!

Porque se chama RP2040?

Conforme o datasheet da RP2040, RP vem de Raspberry Pi, depois cada número representa uma coisa:

  • 2 – Número de núcleos
  • Tipo do processador (ARM M0+)
  • floor(log2(ram/16k))
  • floor(log2(nonvolatile/16k))

No caso do último dígito, significa que não tem armazenamento não-volátil onboard. Mas pelo visto terá um dia.

Especificações da RP2040

Como já citado, ela é uma placa dual core Cortex M0+ de 133MHz. Um espetáculo!

Possui 264KB de SRAM distribuído em 6 bancos.

Tem 30 pinos de GPIO multifunção.

Possui 6 pinos dedicados a flash SPI com suporte a XIP.

Tem 4 canais ADC com sensor de temperatura interno e 12 bits de resolução!

USB host/device.

O chip

O código pode ser executado diretamente da memória externa através das interfaces dedicadas SPI, DSPI ou QSPI. Um pequeno cache dá uma “turbinada” na performance para aplicações típicas.

Delicie-se! Essa placa tem debug através da interface SWD, no qual podemos usar um jtag para facilitar a vida na hora de encontrar bugs. Já tenho uma pequena série de artigos sobre a Pico que serão publicados gradativamente nos próximos dias, onde veremos inclusive o debug.

Essa placa tem também 4 entradas ADC compartilhadas com o GPIO, podendo ser usada para qualquer um dos fins.

RP2040 pinout

Esse é o pinout da MCU, vamos por partes:

RP2040 mcu

O formato da descrição já conhecemos bem, principalmente GPIOx e ADCy. Na controladora USB é necessário utilizar um resistor de 27Ohms em cada pino, mas os resistores de pullup e pulldown estão disponíveis internamente.

RUN se refere ao pino de reset. Reset em LOW, rodando em HIGH. Se não for utilizar reset externo, esse pino pode ser conectado diretamente ao VCC. Lembre-se que estamos tratando da MCU, não da placa Raspberry Pi Pico.

Todos os detalhes sobre os pinos podem ser encontrados no datasheet supracitado, caso necessite dessa informação. Vale apenas salientar que a placa Raspberry Pi Pico possui 26 pinos multifunção, 2MB de QSPI Flash, 264KB de SRAM, 2 UART, 2 SPI, 2 I2C, 16 canais PWM, um controlador USB e PHY, com suporte a host e device.

Suporta entrada de alimentação entre 1.8V e 5V5, operando em temperaturas de -20 até 85 graus Celsius.

O módulo é castelado, facilitando a solda diretamente em placas de produto.

Para programar, ela tem um recurso incrível de drag-and-drop, através do dispositivo de massa que aparece quando conectada à USB.

Tem as opções de baixo consumo em sleep e dormant. Tem também um sensor de temperatura.

Essas são as coisas notáveis a citar no primeiro momento.

Programar para a RP2040

Podemos programar em C/C++ ou MicroPython. Um bom ponto de partida (para quem ao menos lê no idioma inglês) é o site oficial, claro. No próximo artigo relacionado (repito, já está pronto e o vídeo sendo editado) veremos como usar a Raspberry Pi 4 como host, depois veremos em outro artigo o setup para um Linux desktop, setup para Windows e vários outros artigos criando projetos, fazendo debug etc.

Pinout da Raspberry Pi Pico RP2040

Será importante dar atenção a esse nome longo, porque existem outras placas que usam a MCU RP2040 e a Raspberry Pi Pico poderá ter novas versões de MCU.

O pinout da placa é esse:

Raspberry Pi Pico RP2040

Como programar?

No próximo artigo relacionado já vamos por a mão-na-massa, começando pelo mais simples. Aproveite para pegar já a sua lá na RoboCore e assim você poderá acompanhar a série desde o princípio!

Revisão: Ricardo Amaral de Andrade