Placas STM8 Nucleo-64

Índice

STM8 Nucleo-64 boards

O que são as placas STM8 Nucleo?

As placas STM8 Nucleo referem-se a uma gama de placas de desenvolvimento projetadas pela STMicroelectronics especificamente para seus microcontroladores STM8. Essas placas servem como uma plataforma conveniente e flexível para construir e testar aplicações baseadas na família de microcontroladores STM8. Com uma variedade de recursos e opções de conectividade, as placas STM8 Nucleo fornecem aos desenvolvedores um ambiente adequado para prototipar seus projetos e avaliar o desempenho dos microcontroladores STM8. Essas placas geralmente vêm equipadas com um depurador/programador, pinos GPIO, UART, I2C e interfaces SPI, permitindo que os desenvolvedores se conectem e interfacem facilmente com vários periféricos e sensores. As placas STM8 Nucleo são amplamente utilizadas na indústria eletrônica por sua facilidade de uso e compatibilidade com o ecossistema STM8.

NUCLEO-8L152R8 e NUCLEO-8S208RB

As NUCLEO-8L152R8 e NUCLEO-8S208RB são as primeiras placas Nucleo-64 a integrar microcontroladores STM8 (MCUs), permitindo designs de protótipos flexíveis por meio de configurações de MCU compactas. A diferença significativa entre esses dois modelos reside em sua capacidade de memória flash. A primeira integra um MCU STM8L152R8T6 com 64 kB de memória flash, enquanto a segunda utiliza um STM8S208RBT6 com 128 kB de armazenamento. Eles também são as primeiras placas de desenvolvimento STM8 com um conector Arduino™ Uno V3, permitindo que os desenvolvedores usem shields familiares, plugins gratuitos e exemplos de programação populares. Além disso, em colaboração com a Cosmic, fornecemos compiladores gratuitos com STVD-STM8 IDE ou Arduino IDE, permitindo que os desenvolvedores desenvolvam software para nossos MCUs STM8 em C++ pela primeira vez sem comprar uma cadeia de ferramentas.

STM8 Nucleo 64 Boards Large
(Crédito da imagem: cnx-software)

Descobrimos que as placas STM32 Nucleo são particularmente populares para design e desenvolvimento de protótipos. Eles também oferecem uma ampla seleção de placas de expansão que agora são compatíveis com NUCLEO-8L152R8 e NUCLEO-8S208RB, pois todos os modelos Nucleo fornecem conectores Arduino. Isso significa que as equipes de engenharia podem reutilizar o mesmo hardware, economizando custos e, mais importante, reduzindo o tempo de desenvolvimento, pois já estão familiarizadas com o empilhamento de extensões nas novas placas STM8 Nucleo. Portanto, agora é mais fácil adicionar funcionalidade aos nossos sistemas de 8 bits, permitindo designs mais complexos e inteligentes em pacotes cada vez menores.

Especificações do STM8 Nucleo

  • Placa com tipos de MCU:

NUCLEO-8L152R8 – Baseado no MCU STM8L152R8T6 de 8 bits da STMicroelectronics, operando em uma frequência de 16 MHz, com 64 kB de flash, 2 kB de EEPROM e 4 kB de SRAM.

NUCLEO-8S208RB – Baseado no MCU STM8S208RBT6 de 8 bits da STMicroelectronics, operando em uma frequência de 24 MHz, com 128 kB de flash, 2 kB de EEPROM e 6 kB de SRAM.

4x LEDs – Indicador de conexão USB (LD4), indicador STLINK de 5V (LD3), LED de usuário (LD2) e indicador de energia (LD1).

2 x botões – Botões de usuário e um botão RESET.

Oscilador de cristal externo de 32,768 kHz, exclusivo da placa de desenvolvimento NUCLEO-8L152R8.

USB – Interface microUSB de 1 canal como porta COM virtual, interface de memória on-chip e interface de depuração.

  • Conectores de expansão:

Interface Arduino UNO V3.

Interface de expansão ST morpho, incluindo todas as E/Ss para STM8.

