Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

README.md

Software

Nesse exemplo, os arquivos PWM.c e configs.c, possuem as configurações necessárias para habilitar o PWM, abaixo é explicado o funcionamento e as opções disponíveis nos registradores utilizados no arquivo.

GPIO

A configuração do GPIO para essa aplicação, necessita dos seguintes passos:

  • 1º - Habilitação do clock no GPIO com a função que será utilizada, nesse caso GPIOA;
  • 2º - Definir o pino com a função alternativa, utilizando o registrador MODER;
  • 3º - Definir qual das funções alternativas o GPIO possuirá, utilizando o registrador AFR;

MODER

Figura 1 - Registrador MODER

AFR

No STM32, cada pino pode ter múltiplas funções alternativas, que são configuradas através dos registros de função alternativa (AFR). Cada porta GPIO tem dois registros de função alternativa: AFR[0] para os pinos de 0 a 7 (Figura 2) e AFR[1] para os pinos de 8 a 15 (Figura 3). Conforme a Figura 4 e a Figura 5, a função alternativa AF2 é atribuída da seguinte maneira:

  • PA7 - TIM1_CH1N;
  • PA8 - TIM1_CH1;
  • PA9 - TIM1_CH2;
  • PA10 - TIM1_CH3;
  • PB0 - TIM1_CH2N;
  • PB1 - TIM1_CH3N;

Figura 2 - Registrador AFRL (AFR[0])

Figura 3 - Registrador AFRH (AFR[1])

Figura 4 - 1ª Tabela de funções alternativas

Figura 5 - 2ª Tabela de funções alternativas

PWM

O PWM (Pulse Width Modulation) no STM32F030 é gerado por temporizadores (TIMs) como o TIM1, que suporta PWM com canais complementares e dead time, ideal para controle de motores, LEDs e conversores de potência. No STM32F030, o PWM é gerado pelos temporizadores ao alternar o nível lógico do pino de saída com base nos registradores ARR (Auto-Reload Register) e CCR (Capture/Compare Register).

PSC

O registrador PSC (Prescaler), Figura 7, é usado para dividir a frequência de entrada do timer, permitindo controlar a velocidade com que o timer conta os pulsos de clock, o valor máximo do PSC é de 16 bits, variando de 0 a 65535. Isso significa que o prescaler pode dividir o clock de entrada do timer em até 65536 (65535 + 1) vezes.

Figura 7 - Registrador PSC

ARR

O registrador ARR (Auto-Reload Register), Figura 8, define o valor máximo até o qual o contador do timer incrementa antes de ser reiniciado, ou seja, é o registrador que controla o período do timer, o valor máximo do ARR é de 16 bits, variando de 0 a 65535.

Figura 8 - Registrador PSC

CCMRX

CCER

CCRX

Define o valor no qual a saída muda de estado, controlando o duty cycle.

Frequência do PWM

A frequência do PWM é determinada por 3 fatores, frequência do clock do microcontrolador, valor do registrador ARR (Auto Reload Register) e o PSC (prescaler), conforme a Figura 9:

Figura 9 - Fórmula para definição da frequência do PWM

No exemplo desse diretório, consideramos os valores abaixo:
  • Frequência do clock = 8MHz;
  • ARR = 999;
  • PSC = 7;

Esses valores geram uma frequência de 1KHz, a Figura 10 mostra o sinal adiquirido pelo osciloscópio.

Figura 10 - Canais CH1 e CH1N

Inversão do sinal complementar

Para inverter os sinais nos canais complementares CH1N, CH2N e CH3N do TIM1, basta configurar os bits CC1NP, CC2NP e CC3NP no registrador CCER, esses bits controlam a polaridade dos canais complementares e permitem inverter o sinal.

    // Habilitar saída complementar e polaridade invertida
    TIM1->CCER |= TIM_CCER_CC1E | TIM_CCER_CC1NE | TIM_CCER_CC1NP;  // CH1 e CH1N invertido
    TIM1->CCER |= TIM_CCER_CC2E | TIM_CCER_CC2NE | TIM_CCER_CC2NP;  // CH2 e CH2N invertido
    TIM1->CCER |= TIM_CCER_CC3E | TIM_CCER_CC3NE | TIM_CCER_CC3NP;  // CH3 e CH3N invertido

Figura 11 - Canais CH1 e CH1N invertido