Rodzina STM32

02-20-2010 przez admin Zostaw odpowiedź »

Pierwszą firmą która wprowadziła na rynek mikrokontrolery z rdzeniem Cortex-M3 był Texas Instruments ze swoją rodzina Stellaris. Niedługo później do gry weszło ST Microelectronics wprowadzając nową rodzinę do swojego portfolio – STM32. Rodzina ta już na samym początku zawierała sporo układów, a z biegiem czasu jeszcze trochę urosła. Niedawno STM wprowadziło nowe układy, które mają na pokładzie transceivery 2,4GHz i są układami SoC przeznaczonymi do aplikacji Wireless. Opatrzono je wówczas wspólną nazwą STM32W i jednocześnie cała reszta rodziny pierwotnie nazywana STM32 została przemianowana na STM32F. O STM32W niestety nic nie napiszę, gdyż po pierwsze nie miałem jeszcze okazji zaznajomić się z tą częścią rodziny, a po drugie nie czuję się na siłach pisać o technologiach bezprzewodowych. Z kolei opisywanie tych układów z pominięciem części transceivera sprowadzi się do opisywania STM32F, gdyż całą resztą nie wiele się one różnią. Tak więc zaczynamy poznawanie STM32F!

Ogólnie o STM32F

Szerokie portfolio sprawia, że naprawdę jest z czego wybierać. Oferowane mikrokontrolery posiadają na pokładzie rdzeń Cortex-M3 taktowany z częstotliwością aż do 72MHz, do 64kB pamięci SRAM, do 512kB pamięci FLASH, oraz są zasilane napięciem 2.0-3.6V (wejścia 5V tolerant), kompatybilne Pin-to-Pin i posiadają wiele peryferiów.  Układy dostępne są w wielu typach obudów takich jak: QFN, LQFP, oraz BGA.

STM32 - portfolio

Na cztery sposoby…

Cała oferta podzielona jest na 4 linie w zależności od przeznaczenia układu w którym ma pracować mikrokontroler. Poniżej przedstawiam tabelkę przygotowaną przez ST Microelectronics. Jak nietrudno zauważyć wszystkie układy są bardzo dobrze wyposażone i porażają możliwościami, tym bardziej jeżeli wziąć pod uwagę fakt, że ich cena jest niewiele wyższa niż cena dość popularnych w naszym kraju mikrokontrolerów AVR.

Product Lines

Access line – STM32F101

Najprostsza i najmniej wyposażona linia produktów. Przeznaczona przede wszystkim do prostych rozwiązań i stosowania w większości urządzeń. Posiada rdzeń taktowany z maksymalną częstotliwością 36MHz i jeden 12-bitowy przetwornik ADC (pomijając oczywiście resztę peryferiów które posiadają wszystkie mikrokontrolery z rodziny STM32F).

USB Access line -STM32F102

Linia podobna do poprzedniej z tym, że dodatkowo wyposażona w peryferia umożliwiające implementację protokołu USB – Full Speed 12Mbs, oraz możliwość generowania wymaganego sygnału zegarowego 48MHz wykorzystując wewnętrzną pętlę PLL.

Performance line – STM32F103

Linia o największych możliwościach. Dedykowana przede wszystkim do zastosowań przemysłowych i motoryzacyjnych. Przeznaczona do wymagających aplikacji, takich jak sterowniki silników, regulatory, układy przetwarzające dźwięk i obraz. Mikrokontrolery z tej linii taktowane są z częstotliwości aż do 72MHz, oraz posiadają na pokładzie peryferia takie jak: generatory PWM, sprzętowe sterowniki magistrali I2S, oraz CAN.

Connectivity line – STM32F105/STM32F107

Linia o możliwościach podobnych do Performance line. Główna różnica to brak generatorów PWM. W zamian za to posiadają USB OTG, a  niektóre z układów (te których nazwa zaczyna się od STM32F107)  posiadają peryferia obsługujące Ethernet MAC z dedykowanym kontrolerem DMA.  Przeznaczone są także do zastosowań w przemyśle, ale również do obsługi paneli sterujących, oraz prostych urządzeń audio.

A co w środku?!?

Mikrokontrolery rodziny STM32 są bardzo dobrze wyposażone w peryferia, dzięki czemu można je stosować w wielu aplikacjach. Uważam, że warto pokrótce opisać przynajmniej część z nich, tym bardziej, że posiadają one duże możliwości . Podczas opisu skupię się przede wszystkim na peryferiach układów z linii Performance.

Nested vectored interrupt controller (NVIC)