Depuração – Depurador e programador ST-LINK/V2-1 integrado com conector SWIM e porta microUSB.

Energia – Alimentado por USB VBUS ou energia externa (3,3V, 5V, 7 – 12V).

Pontos de acesso de gerenciamento de energia.

Projeto da placa de desenvolvimento STM8 Nucleo-64

Este projeto descreve como controlar uma placa de desenvolvimento STM8 Nucleo-64 a partir de uma janela de terminal executada em um PC. O terminal é conectado à UART de STM8S208RBT6 (para NUCLEO-8S208RB) ou STM8L152R8T6 (para NUCLEO-8L152R8) usando um cabo RS232.

Após adicionar os componentes necessários à placa de desenvolvimento e baixar o software da aplicação, os usuários podem gerenciar os GPIOs e os temporizadores TIM3 das séries STM8S ou STM8L e configurar a saída do buzzer usando software de terminal.

STM8 Nucleo Development Board
STM8 Nucleo Development Board

Componentes Necessários

Os seguintes componentes são necessários para executar a aplicação de demonstração do terminal da placa de desenvolvimento STM8 Nucleo-64:

  • Janela de terminal executada em um PC: Software de emulação de terminal pode ser Windows HyperTerminal, TeraTerm Pro ou outro software de terminal.
  • Cabo null modem RS232 (com linhas de transmissão e recepção cruzadas).

Configurando a Placa de Desenvolvimento NUCLEO-8S208RB

Antes de executar a aplicação, a placa de desenvolvimento NUCLEO-8S208RB (baseada no dispositivo STM8S208RBT6) deve ser configurada para habilitar a saída do buzzer. A saída do buzzer é uma função multiplexada do STM8S208RBT6. Esta função é habilitada definindo o bit de opção remap AFR7 no byte de opção OPT2 para “1.”

Observação: A placa de desenvolvimento NUCLEO-8L152R8 (baseada no dispositivo STM8L152R8T6) não exige que os usuários verifiquem ou ativem a função remap ou o buzzer.

Instruções da Aplicação

Requisitos de Hardware

Esta aplicação utiliza o LED onboard (LD2) e o resistor conectado (R1) na placa STM8 Nucleo-64. Os componentes passivos externos exigidos pela aplicação estão listados na tabela abaixo:

ComponentValue
Buzzer B1-
Capacitors C1, C2, C3, C4, C5100 nF
DB9 Connector-

A aplicação também utiliza um driver/receptor RS232 alimentado por 5V ST232B (para mais detalhes, consulte a tabela abaixo). Este componente adicional é essencial porque a porta COM do PC opera em uma fonte de alimentação padrão de 12V. Isso é incompatível com as entradas/saídas UART dos dispositivos das séries STM8S ou STM8L, que operam a 5V. O dispositivo está em um pacote SO16, correspondendo ao pacote da placa de desenvolvimento STM8 Nucleo-64. Para obter mais informações sobre o ST232B, consulte o datasheet do ST232B.

ModelComponent DescriptionPackage
ST232BUltra-Fast, Ultra-Low-Power 5V RS232 Driver/Receiver for UART 5/12V Level ConversionSO16

Esquema da Aplicação

O seguinte diagrama ilustra o esquema elétrico da aplicação. Se o cabo RS232 não for um cabo null modem (as linhas de transmissão e recepção não estiverem cruzadas), conecte o pino 14 de U1 ao pino 2 de DB9 e o pino 13 de U1 ao pino 3 de DB9.

Diagrama esquemático da aplicação da série STM8S
Diagrama esquemático da aplicação da série STM8L

Regras da Aplicação

Esta aplicação estabelece comunicação padrão entre o microcontrolador STM8S208RBT6 ou STM8L152R8T6 e a janela de terminal executada em um PC. A comunicação é feita usando o protocolo RS232 através da UART do dispositivo STM8. Tanto a janela de terminal quanto a UART devem ser configuradas da mesma forma.

Executando a Aplicação

