stm32f3 timers
play

STM32F3 TIMERS http://www.youtube.com/watch?v=Izs5I7dYVU0 Cuauhtmoc - PowerPoint PPT Presentation

1 STM32F3 TIMERS http://www.youtube.com/watch?v=Izs5I7dYVU0 Cuauhtmoc Carbajal 22/10/2013 Introduction 2 Hardware timers are used to: Generate signals of various frequencies Generate pulse-width-modulated


  1. 1 STM32F3 TIMERS http://www.youtube.com/watch?v=Izs5I7dYVU0 Cuauhtémoc Carbajal 22/10/2013

  2. Introduction 2  Hardware timers are used to:  Generate  signals of various frequencies  Generate pulse-width-modulated (PWM) outputs  Accurate time base  Trigger events at known frequencies  Measure elapsed time between two events  Without accurate timing, digital control  Count events engineering is not possible – the control signals (controller action) have to happen at the exact right moment in time, e.g. timing control of an engine, etc.

  3. STM32 Timers 3  The STM32F30x has up to ten timer units  Timer 1 and Timer 8 are advanced timers intended for motor control.  Timers 2-4 and 15-17 are general purpose timer units.  Timers 6-7 are basic timers which are used to provide a time base to trigger the digital to analog converters.  All of the timers have a common architecture; the advanced timer simply has additional hardware features.  We will look at the basic timer first and then move on to the general-purpose timer.

  4. Bus Matrix and Busses FLTIF FLASH 4 IBus RAM CORTEX-M4 DBus CORE Bus Matrix TIM[1,8,15,16,17] AHB2 GPIO[A:F] SPI1 USART1 SBus SPI1 AHB3 ADC[1:2] EXTI COMP DMA1 OPAMP f CLK ≤ 72MHz SYSCFG Bridge2 APB2 f CLK ≤ 72MHz DMA2 AHB1 f CLK ≤ 36MHz TIM[2,3,4,6,7] Bridge1 APB1 SPI[2,3] USART[2,:3] UART[4:5] f TIM[2:7] CLK = 2 * f APB1CLK I2C[1,2] (STM32F3 Microcontroller CAN TSC USB Datasheet, page 17) CRC DAC RCC IWDG WWDG AHB[1:3]: Advanced High-performance Bus RTC APB: Advanced Peripheral Bus RCC: Reset and Clock Control STM32F3 Microcontroller Reference Manual, pages 41-44

  5. Timers and IRQn IRQn Peripheral 5 24 TIM1_BRK_TIM15 25 TIM1_UP_TIM16 26 TIM1_TRG_COM_TIM17 27 TIM1_CC 28 TIM2 29 TIM3 30 TIM4 43 TIM8_BRK 44 TIM8_UP 45 TIM8_TRG_COM 46 TIM8_CC 54 TIM6_DAC 55 TIM7 STM32F3 Microcontroller Reference Manual (pages 183-186)

  6. 6 6, 7 16,17 15 3,4 2 1,8 Timer Timer Feature Comparison 16 Bits x x x x x 32 Bits x Up x x x x x x Down x x x Up/Down x x x Auto-Reload x x x x x x Input Capture x x x x x Output Compare x x x x x Edge-aligned PWM x x x x x Center-aligned PWM x x x One-pulse mode output x x x x x Complementary outputs with programmable dead-time x x x Synchronization circuit to control the timer with external signals and to interconnect several timers x x x x together Repetition counter to update the timer registers only after x x x a given number of cycles of the counter Break inputs to put the timer’s output signals in a safe x x x user selectable configuration Interrupt/DMA generation x x x x x x Supports incremental (quadrature) encoder and hall- x x x sensor circuitry for positioning purposes Trigger input for external clock or cycle-by-cycle current x x x management Synchronization circuit to trigger the DAC x

  7. Basic Timer Block Diagram 7 TIM6/7 TIMx_ARR TIMx_CNT TIMx_PSC

  8. Output Compare / Input Capture 8  Many timers extend the basic module with the addition of counter channels. The “x” refers to the channel.  With this modest additional hardware, an output can be generated whenever the count register reaches a specific value or the counter register can be captured when a specific input event occurs (possibly a prescaled input clock). external event Timer Channel

  9. General-purpose timer block diagram TIM2 TIM3/4 9 IC1PSC IC2PSC IC3PSC IC4PSC

  10. General-purpose timer block diagram (Detail) TIM2 TIM3/4 10 PWM: TIMx_ARR: Period TIMx_ARR TIMx_CCR: Duty TIMx_PSC TIMx_CNT TIMx_CCRy

  11. Counter Modes 12 reset Counter Modes (ARR=3, PSC=1)

  12. ARPE

  13. Polarity selection & Edge Detector & Prescaler & Filter CK_PSC

  14. Channel’s main functional blocks Output control block

  15. PWM mode 2

  16. Basic timers (TIM6/TIM7) 32  The main block of the programmable timer is a 16-bit, up counter with its related auto-reload register. The counter clock can be divided by a prescaler.  The counter, the auto-reload register and the prescaler register can be written or read by software. This is true even when the counter is running.  They may be used as generic timers for time-base generation but they are also specifically used to drive the digital-to- analog converter (DAC).  The timers are completely independent, and do not share any resources. STM32F3 Microcontroller Reference Manual (pages 587-599)

  17. TIM6/TIM7 main features 33  16-bit auto-reload upcounter  16-bit programmable prescaler used to divide (also “on the fly”) the counter clock frequency by any factor between 1 and 65536  Synchronization circuit to trigger the DAC  Interrupt/DMA generation on the update event: counter overflow

  18. TIM6/TIM7 registers 34 Description Name Offset Control Register 1 TIMx_CR1 0x00 Control Register 2 TIMx_CR2 0x04 DMA/Interrupt Enable Register TIMx_DIER 0x0C Status Register TIMx_SR 0x10 Event Generation Register TIMx_EGR 0x14 Counter TIMx_CNT 0x24 Prescaler TIMx_PSC 0x28 Auto-Reload Register TIMx_ARR 0x2C • STM32F3 Microcontroller Datasheet, page 593-598

  19. TIM6/TIM7 Registers Relevant Bits 35 Reg Bits Name Description Mask TIMx_CR1 11 UIFREMAP UIF status bit remapping 0x00000800 7 ARPE Auto-reload preload enable 0x00000080 3 OPM One-pulse mode 0x00000008 2 URS Update request source 0x00000004 1 UDIS Update disable 0x00000002 0 CEN Counter enable 0x00000001 TIMx_CR2 6:4 MMS Master mode selection TIMx_DIER 8 UDE Update DMA request enable 0x00000100 0 UIE Update interrupt enable 0x00000001 TIMx_SR 0 UIF Update interrupt flag 0x00000001 TIMx_EGR 0 UG Update generation 0x00000001

  20. TIM6/TIM7 register map 36

  21. Code Snippet 37 //Timer7 Prescaler :550; Preload = 65455-1; // Actual Interrupt Time = 1000 ms #define UIE 0x00000001 // Update interrupt enable #define CEN 0x00000001 // Counter enable #define UIF 0x00000001 // Update interrupt flag #define RCC_APB1ENR_TIM7EN 0x00000020 void InitTimer7(void){ RCC->APB1ENR |= RCC_APB1ENR_TIM7EN; // Enable clock for TIM7 TIM7->CR1 &= ~CEN; // Disable TIM7 interrupt TIM7->PSC = 550; TIM7->ARR = 65454; 36,000,000/2 6 =550 NVIC_EnableIRQ(TIM7_IRQn); 36,000,000/550=65454.54545 TIM7->DIER |= UIE; // Enable TIM7 interrupt PRESCALER: 550 TIM7->CR1 |= CEN; // TIM7 enable PRELOAD: 65455 } void TIM7_IRQHandler (void) { TIM7->SR &= ~UIF; // Clear UIF //Enter your code here }

  22. General-purpose timers (TIM2/TIM3/TIM4) TIM2 TIM3/4 38  The general-purpose timers consist of a 16-bit or 32-bit auto- reload counter driven by a programmable prescaler.  They may be used for a variety of purposes, including measuring the pulse lengths of input signals (input capture) or generating output waveforms (output compare and PWM).  Pulse lengths and waveform periods can be modulated from a few microseconds to several milliseconds using the timer prescaler and the RCC clock controller prescalers.  The timers are completely independent, and do not share any resources. They can be synchronized together. STM32F3 Microcontroller Reference Manual (pages 447-513)

  23. TIM2/TIM3/TIM4 main features TIM2 TIM3/4 39  16-bit (TIM3 and TIM4) or 32-bit (TIM2) up, down, up/down auto-reload counter.  16-bit programmable prescaler used to divide (also “on the fly”) the counter clock frequency by any factor between 1 and 65536.  Up to 4 independent channels for:  Input capture  Output compare  PWM generation (Edge- and Center-aligned modes)  One-pulse mode output  Synchronization circuit to control the timer with external signals and to interconnect several timers.

  24. TIM2/TIM3/TIM4 main features TIM2 TIM3/4 40  Interrupt/DMA generation on the following events:  Update: counter overflow/underflow, counter initialization (by software or internal/external trigger)  Trigger event (counter start, stop, initialization or count by internal/external trigger)  Input capture  Output compare  Supports incremental (quadrature) encoder and hall-sensor circuitry for positioning purposes  Trigger input for external clock or cycle-by-cycle current management

  25. Most Important TIM3 Registers Description Name TIM2 TIM3/4 41 Control Register 1 TIMx_CR 1 Control Register 2 TIMx_CR 2 DMA/Interrupt Enable Register TIMx_DIER Status Register TIMx_SR Event Generation Register TIMx_EGR Capture/Compare Mode Register 1 TIMx_CCMR 1 Capture/Compare Mode Register 2 TIMx_CCMR 2 Capture/Compare Enable Register TIMx_CCER Counter TIMx_CNT Prescaler TIMx_PSC Auto-Reload Register TIMx_ARR Capture/Compare Register 1 TIMx_CCR1 TIM2/3/4 Capture/Compare Register 2 TIMx_CCR2 TIM6/7 Capture/Compare Register 3 TIMx_CCR3 Capture/Compare Register 4 TIMx_CCR4

Recommend


More recommend