Nowy kontroler przerwań obsługuje:

  • aż do 43 maskowalnych przerwań o 16 poziomach priorytetów
  • bardzo krótkie i przewidywalne czasy obsługi przerwań
  • wywłaszczanie przerwań
  • obsługa przerwań o wyższym priorytecie w trybie late arrival (gdy przerwanie o wyższym priorytecie przyjdzie w momencie rozpoczynania obsługi przerwania o niższym priorytecie, rozpoczynanie obsługi przerwania o mniejszym priorytecie zostaje wstrzymane i obsługiwane jest przerwanie o wyższym priorytecie)
  • wsparcie dla tail-chaining (ciągłe obsługiwanie zakolejkowanych przerwań, ze skróceniem czasu ich podejmowania – ilość cykli wymaganych do podjęcia kolejnych przerwań, jest mniejsza niż w przypadku podjęcia jednego przerwania)
  • automatyczne zachowywanie i odtwarzanie kontekstu, przy wchodzeniu i wychodzeniu z procedury obsługi przerwania
  • dużo łatwiejsza programowa implementacja wektora funkcji obsługi przerwań

External interrupt/event constroller (EXTI)

Kontroler zdarzeń i przerwań zewnętrznych posiadający 19 linii reagujących na zbocze. Każda linia może być niezależnie konfigurowana (wyzwalanie zboczem rosnącym/opadającym/oba), oraz niezależnie maskowana. Do 16 linii kontrolera można podłączyć aż do 80 zewnętrznych portów wejścia/wyjścia (GPIO).

Boot modes

Dostępne sa 3 tryby bootowania:

  • z pamięci FLASH użytkownika
  • z pamięci systemu (System Memory)
  • z wewnętrznej pamięci SRAM

Program bootloader umieszczony jest w pamięci systemu i umożliwia programowanie pamięci FLASH poprzez interfejs USART1.

Power supply supervisor

Mikrokontrolery STM32F posiadają wbudowany układ power-on reset (POR)/power-down reset (PDR), który odpowiada za poprawne wystartowanie procesora przy napięciach już od 2V. Zapewnia także utrzymywanie mikrokontrolera w trybie Reset gdy napięcie zasilające jest niższe niż wyznaczony próg, dzięki temu nie jest wymagany zewnętrzny układ resetu. Układ posiada także programowalny układ detekcji napięcia (PVD), który nieustannie monitoruje napięcie zasilania i może generować przerwania kiedy napięcie spadnie poniżej ustalonego poziomu. Pozwala to na podjęcie odpowiednich działań, lub wygenerowanie ostrzeżenia.

Low-power modes

Linia Performance obsługuje 3 tryby obniżonego poboru mocy, co pozwala osiągnąć bardzo dobry kompromis między niskim poborem mocy, a krótkim czasem wybudzania.

  • Sleep mode – w tym trybie procesor jest uśpiony, ale wszystkie peryferia działają i są w stanie wybudzić procesor, gdy tylko nadejdzie przerwanie
  • Stop mode – ten tryb charakteryzuje się prawie najmniejszym poborem mocy. Wyłączony jest wówczas zarówno procesor, jak i większość peryferiów, łącznie z tymi generującymi sygnały zegarowe – PLL, HSI, HSE. Podtrzymywana jest tylko zawartość pamięci SRAM. Wybudzić procesor z tego trybu może przerwanie od RTC, USB (Wake Up), lub przerwanie z linii zewnętrznej.
  • Standby mode -  najmniejszy z możliwych pobór mocy. Powyłączane są wszystkie te układy, co w trybie Stop, a dodatkowo wyłączana jest pamięć SRAM i zachowywana jest tylko zawartość rejestrów Backup

DMA

Konfigurowalny kontroler DMA umożliwia transfer danych: pamięć-pamięć, peryferia-pamięć, oraz pamięć-peryferia. Może pracować w trybie bufora cyklicznego, bo pozwala uniknąć generowania przerwania w momencie dojścia do końca bufora. Możliwe jest zdefiniowanie aż do 7 kanałów transferu, między wybranymi obszarami pamięci, bądź peryferiami i niezależne ich wyzwalanie. Kontroler DMA może być używany z peryferiami takimi jak: SPI, I2C, USART, Timery, oraz przetwornik ADC.

RTC (real-time clock) and backup registers

Zarówno RTC, jaki i rejestry backup są zasilane poprzez przełącznik, który przełącza napięcie zasilania albo pobierając je z głównego portu zasilania albo z linii zasilania bateryjnego. Rejestry backup to 10 16-bitowych rejestrów które umożliwiają przechowywanie 20 bajtów danych przy braku zasilania.

RTC jest zestawem liczników obsługiwanych programowo i taktowanych z zewnętrznego oscylatora kwarcowego 32.768kHz, albo wewnętrznego oscylatora RC (40kHz). RTC może być wykorzystany do implementacji zegara lub kalendarza, a także do generowania przerwania co określony czas. Dodatkowo do dyspozycji mamy także 20-bitowy preskaler głównego sygnału zegarowego który domyślnie ustawiony jest tak, by przerwanie generowane było co 1 sekundę.

Timers & Watchdogs

Mikrokontrolery linii Performance wyposażone są w jeden zaawansowany timer, trzy timery ogólnego przeznaczenia, dwa timery watchdog, oraz timer SysTick używany w systemach operacyjnych.

Advanced-control timer (TIM1)

