Przegląd możliwości timerów w STM32F

W artykule przedstawiamy ekspresowy przegląd cech i możliwości timerów-liczników zastosowanych w mikrokontrolerach STM32F2/F4 i pozostałych STM32, z uwzględnieniem ich podstawowych obszarów aplikacyjnych.

Pomimo swojej krótkiej rynkowej historii mikrokontrolery STM32F nieustannie ewoluują, co szczególnie jest widoczne na przykładzie wbudowanych w nie bloków peryferyjnych, w tym także timerach. Znaczenie sprzętowych timerów we współczesnych aplikacjach rośnie, rosną także wymagania im stawiane, na co producenci mikrokontrolerów starają się możliwie szybko zareagować. Jedne z najnowszych timerów firma STMicroelectronics zastosowała w mikrokontrolerach STM32F2 i STM32F4, których wyposażenie – poza rdzeniami CPU – jest bliźniacze.

Timery w STM32: jakie i do czego

W zależności od przynależności do rodziny, mikrokontrolery STM32 są wyposażane w różne rodzaje mikrokontrolerów, co w przejrzysty sposób pokazano w tabeli 1. W mikrokontrolerach STM32F2 i STM32F4 zastosowano łącznie 14 timerów, w tym dwa 32-bitowe (TIM2 i TIM5).

Tab. 1. Zestawienie wyposażenia w timery poszczególnych rodzin mikrokontrolerów STM32

Typ timera STM32F101…107 STM32F100 STM32L1 STM32F2/F4
Advanced TIM1 TIM1   TIM1
TIM8     TIM8
General Purpose TIM2 TIM2 TIM2  
TIM3 TIM3 TIM3 TIM3
TIM4 TIM4 TIM4 TIM4
TIM5 TIM5    
General Purpose 32-b       TIM2
      TIM5
Basic TIM6 TIM6 TIM6 TIM6
TIM7 TIM7 TIM7 TIM7
1-channel TIM10   TIM10 TIM10
TIM11   TIM11 TIM11
TIM13 TIM13   TIM13
TIM14 TIM14   TIM14
2-channel TIM9   TIM9 TIM9
TIM12 TIM12   TIM12
1-channel z wyjściami komplementarnymi   TIM15    
       
2-channel z wyjściami komplementarnymi   TIM16    
  TIM17    

Timery w STM32 dzielą się na pięć zasadniczych grup:

  • advanced – timery najbardziej rozbudowane funkcjonalnie o największych możliwościach konfiguracyjnych z wbudowanymi komparatorami, przystosowane do pracy w systemach wielofazowego sterowania silnikami (m.in. możliwość zadania czasu martwego pomiędzy fazami, możliwość sprzętowego zatrzymania sterowanego silnika),
  • general purpose – uniwersalne timery o dużych możliwościach funkcjonalnych, pozbawione komparatorów, przystosowane do pomiaru czasu i okresu przebiegów, zliczania impulsów i odstępów między nimi, zliczania impulsów z czujników i enkoderów itp.
  • basic – timery pozbawione wejść i wyjść zewnętrznych, przeznaczone do pracy w generatorach podstawy czasu (np. do wyzwalania przetworników C/A).
  • 1-/2-channel z wyjściami komplementarnymi – timery o nieco mniejszych możliwościach niż dotychczas wymienione, zliczające wyłącznie w górę, wyposażone w komparator, a także – wyłącznie w wersji 2-kanałowej – także w generator czasu martwego.

Wszystkie wymienione dotychczas timery mają dostęp do DMA, dzięki czemu ich obsługa pochłania minimalne zasoby CPU. Ostatni rodzaj timerów stosowanych w obecnie dostępnych wersjach mikrokontrolerów STM32 to:

  • 1-/2-channel – timery nie mające dostępu do DMA, pozbawione komparatora i generatora czasu martwego.

Tab. 2. Skrócone charakterystyki funkcjonalne poszczególnych grup timerów stosowanych w mikrokontrolerach STM32

Typ timera Rozdzielczość Zliczanie Dostęp do DMA Liczba kana-łów Liczba kompara-torów IC/OC/ PWM/OP Tryb master Tryb slave
Advanced 16 up, down, center aligned + 4 3 +/+/+/+ + +
General purpose 16/32 (wyłącznie w STM32F2/F4) up, down, center aligned + 4 0 +/+/+/+ + +
Basic 16 up + 0 0 -/-/-/- +
1-channel 16 up 1 0 +/+/+/+ +
2-channel 16 up 2 0 +/+/+/+ + +
1-channel z wyjściami komplemen-tarnymi 16 up + 1 1 +/+/+/+ +
2-channel z wyjściami komplemen-tarnymi 16 up + 2 1 +/+/+/+ +

