Mikrokontrolery STM32 dla początkujących

  • Dodaj recenzję:
  • 4025
  • Producent: BTC
  • Autor: Aleksander Kurczyk
  • Cena netto: 75,24 zł 79,00 zł

Mikrokontrolery STM32 dla początkujących

rok wydania: 2019
ilość stron: 242
ISBN: 978-83-64702-16-7
oprawa: twarda

Opis

Książka poświęcona jest programowaniu i stosowaniu 32-bitowych mikrokontrolerów z rodziny STM32, bazujących na rdzeniu obliczeniowym z rodziny Cortex-M. Czytelnik znajdzie w książce dużą liczbę przykładów ze szczegółowymi komentarzami, pozwalającymi szybko rozpocząć własne eksperymenty. Autor bazuje na programie STM32CubeMX firmy STMicroelectronics. Omawia narzędzia oraz biblioteki pozwalające na programowanie układów z rodziny STM32. Wydrukowanie w książce kolorowych zrzutów ekranowych oraz listingów ułatwi z pewnością Czytelnikowi śledzenie kolejnych etapów pracy dla zamieszczonych projektów.

Książka skierowana jest przede wszystkim do osób, które po raz pierwszy spotykają się z mikrokontrolerami STM32, a mają już jakieś podstawowe doświadczenie z popularnymi płytkami Arduino lub jakimikolwiek mikrokontrolerami.
Autor zakłada, że Czytelnik zna podstawy programowania w języku C/C++ i rozumie działanie prostego kodu – zna pojęcia takie jak: zmienne, instrukcje warunkowe czy pętle.

Ze wstępu

Swoją pierwszą styczność z układami STM32 miałem w trakcie kursu programowania tych układów zorganizowanego przez koło naukowe Microsystem Oriented Societyna Politechnice Wrocławskiej. Podczas kursu przygotowałem kilka małych projektów i umieściłem je w serwisie GitHub; repozytorium to następnie rozbudowywałem po kursie, dodając kolejne projekty. Ponieważ wszystkie przykłady wykonywane były na płytkach Kamami KA-NUCLEO, które KN MOS otrzymało od producenta i rozdało między uczestników szkolenia, pracownik firmy Kamami p. Piotr Zbysiński skon-taktował się ze mną i zapytał, czy nie chciałbym opisać kilku projektów na łamach miesięcznika „Elektronika Praktyczna”. Zgodziłem się – czego efektem była seria wydawnicza – „Kurs programowania układów STM32”. Następnie poproszony zostałem o przygotowanie książki na bazie tych artykułów – tej właśnie książki. Opisuję w niej sporo tych samych projektów – część z nich nieco rozbudowałem, część całkiem zmieniłem, a część pozostawiłem w niemal niezmienionej formie. Względem serii wydawniczej zmieniło się także środowisko pracy – w artykułach wykorzystywane było starsze, tworzone przez społeczność – System Workbech for STM32, obecnie jest to Atollic TrueSTUDIO, wykupione przez producenta układów STM32. W dużej mierze jednak książka bazuje na wspomnianej serii wydawniczej.

1.1. Do kogo kieruję niniejszą książkę? Książkę tę kieruję przede wszystkim do osób takich jak ja w momencie pierwszego spotkania z mikrokontrolerami STM32 – do osób, które mają już jakieś podstawowe doświadczenie z popularnymi płytkami Arduino lub jakimikolwiek mikrokontrolerami – czy to na zajęciach w szkole, na uczelni, czy prywatnie w domu. Zakładam też, że Czytelnik zna podstawy programowania w języku C/C++ i rozumie działanie prostego kodu – zna pojęcia takie jak: zmienne, instrukcje warunkowe czy pętle.

1.2. Czego będzie można się z niej nauczyć? W kolejnych rozdziałach przedstawię narzędzia oraz biblioteki pozwalające na programowanie układów z rodziny STM32. Podczas tworzenia małych projektów zapoznamy się z zagadnieniami takimi jak: obsługa pinów GPIO, liczniki, prze-rwania, generowanie sygnału PWM, interfejsy komunikacyjne UART, SPI czy I2C, obsługa konwertera analogowo-cyfrowego i wielowątkowość oferowana przez system operacyjny FreeRTOS. Uruchomimy także urządzenia zewnętrzne takie jak: moduł GPS, kolorowy dotykowy wyświetlacz LCD, czujniki temperatury, ciśnienia i wilgotności czy paski adresowalnych diod LED oraz połączymy się z siecią Wi-Fi i komputerem w standardzie Bluetooth.