Jest to najbardziej zaawansowany 16-bitowy timer w całym układzie. Może on pracować jako trójfazowy generator PWM multiplexowany na 6 kanałów. Posiada komplementarne wyjścia z programowanym czasem martwym (dead-time). Może także działać jako timer ogólnego przeznaczenia, którego funkcje opisuję poniżej.

Genereal-purpose timers (TIMx)

Mikrokontrolery z linii Performance posiadają do 3 timerów ogólnego przeznaczenia. Wszystkie są oparte o 16-bitowy licznik zliczający w dół, lub w górę z funkcją automatycznego przeładowywania. Posiadają także 16-bitowy preskaler i 4 niezależne kanały dla input capture/output compare, PWM i trybu one-pulse. Timery te mogą także pracować razem w trybie zaawansowanym dzięki funkcji Time Link. Mogą również  obierać sygnały wprost z czujników halla i enkoderów.

Independent watchdog

Jest to watchdog oparty o 12-bitowy licznik zliczający w dół z preskalerem 8-bitowym. Taktowany jest on 40kHz wewnętrznym generatorem RC i działa niezależnie od głównego zegara. Pracuje także w trybach obniżonego poboru mocy Stop mode i Standby mode. Może być uzywany jako watchdog do resetowania mikrokontrolera, gdy pojawi się jakiś problem, albo jako swego rodzaju timer używany w aplikacji. Jest on w pełni software’owo konfigurowalny.

Window watchdog

Realizowany jako 7-bitowy licznik zliczający w dół. Może wywoływać reset gdy nie zostanie odświeżony w zadanym oknie czasowym.

I2c Bus

Układy posiadają do dwóch kontrolerów interfejsu I2C. Mogą one pracować w trybach multimaster, oraz slave. Obsługują transmisje z szybkością standard i fast. Układy slave mogą być adresowane w dwóch trybach – 7-bitowym, oraz 7/10-bitowym. Dodatkowo kontroler sam dba o generowanie i weryfikację sumy CRC podczas transmisji. Kontrolery I2C mogą być obsługiwane przez DMA.

USART

Jeden z USARTów może pracować z szybkością do 4.5Mbit/s, natomiast pozostałe do 2.25Mbit/s. Sprzętowo obsługiwane są sygnały RTS i CTS. Kontroler USART może być obsługiwany przez DMA.

SPI

Interfejsy SPI mogą pracować zarówno w trybie slave, jak i master z prędkością do 18Mbit/s. Obsługiwane są tryby full- i half-duplex. 3-bitowy preskaler umożliwia wybranie jednej z ośmiu prędkości. Długość ramki danych jest konfigurowalna i może wynosić 8 lub 16 bit. Suma CRC jest generowana i weryfikowana sprzętowo, co ułatwia obsługę kart SD i MMC.

USB

Wbudowany kontroler USB może pracować nawet z prędkości 12Mbit/s. Jako zegar wykorzystywany jest wtedy sygnał z pętli PLL (źródłem sygnału dla pętli musi być zewnętrzny kwarc – ze względu na stabilność).

GPIO

Porty wejścia/wyjścia mogą byś programowo konfigurowane do pracy w trybach: push-pull lub open drain (wyjście) i push-up lub push-down (wejście). Większość nich ma także dodatkowe funkcje. Podłączone są one do magistrali APB2 co zapewnia prędkość zmian wyjścia do 18MHz.

ADC

Układy wyposażone są w jeden lub dwa (performance line) 12-bitowe przetworniki ADC o czasie konwersji równym 1us. Posiadają one wiele trybów pracy, których wymienianie tutaj nie ma sensu, więc odsyłam do dokumentacji. Ich wejścia mogą być multipleksowane na 18 sygnałów, z czego 16 jest zewnętrznych, a pozostałe dwa, to wewnętrzny reference voltage i wewnętrzny termometr.

Podsumowując

Mam nadzieje, że udało mi się Was przekonać, jaka moc drzemie w mikrokontrolerach STM32F. Ogólnie możliwości mikrokontrolerów z rdzeniami 32-bitowymi są nieporównywalne z możliwościami 8-bitowców. Ceny STM32 zaczynają się już od około 15zł, co jest porównywalne z cenami lepszych ATMeg, dlatego warto się zastanowić, czy czasem nie pora by poznać nową rodzinę mikrokontolerów…

Źródła

Reklama

2 komentarzy

  1. Janisław pisze:

    Błąd !!! Pierwszą firmą z cortexami 3 była firma LUMINARYMICRO. Texas ją tylko wykupił.
    Nie należy mu się żadna chwała bo do gotowca
    nic nie dołożył.

  2. NEO pisze:

    Dokładnie AVR nie sa takie dobre .. a cena ich mowi sama za siebie w ostatnim czasie masakrycznie wzrosła, jedyna ich zaleta to to ze sa proste w obsludze Bascom ludzi przyciaga i prostota niestety w innych prockach juz nie jest to takie łątwe sam mialem uczyc sie C niestety jakos niema na to czasu …

Dodaj komentarz