Najważniejsze cechy poszczególnych grup timerów zestawiono w tabeli 2. Warto zwrócić uwagę, że za wyjątkiem TIM2 i TIM5, które w mikrokontrolerach STM32F2 i STM32F4 są 32-bitowe a w innych rodzinach 16-bitowe, wszystkie pozostałe timery o takich samych nazwach charakteryzują się podobną budową i cechami użytkowymi.

Synchronizacja timerów w STM32

W zestawieniu prezentowanym w tabeli 2 widoczne są dwie nieoczywiste kolumny: tryb master i tryb slave. Dotyczą one jedynie niektórych typów timerów, które są przystosowane do pracy w konfiguracji wielopoziomowej, niektóre z nich jako źródła sygnałów taktujących dla kolejnych timerów (master), niektóre jako timery taktowane (slave), timery general purpose oraz advanced mogą pracować w obydwu trybach.

 

Rys. 1. Schemat blokowy systemu multipleksera sygnałów wyzwalających

Rys. 1. Schemat blokowy systemu multipleksera sygnałów wyzwalających

 

Rys. 2. Budowa timerów TIM1/TIM8 i zintegrowanego w nich multipleksera timer system link

Rys. 2. Budowa timerów TIM1/TIM8 i zintegrowanego w nich multipleksera timer system link

 

Konfiguracją sygnałów wejściowych i wyjściowych wyzwalających zliczanie programista może zarządzać dzięki specjalnemu multiplekserowi timer system link (występuje w każdym timerze obsługującym tryby master/slave), którego schemat blokowy pokazano na rysunku 1, a na rysunku 2 pokazano jego zastosowanie w timerze TIM1/TIM8 (advanced). Przykładowy sposób kaskadowego połączenia timerów w trybie master/slave pokazano na rysunku 3.

 

Rys. 3. Przykładowa konfiguracja kaskadowa timerów w STM32

Rys. 3. Przykładowa konfiguracja kaskadowa timerów w STM32

 

Maksymalne częstotliwości taktowania

Taktowanie timerów w mikrokontrolerach STM32F2 i STM32F4 zostało podzielone na dwie niezależne grupy:

  • taktowanych z preskalera APB1, są to: TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM12, TIM13, TIM14,
  • taktowanych z preskalera APB2, są to: TIM1, TIM8, TIM9, TIM10, TIM11.

Cechy konstrukcyjne mikrokontrolerów STM32F2/F4 powodują, że maksymalna częstotliwość wewnętrznego taktowania timerów wynosi (tabela 3):

  • w przypadku STM32F2: z grupy APB1 30 MHz, a z grupy APB2 – 60 MHz, które w obydwu przypadkach są powielane x2 dając wynikowo 60 lub 120 MHz.
  • w przypadku STM32F4: z grupy APB1 42 MHz, a z grupy APB2 – 84 MHz, które w obydwu przypadkach są powielane x2 dając wynikowo 84 lub 168 MHz.

Tab. 3. Maksymalne częstotliwości taktowania timerów w mikrokontrolerach STM32F2/F4

Mikrokontrolery Timery fTIMmax
[MHz]
STM32F2 TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM12, TIM13, TIM14 60
TIM1, TIM8, TIM9, TIM10, TIM11 120
STM32F4 TIM2, TIM3, TIM4, TIM5, TIM6, TIM7, TIM12, TIM13, TIM14 86
TIM1, TIM8, TIM9, TIM10, TIM11 168

Żeby było łatwiej: narzędzia i pomoc dla programistów

Konfiguracja toru taktującego timery nie jest zadaniem bardzo trudnym, ale może sprawiać problemy początkującym programistom. Żeby zminimalizować ryzyko pomyłki firma STMicroelectronics udostępniła bezpłatnie proste w obsłudze konfiguratory (w postaci interaktywnych arkuszy XLS), które umożliwiają łatwe i – co ważne – pod kontrolą, ustawienie odpowiednich współczynników podziału i powielania w PLL, do tego potrafią wygenerować kod w C służący do konfiguracji bloku RCC. Okno konfiguratora z przykładowymi nastawami pokazano na rysunku 4.

 

Rys. 4. Wygląd okna arkusza XLS wspomagającego konfigurację systemu taktującego w mikrokontrolerach STM32

Rys. 4. Wygląd okna arkusza XLS wspomagającego konfigurację systemu taktującego w mikrokontrolerach STM32

 

Równie praktyczną pomocą dla programistów są przykładowe programy dostarczane m.in. z zestawami DISCOVERY (np. STM32F4DISCOVERY), dostępne na stronie internetowej producenta. Są wśród nich m.in. przykłady różnych konfiguracji poszczególnych timerów, które bez wątpienia są najbardziej poglądowe dla praktyków.