Para executar esta aplicação, siga estes passos:

  1. Inicie e configure uma janela de terminal em seu PC (consulte a seção B: Configure a Janela de Terminal, neste caso, usando o Windows HyperTerminal).
  2. Compile e execute o firmware da aplicação usando o ST Visual Develop (STVD) ou outra toolchain.
  3. Conecte o PC à placa de desenvolvimento STM8 Nucleo-64 usando um cabo RS232.
  4. Após a aplicação iniciar, um menu será exibido no Windows HyperTerminal. Este menu permite que os usuários:
  • Ligue ou desligue o LED LD2.
  • Defina o LD2 para o modo de pisca-pisca.
  • Habilite/desabilite o buzzer e selecione a frequência do som do buzzer.

Todas as informações exibidas neste menu são enviadas pelo microcontrolador das séries STM8S ou STM8L. Quando uma tecla é pressionada no HyperTerminal, o valor ASCII correspondente é enviado ao microcontrolador, que então o decodifica.

Sequência de Comunicação entre a Placa de Desenvolvimento STM8 Nucleo-64 e o Terminal
  1. O microcontrolador da série STM8S ou STM8L envia a string “Digite sua escolha” para o software emulador de terminal do PC.
  2. O terminal exibe a string “Digite sua escolha.”
  3. O usuário pressiona a tecla “2” no teclado.
  4. O software emulador de terminal envia o código ASCII correspondente (0x52) de volta para o microcontrolador (veja o Apêndice A: Códigos de Caracteres ASCII Padrão).
  5. O microcontrolador decodifica os dados recebidos e envia de volta o código 0x52 para ser exibido no terminal e armazena o valor “2” na memória.
  6. O software emulador de terminal recebe o código 0x52 e exibe “2.”
  7. O usuário pressiona a tecla “Return”.
  8. O software emulador de terminal envia de volta o código 0x0D correspondente ao retorno de carro (veja o Apêndice A: Códigos de Caracteres ASCII Padrão).
  9. O microcontrolador da série STM8S ou STM8L decodifica os dados recebidos, envia de volta o código 0x0D para ser exibido no terminal e executa a operação associada à opção 2.

Windows HyperTerminal

Periféricos STM8S e STM8L

Este exemplo de aplicação usa as bibliotecas de firmware padrão STM8S e STM8L para controlar funções gerais. Os seguintes periféricos são usados nesta aplicação:

  • Timer3 (TIM3): O timer TIM3 é configurado como uma base de tempo, com interrupções habilitadas para controlar a velocidade de piscar do LD2.
  • GPIOs: GPIOs são usados para conectar o MCU a hardware externo. A porta PC5 para a série STM8 ou PB5 para a série STM8L é configurada como uma saída push-pull para acionar o LD2.
  • BEEPER: Para acionar o buzzer, o periférico BEEPER emite um sinal de 1, 2 ou 4 kHz no pino de saída BEEP.
  • ART3 para a série STM8S ou USART3 para a série STM8L: Usado para comunicação com a janela do terminal em execução no PC.

ART3 ou USART3 precisa ser configurado da seguinte forma:

  • Taxa de baud = 960
  • Comprimento dos dados = 8 bits
  • 1 bit de parada
  • Sem paridade
  • Habilitar receber e transmitir

(Observação: Se estiver usando a série STM8L, o clock USART3 deve ser desabilitado.)

A comunicação é gerenciada por polling para cada operação de receber e transmitir.

(Observação: A janela do terminal e o periférico UART do dispositivo STM8 devem ser configurados com a mesma taxa de baud, comprimento dos dados, bits de parada e paridade.)

Configuração da Biblioteca de Firmware Padrão STM8

Biblioteca de Firmware Padrão da Série STM8S

O arquivo stm8s_conf.h da biblioteca de firmware padrão da série STM8S permite habilitar funções de periféricos para uso na aplicação configurando a biblioteca. As seguintes declarações de definição precisam ser declaradas:

  • #define _GPIO 1 para habilitar GPIO
  • #define _TIM3 1 para habilitar TIM3
  • #define _BEEPER 1 para habilitar BEEPER
  • #define _UART3 1 para habilitar UART3
Biblioteca de Firmware Padrão da Série STM8L

