Página 1 de 1

STM32F1xx PWM a 10Khz

MensagemEnviado: 29 Mai 2018 10:42
por vtrx
Alguém consegue me ajudar a setar o PWM do Timer 3 a 10Khz?
Segue código funcional:

Código: Selecionar todos
void PWMTimer3(unsigned int freq )
   {   
      TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
     TIM_OCInitTypeDef TIM_OCInitStructure;
   
     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB , ENABLE);
     RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
   
    // Timer3 channel 3 on PB0   
//      GPIO_PinRemapConfig(GPIO_FullRemap_TIM3, ENABLE);
     GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;
    GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
    GPIO_InitStructure.GPIO_Speed=GPIO_Speed_2MHz;
    GPIO_Init(GPIOB,&GPIO_InitStructure);
   
    // Timer3 time base setup       
    TIM_TimeBaseInitStructure.TIM_Prescaler = 1000;
    TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;
    TIM_TimeBaseInitStructure.TIM_Period = 1000;
    TIM_TimeBaseInitStructure.TIM_ClockDivision = 0;
    TIM_TimeBaseInitStructure.TIM_RepetitionCounter = 0;
    TIM_TimeBaseInit(TIM3, &TIM_TimeBaseInitStructure);
    TIM_Cmd(TIM3, ENABLE);

    TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
    TIM_OCInitStructure.TIM_OutputState  = TIM_OutputState_Enable ;
    TIM_OCInitStructure.TIM_Pulse = 5000;
    TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;

    //PB0 - ouptut pwm on channel 3
    TIM_OC3Init(TIM3, &TIM_OCInitStructure);
    TIM_OC3PreloadConfig(TIM3, TIM_OCPreload_Enable);

    //TIM3->CCR3=15;
}


Não medi ainda a saída para saber qual frequência o código acima esta setado.

Re: STM32F1xx PWM a 10Khz

MensagemEnviado: 29 Mai 2018 10:50
por tcpipchip
qual o clock do teu processador ?

Re: STM32F1xx PWM a 10Khz

MensagemEnviado: 29 Mai 2018 12:57
por vtrx
O clock é de 72MHZ,eu achei um calculo para 168MHZ.

Re: STM32F1xx PWM a 10Khz

MensagemEnviado: 29 Mai 2018 13:02
por andre_luis
https://www.mikroe.com/blog/timer-calculator-v2-00-now-supports-stm32-and-stellaris

Esquece, é uma grande porcaria esse programa...só calcula o timer.

Re: STM32F1xx PWM a 10Khz

MensagemEnviado: 29 Mai 2018 13:40
por vtrx
andre_teprom escreveu:https://www.mikroe.com/blog/timer-calculator-v2-00-now-supports-stm32-and-stellaris

Esquece, é uma grande porcaria esse programa...só calcula o timer.

KKKKKK,eu percebi mas esperei para ver se era eu que não entendia...

Re: STM32F1xx PWM a 10Khz

MensagemEnviado: 29 Mai 2018 14:25
por vtrx
tcpipchip escreveu:qual o clock do teu processador ?

Miguel...

Re: STM32F1xx PWM a 10Khz

MensagemEnviado: 29 Mai 2018 21:35
por JeanPaul
Joga no CubeMX que ele calcula tudo pra ti.

Depois pega os valores e insere no teu código.

[]'s

Jean Paul

Re: STM32F1xx PWM a 10Khz

MensagemEnviado: 30 Mai 2018 09:59
por vtrx
Acho que consegui calcular baseado neste artigo:
https://stm32f4-discovery.net/2014/05/stm32f4-stm32f429-discovery-pwm-tutorial/

Como o que tenho é o STM32F103,a frequência do clok é menor,72MHZ.
Na rotina que montei,baseado em exemplos,existe uma observação:
// * Frequência PWM: 281.250KHz * /

è isso mesmo,PWM a 281MHZ?

Re: STM32F1xx PWM a 10Khz

MensagemEnviado: 30 Mai 2018 12:41
por denis
vtrx escreveu:Acho que consegui calcular baseado neste artigo:
https://stm32f4-discovery.net/2014/05/stm32f4-stm32f429-discovery-pwm-tutorial/

Como o que tenho é o STM32F103,a frequência do clok é menor,72MHZ.
Na rotina que montei,baseado em exemplos,existe uma observação:
// * Frequência PWM: 281.250KHz * /

è isso mesmo,PWM a 281MHZ?


:o
Será que o "." não é o separador decimal ao invés do milhar?

Re: STM32F1xx PWM a 10Khz

MensagemEnviado: 30 Mai 2018 13:34
por eletroinf
Em notação gringa, 281.250KHz = 281 vírgula 250; isto é, aproximadamente 281 kHz neste caso.
Se fosse 281 MHz eles escreveriam 281,250 KHz

Alguns exemplos:
https://docs.oracle.com/cd/E19455-01/80 ... index.html

*Editei pra corrigir erros de digitação dos números.

Re: STM32F1xx PWM a 10Khz

MensagemEnviado: 30 Mai 2018 16:18
por vtrx
eletroinf escreveu:Em notação gringa, 281.250KHz = 281 vírgula 250; isto é, aproximadamente 251 kHz neste caso.
Se fosse 251 MHz eles escreveriam 281,250 KHz

Alguns exemplos:
https://docs.oracle.com/cd/E19455-01/80 ... index.html

Medi com o frequencímetro,é 281Khz.

A resolução do PWM é fixa dependente da frequência?

Segundo a página 5 do PDF do link:
www.st.com/content/ccc/resource/technical/document/application_note/7e/17/df/9e/5d/04/4b/72/DM00119042.pdf/files/DM00119042.pdf/jcr:content/translations/en.DM00119042.pdf
Meu PWM esta a 281Khz,isso significa que tenho 8 bits de resolução(valores entre 0 255)?
È isso que preciso,255 valores entre zero e máximo.