RTOS

Nuttx – Como configurar a porta USB no STM32F103

No artigo anterior relacionado ao Nuttx descrevi o processo para configurar um ambiente de compilação do sistema e como subir o firmware para a placa. Nesse artigo vou discorrer um pouco mais sobre a Blue Pill, como configurar a porta USB no STM32F103 para criar um dispositivo em /dev quando a board for conectada à porta USB. Mas para isso, alguns conceitos precisam ser esclarecidos.

Porque não aparece um dispositivo serial por padrão?



Algumas boards não tem um conversor USB/serial, outras dependem de habilitar no hardware o MODEM, como é o caso dessa STM32F103. O recurso está lá, basta ser habilitado e para isso utilizamos o menuconfig do Nuttx, que será o sistema operacional de tempo real que utilizaremos nessa board para nossos tutoriais. Vou me basear muito, mas muito mesmo nos tutoriais do Alan Carvalho, do canal Nuttx Channel, porque ele está anos luz à frente de qualquer coisa que eu possa escrever, recomendo o canal.

Como configurar a porta USB no STM32F103?

Agora que começa a brincadeira. O padrão da compilação do artigo anterior é a utilização da porta serial, mas imagine um conjunto de hardware composto por um STM32, um gravador e um FTDI. Um bocado de coisa para interagir com uma plaqunha, hum? Não vamos dispensar o gravador, mas podemos facilitar um bocado o acesso ao nsh do Nuttx, fazendo a placa funcionar como outra placa qualquer, como um Arduino, ESP8266/32 etc. Vamos à compilação.

Limpando a casa

Se você seguiu o tutorial anterior, já tem uma configuração definida no seu ambiente de compilação. Utilizar make clean irá somente limpar a compilação e para eliminar os vestígios da compilação anterior, será necessário utilizar o comando make distclean.

Selecionando a board

Estando tudo limpo, agora podemos iniciar uma nova configuração. Apenas para relembrar, o diretório de trabalho definido no artigo anterior é o nx, seguido pelo diretório do Nuttx, que para esse artigo é a versão 7.23, portanto o segundo nível de diretório é nuttx-7.23.

Entre no diretório como descrito abaixo e execute o comando para essa board:

Selecionando parâmetros

Ao abrir o menuconfig, siga os seguintes ítens:

Volte ao menu principal agora. Precisamos habilitar alguns recursos mais. Siga o menu:

Volte ao menu principal e siga o menu:

Ao selecionar esse ítem, o submenu será habilitado. Entre nesse submenu e siga:

Isso habilitará o console serial sobre a porta USB.

Pra finalizar, volte 2 níveis de menu e desabilite o shell sobre a serial:

Pronto. Foram vários menus, mas não foi necessário digitar uma linha de código sequer, hum?

Volte ao menu principal, selecionando sempre a opção Exit. Ao sair pela última vez, será perguntado se deseja salvar as configurações. Apenas confirme Yes e já podemos compilar nosso novo firmware. Veja como conectar o gravador ao STM32 nesse outro artigo.

Gravando o firmware

O comando para gravar:

Isso deve resultar em algo como:

Compilação - Como configurar a porta USB no STM32F103

Após subir o firmware, desconecte o gravador e conecte a Blue Pill à porta USB. Dentro de /dev deverá aparecer a porta ttyACM0:

/dev/ttyACM0 - Como configurar a porta USB no STM32F103

Iniciando uma comunicação USB-serial

Agora que o dispositivo está pronto para uso, vamos usá-lo! Você pode usar seu programa de comunicação serial preferido. Para esse teste, estou utilizando o screen:

Aperte enter 3 vezes e o shell se mostrará:

nsh ls - Como configurar a porta USB no STM32F103

Os comandos disponíveis nessa compilação:

nsh - Como configurar a porta USB no STM32F103

Já dá pra começar a brincadeira, hum?

Pinout da Blue Pill

Nesse artigo ainda não será necessário, mas assim que começarmos a mexer com GPIO, precisaremos do pinout como referência, por isso aproveitei para deixá-lo aqui:

pinout - Como configurar a porta USB no STM32F103

Onde comprar?

Esse exato modelo utilizado nos tutoriais você encontra nesse link da Autocore Robótica, aproveite que as brincadeiras estão apenas começando e adquira a sua pra acompanhar. Futuramente vamos rodar esse sistema no ESP32 e até lá já estaremos todos ambientados!

Siga-nos no Do bit Ao Byte no Facebook.

Prefere twitter? @DobitAoByte.

Inscreva-se no nosso canal Do bit Ao Byte Brasil no YouTube.

Nossos grupos:

Arduino BR

https://www.facebook.com/groups/microcontroladorarduinobr/
Raspberry Pi BR

https://www.facebook.com/groups/raspberrybr/
Orange Pi BR

https://www.facebook.com/groups/OrangePiBR/
Odroid BR

https://www.facebook.com/groups/odroidBR/
Sistemas Embarcados BR

https://www.facebook.com/groups/SistemasEmbarcadosBR/

Sistemas Eletrônicos

https://www.facebook.com/groups/544679592355388/

Projetos Arduino | Eletrônica

https://www.facebook.com/groups/projetosarduinoeletronica/

ESP8266 e ESP32

https://www.facebook.com/groups/ESP8266BR/

ARM Brasil

https://www.facebook.com/groups/508153815944410/

MIPS BR

https://www.facebook.com/groups/MIPSBR/
Do Bit ao Byte

https://www.facebook.com/groups/dobitaobyte/

Próximo post a caminho!