1.3. Płytka rozwojowa Kamami KA-NUCLEO. Wszystkie opisywane w książce przykłady tworzone były pod kątem płytki rozwojowej Kamami KA-NUCLEO-F411CE. Choć większość spośród nich będzie możliwa do wykonania na dowolnej innej płytce z układem STM32, zachęcam do zakupu tej konkretnej płytki, ponieważ przenoszenie projektów może być chwilami problematyczne.

KA-NUCLEO-F411CE występuje w dwóch, nieznacznie różniących się wersjach i każdy przykład jest kompatybilny z obiema wersjami. Obie wersje płytki bazują na układzie STM32F411CEU6 i są wyposażone w interfejs USB 2.0 (do dyspozycji użytkownika), pięć interfejsów SPI, pięć magistral I2S, trzy magistrale I2C, trzy interfejsy USART/UART, sześć liczników 16-bitowych oraz dwa 32-bitowe. KA- -NUCLEO-F411CE może być taktowany zegarem o maksymalnej częstotliwości 100 MHz. Na płytce oprócz właściwego mikrokontrolera znajduje się również prostszy układ STM32F103C8U6, pełniący funkcję programatora ST-LINK z wyj-ściem USB. Urządzenie ma wyprowadzenia pinów zgodne z Arduino, wbudowany przycisk do dyspozycji użytkownika oraz trójkolorową diodę LED RGB. STM32 to rodzina 32-bitowych mikrokontrolerów wyprodukowanych przez firmę STMicroelectronics. Układy te bazują na rdzeniu obliczeniowym z serii ARM Cortex-M. W zależności od wersji cechują się małym poborem mocy lub wysokimi osiągami i możliwościami. Układy mogą być taktowane zegarem o maksymalnej częstotliwości od 32 do 216 MHz, odpowiednio w wersji STM32L0 oraz STM32F7. Wersje STM32F7, STM32F4 i STM32F3, oparte na rdzeniach Cortex-M4F, mają wsparcie dla obliczeń zmiennoprzecinkowych (FPU) oraz cyfrowego przetwarzania sygnałów (DSP). Mikrokontrolery te mają również wiele interfejsów SPI, UART, I2C, I2S, a w niektórych wersjach również wbudowany kontroler USB 1.1 lub 2.0 i Ethernet.

1.4. W jakim programie będziemy pracować? Producent układów STM32 – firma STMicroelectronics – wydał zestaw bibliotek – frameworków, noszący nazwę Hardware Abstraction Layer, umożliwiający programowanie tych mikrokontrolerów w bardzo prosty, wysokopoziomowy, sposób. Dzięki temu nie ma konieczności zagłębiania się w obszerną specyfikację układu ani rdzenia ARM. Wraz z bibliotekami HAL producent dostarcza również program STM32CubeMX (rysunek1.2). Jest to graficzny generator konfiguracji mikrokontrolera, pozwalający na skonfigurowanie wszystkich wyprowadzeń, interfejsów, liczników oraz taktowania całego układu, a następnie na wygenerowanie gotowego projektu dla różnych środowisk IDE. Wszystko to sprawia, że programowanie tak zaawansowanego mikrokontrolera jest niemal równie proste i intuicyjne, jak programowanie platformy Arduino, niemniej mamy tutaj znacznie większe możliwości.

Spis treści

1. Wstęp / 7
1.1. Do kogo kieruję niniejszą książkę?/ 8
1.2. Czego będzie można się z niej nauczyć? / 8
1.3. Płytka rozwojowa Kamami KA-NUCLEO / 8
1.4. W jakim programie będziemy pracować? / 10