O arquivo stm8l_conf.h da biblioteca de firmware padrão da série STM8L permite habilitar funções de periféricos para uso na aplicação configurando a biblioteca. As seguintes declarações de inclusão precisam ser declaradas:

  • #include “stm8l15x_gpio.h”
  • #include “stm8l15x_tim2.h”
  • #include “stm8l15x_tim3.h”
  • #include “stm8l15x_beep.h”
  • #include “stm8l15x_usart.h”

Fluxograma do Software da Aplicação

Esta seção explica o loop principal do software da aplicação e as funções que controlam a recepção/envio de dados para/do terminal:

  • App_Menu: Esta função é usada para exibir um menu no terminal e gerenciar a entrada do usuário.
  • SerialPutString: Esta função é usada para enviar strings para o terminal.
  • SerialPutChar: Esta função é usada para enviar caracteres individuais para o terminal.
  • GetInputString: Esta função é usada para receber e armazenar strings enviadas do terminal.
  • GetIntegerInput: Esta função é usada para receber inteiros do terminal.
  • Get_Key: Esta função retorna o código hexadecimal correspondente quando uma tecla é pressionada.
Função Principal da Aplicação

A função principal da aplicação configura os periféricos da série STM8S ou STM8L e habilita as interrupções padrão para todos os periféricos usados pela aplicação. Após a inicialização, o programa principal exibe o menu da aplicação na janela do terminal.

Main function flow chart of STM8S series or STM8L series peripherals on Windows HyperTerminal software
Main function flow chart of STM8S series or STM8L series peripherals on Windows HyperTerminal software
Função App_Menu

A função App_Menu é o núcleo da aplicação. Ela exibe um menu no terminal, permitindo a configuração de GPIO, TIM3 e o buzzer. App_Menu chama GetInputString, GetIntegerInput e SerialPutString para enviar e receber dados através da interface RS232.

App_menu function flow chart
App_menu function flow chart
Função GetInputString

A função GetInputString é usada para receber e armazenar strings enviadas da janela do terminal. Esta função depende da função Get_Key para obter e decodificar cada caractere (veja o Apêndice para detalhes). Diferentes ações são tomadas com base no valor ASCII do caractere:

Se o código ASCII = ‘\\b’ (backspace): O terminal enviou um backspace. Se a string não estiver vazia, ela exclui o último caractere da string.

Se o código ASCII estiver dentro de {0…9} ou {A…Z}: O caractere é armazenado na string.

Se o código ASCII = ‘\\r’ (carriage return): A função GetInputString armazena um valor de “fim de string” ‘\\0’ no final da string. O número máximo de códigos ASCII armazenados no buffer buffP[bytes_read] é atingido. O software apaga a string gravada e aguarda outra entrada do terminal.

Função Get_Key

A função Get_Key é usada para detectar a entrada do teclado no terminal, verificando o sinalizador UART RXNE. Ela retorna o valor recebido.

Get_key function flow chart
Get_key function flow chart
Funções SerialPutString e SerialPutChar

SerialPutString é usado para enviar strings para o terminal via UART. Os caracteres da string são enviados um por um usando a função SerialPutChar, conforme descrito no fluxograma.

Fluxograma da função SerialPutString
Fluxograma da função SerialPutChar
Função GetIntegerInput

A função GetIntegerInput verifica se os dados recebidos correspondem a um inteiro. Se corresponderem, os dados são armazenados na memória; caso contrário, o usuário é solicitado a inserir novos dados.

GetIntegerInput function flow chart
GetIntegerInput function flow chart

Inscreva-se

Inscreva-se na nossa lista de assinantes para receber atualizações mensais do blog, notícias sobre tecnologia e estudos de caso. Nunca enviaremos spam e você pode cancelar a assinatura a qualquer momento.

Sobre o autor

Picture of Aidan Taylor
Aidan Taylor

I am Aidan Taylor and I have over 10 years of experience in the field of PCB Reverse Engineering, PCB design and IC Unlock.

Precisa de ajuda?

Rolar para cima

Instant Quote