2 . Hello Blinky! – Hello World świata mikrokontrolerów / 11
2.1. Tworzenie projektu w programie STM32CubeMX / 12
2.2. Konfiguracja wyprowadzeń procesora / 14
2.3. Wbudowana pętla PLL / 16
2.4. Generowanie projektu / 19
2.5. Poznajemy Atollic TrueSTUDIO / 20
2.6. Importujemy projekt / 20
2.7. Piszemy kod programu / 20
2.8. Kompilacja, wgrywanie kodu programu, perspektywa debugowania i praca krokowa / 25
2.9. Obsługa pinów GPIO – odczyt wartości (obsługa przycisku) / 28

3. Liczniki, przerwania i sygnał PWM / 33
3.1. Tworzymy projekt / 35
3.2. Konfiguracja licznika / 38
3.3. Jak dobrać parametry? / 38
3.4. Sterowanie jasnością z kodu programu / 40
3.5. Czy coś jest nie tak? – skala liniowa i korekcja gamma / 41
3.6. Mieszanie barw / 43
3.7. Karuzela / 44
3.8. Przerwania licznika / 45

4. Interfejs UART – połączenie z komputerem i innymi urządzeniami / 49
4.1. Pierwszy projekt / 51
4.2. Sterowanie kolorem diody RGB z komputera / 58
4.3. Wykorzystanie przerwań do odbioru danych / 62

5. [UART] Odbiornik GPS / 67
5.1. GPS-NAVSTAR – Global Positioning System – Navigation Signal Timing and Ranging / 69
5.2. Moduł GPS / 69
5.3. Tworzymy projekt / 72

6. Interfejs SPI i adresowalne diody LED / 89
6.1. Jak sterować diodami? / 91
6.2. Jak to wykonamy? – interfejs SPI / 94
6.3. Tworzymy nowy projekt / 95
6.4. Częstotliwość sygnału sterującego / 97
6.5. Mieszanie barw i tworzenie gradientów / 104

7. [SPI] Wyświetlacz LCD / 109
7.1. Zasada działania wyświetlacza LCD / 110
7.2. Podłączenie / 111
7.3. Tworzymy projekt / 114
7.4. Przenoszenie biblioteki / 133

8. [SPI] Panel dotykowy / 135
8.1 Jak działa panel dotykowy? / 136
8.2. Rozbudujmy projekt / 137

9. Magistrala I2C i odczyt danych z czujników cyfrowych / 153
9.1. Interfejs I2C / 154
9.2. Czujnik BMP180 / 155
9.3. Komunikacja z czujnikiem / 157
9.4. Tworzymy projekt / 159
9.5. Czujnik Bosch BME280 / 169

10. Konwerter analogowo-cyfrowy i odczyt danych z czujników analogowych / 175
10.1. Jak działa przetwornik ADC? / 176
10.1.1. Próbkowanie / 176
10.1.2. Kwantyzacja / 176
10.2. Bezpośredni odczyt wartości / 178
10.3. Tryb DMA – automatyczny odczyt do zmiennej / 185
10.4. Do czego odczytem wartości z czujników możemy wykorzystać przetwornik analogowo-cyfrowy?/ 188

11. Wi-Fi / 189
11.1. Zestaw poleceń AT Hayesa / 191
11.2. Czym właściwie jest TCP, porty i jak w uproszczeniu przebiega komunikacja w Internecie? / 194
11.3. Testowanie działania układu ESP8266 / 195
11.4. Serwer HTTP i ustawianie koloru diody RGB przez stronę www / 199

12. Bluetooth / 211
12.1. Bluetooth / 213
12.2. Moduł HC-6 / 213
12.3. Tworzymy projekt / 214
12.4. Jak to działa? / 229

13. Wielowątkowość / 231
13.1. Tworzymy projekt / 233
13.2. Race condition i semafory / 239
13.3 Kolejki / 241


O Autorze

Aleksander Kurczyk jest pasjonatem informatyki, programowania, sieci komputerowych i elektroniki. Mikrokontrolery STM32 poznał podczas studiów na Politechnice Wrocławskiej, gdzie brał udział w przygotowaniu kursów mikrokontrolerowych dla studentów. Jest autorem artykułów publikowanych w „Elektronice Praktycznej”.