Autor: Marek Galewski
ISBN: 978-83-60233-82-5
Ilość stron: 360
Data wydania: 01/2012
Oprawa: Twarda
Format: 16.5x24.0cm
Wydawnictwo: BTC
Niniejsza książka przeznaczona jest główne dla osób początkujących, które chcą poznać bliżej 32-bitowe mikrokontrolery rodziny ARM z rdzeniem Cortex-M3. Zawiera ona ponad 30 rozbudowanych ćwiczeń, które pozwalają poznać możliwości układów serii STM32F1xx produkowanych przez STMicroelectronics.
Sposób prowadzenia ćwiczeń pozwala zarówno na samodzielną naukę programowania jak i na wykorzystanie książki np. jako podstawy do prowadzenia kursów i zajęć laboratoryjnych w szkołach bądź na uczelniach.
Oprócz ćwiczeń, w książce zawarto także opisy dotyczące zastosowanych podukładów peryferyjnych takich jak m.in. porty wejścia/wyjścia, układy licznikowe, przetworniki A/C, interfejsy komunikacyjne, kontrolery przerwań i DMA.
Ponadto opisano także sposób wykorzystania kilku ciekawych modułów rozszerzających (m.in. klawiatura, wyświetlacze LCD, karty SD, czujnik położenia, akcelerometr, barometr, układ Bluetooth). Ta część niniejszej pozycji może być interesująca także dla osób o nieco wyższym stopniu zaawansowania w programowaniu mikrokontrolerów.
Rozdziały:
1. Wprowadzenie 11
1.1. Wstęp 12
1.2. Mikrokontrolery rodziny ARM 13
1.3. Architektura rdzenia ARM Cortex-M3 15
1.3.1. Najważniejsze cechy architektury Cortex-M3 15
1.3.2. Rejestry i organizacja pamięci 17
1.3.3. Podstawowe elementy rdzenia 20
1.4. Mikrokontrolery STM32F10x 20
2. Programowanie mikrokontrolerów 23
2.1. Języki programowania 24
2.2. Zapis binarny i heksadecymalny liczb 26
2.2.1. Konwersja między zapisami dziesiętnym i binarnym 26
2.2.2. Konwersja między zapisami binarnym i heksadecymalnym 27
2.3. Język C – krótkie przypomnienie 28
2.3.1. Typy zmiennych i ich zakresy 28
2.3.2. Deklaracje stałych 29
2.3.3. Zmienne ulotne 29
2.3.4. Operacje logiczne i bitowe 30
3. Sprzęt i oprogramowanie 33
3.1. Wprowadzenie 34
3.2. Niezbędne elementy sprzętowe 35
3.2.1. Zestaw uruchomieniowy ZL27ARM 35
3.2.2. Programator 38
3.3. Moduły rozszerzeń 39
3.4. Inne przydatne elementy sprzętowe 40
3.5. Oprogramowanie narzędziowe 41
3.5.1. Środowisko programowania 41
3.5.2. Programy dodatkowe 42
3.6. Etapy programowania mikrokontrolera 44
3.7. Niezbędna dokumentacja 45
3.8. Biblioteki STM 46
3.9. Przygotowanie środowiska pracy 51
3.10. Uruchomienie mikrokontrolera 52
3.11. Ćwiczenie 0. Projekt wzorcowy 56
3.11.1. Wprowadzenie 56
3.11.2. Ćwiczenie 0a. Tworzenie i konfiguracja projektu 56
3.11.3. Ćwiczenie 0b. Pisanie kodu programu, konfiguracja sygnałów taktujących 64
3.12. Ćwiczenie 1. Pierwszy program – „Migające diody” 68
3.12.1. Wprowadzenie 68
3.12.2. Ćwiczenie 1a. Rozbudowa kodu programu 68
3.12.3. Ćwiczenie 1b. Kompilowanie i linkowanie programu 70
3.12.4. Ćwiczenie 1c. Symulowanie i śledzenie działania programu 70
3.12.5. Ćwiczenie 1d. Zapis programu do pamięci mikrokontrolera 74
Zapis pamięci z trybu debug w μVision 74
Zapis pamięci z wykorzystaniem programu ST-Link Utility 74
Zapis pamięci z wykorzystaniem programu ZL30PRG 75
3.12.6. Ćwiczenie 1e. Śledzenie programu w mikrokontrolerze 76
4. Porty GPIO 77
4.1. Uniwersalne porty wejścia-wyjścia 78
4.2. Ćwiczenie 2. Porty GPIO – Wyjścia 83
4.2.1. Wprowadzenie 83
4.2.2. Ćwiczenie 2a. „Diody biegnące w lewo” 83
4.2.3. Ćwiczenie 2b. „Diody biegnące w lewo i prawo” 85
4.3. Ćwiczenie 3. Porty GPIO – Wejścia 86
4.3.1. Wprowadzenie 86
4.3.2. Ćwiczenie 3a. Przyciski 86
4.3.3. Ćwiczenie 3b. Przyciski i joystick 87
4.4. Obsługa alfanumerycznego wyświetlaczaLCD 1602 87
4.5. Ćwiczenie 4. Porty GPIO i LCD 93
4.5.1. Wprowadzenie 93
4.5.2. Ćwiczenie 4. „Odliczanie” 93
4.6. Ćwiczenie 5. Porty GPIO i LCD 94
4.6.1. Wprowadzenie 94
4.6.2. Ćwiczenie 5a. „Menu” 94
4.6.3. Ćwiczenie 5b. Własne znaki na LCD 97
4.7. Ćwiczenie 6. Porty GPIO i LCD 98
4.7.1. Wprowadzenie 98
4.7.2. Ćwiczenie 6. „Edytor” 98
4.8. Czujnik położenia STM FC30 – moduł KAmodMEMS1 100
4.9. Ćwiczenie 7. Porty GPIO, LCD i KAmodMEMS1 101
4.9.1. Wprowadzenie 101
4.9.2. Ćwiczenie 7. Tworzenie biblioteki obsługi modułu dodatkowego 102
4.10. Klawiatura – moduł KAmodKB4×4 106
4.11. Ćwiczenie 8. Porty GPIO, LCD i klawiatura KAmodKB4×4 109
4.11.1. Wprowadzenie 109
4.11.2. Ćwiczenie 8. Obsługa klawiatury 109
5. Kontroler przerwań NVIC, układy SysTick i RTC 111
5.1. System przerwań w ARM Cortex-M3 112
5.2. Sposoby odliczania czasu w programie 118
5.2.1. Licznik SysTick 119
5.2.2. Zegar czasu rzeczywistego (RTC) 121
5.3. Ćwiczenie 9. Przerwania i licznik SysTick 122
5.3.1. Wprowadzenie 122
5.3.2. Ćwiczenie 9a. SysTick 123
5.3.3. Ćwiczenie 9b. SysTick i przerwanie zewnętrzne 124
5.3.4. Ćwiczenie 9c. SysTick i 2 przerwania zewnętrzne 126
5.3.5. Ćwiczenie 9d. SysTick i 3 przerwania zewnętrzne 128
5.4. Ćwiczenie 10. Przerwania i licznik SysTick – funkcja opóźniająca Delay( ) 129
5.4.1. Wprowadzenie 129
5.4.2. Ćwiczenie 10a. „Migająca dioda” 129
5.4.3. Ćwiczenie 10b. „Biegnące diody” 131
5.5. Ćwiczenie 11. Zegar czasu rzeczywistego (RTC) 132
5.5.1. Wprowadzenie 132
5.5.2. Ćwiczenie 11a. „Migająca dioda” 132
5.5.3. Ćwiczenie 11b. Czas od uruchomienia systemu w sekundach 134
5.5.4. Ćwiczenie 11c. Czas od uruchomienia systemu jako hh:mm:ss 135
6. Liczniki uniwersalne, sygnał PWM 137
6.1. Liczniki uniwersalne 138
6.1.1. Generowanie sygnału PWM 142
6.1.2. Zewnętrzne taktowanie liczników i łączenie kaskadowe 143
6.1.3. Pomiar parametrów sygnału PWM 144
6.2. Ćwiczenie 12. Liczniki uniwersalne 145
6.2.1. Wprowadzenie 145
6.2.2. Ćwiczenie 12a. Dioda sterowana licznikiem 145
6.2.3. Ćwiczenie 12b. Dwie diody sterowane licznikiem 147
6.2.4. Ćwiczenie 12c. Cztery diody sterowane licznikami 148
6.3. Ćwiczenie 13. Liczniki – Generowanie czterech przebiegów 149
6.3.1. Wprowadzenie 149
6.3.2. Ćwiczenie 13. Cztery diody sterowane różnymi częstotliwościami 149
6.4. Ćwiczenie 14. Generowanie i pomiar parametrów sygnału PWM 151
6.4.1. Wprowadzenie 151
6.4.2. Ćwiczenie 14a. Dwie diody o różnej jasności 151
6.4.3. Ćwiczenie 14b. Sterowanie jasnością diody 154
6.4.4. Ćwiczenie 14c. Obserwacje sygnału PWM 154
6.4.5. Ćwiczenie 14d. Pomiar parametrów sygnału PWM 155
6.5. Ćwiczenie 15. Zliczanie przyciśnięć z użyciem licznika 158
6.5.1. Wprowadzenie 158
6.5.2. Ćwiczenie 15. Zliczanie przyciśnięć 158
6.6. Ćwiczenie 16. Zliczanie przyciśnięć, eliminacja drgań styków 159
6.6.1. Wprowadzenie 159
6.6.2. Ćwiczenie 16. Eliminacja drgań styków przycisków 160
7. Układy czuwające Watchdog i rejestry chronione Backup Domain 163
7.1. Układy czuwające Watchdog 164
7.2. Zerowanie mikrokontrolera i rejestry chronione Backup Domain 167
7.3. Ćwiczenie 17. Niezależny układ czuwający i rejestry chronione 168
7.3.1. Wprowadzenie 168
7.3.2. Ćwiczenie 17a. Niezależny układ czuwający 168
7.3.3. Ćwiczenie 17b. Niezależny układ czuwający i rejestry chronione 170
8. Mechanizm DMA 173
8.1. Bezpośredni dostęp do pamięci – DMA 174
8.2. Ćwiczenie 18. Sterowanie podświetleniem LCD z wykorzystaniem PWM i DMA 177
8.2.1. Wprowadzenie 177
8.2.2. Ćwiczenie 18. Sterowanie podświetleniem LCD z wykorzystaniem PWM i DMA 177
9. Przetworniki A/C 183
9.1. Przetworniki A/C i układ monitorowania napięcia 184
9.2. Wewnętrzny czujnik temperatury 191
9.3. Ćwiczenie 19. Przetwornik A/C 192
9.3.1. Wprowadzenie 192
9.3.2. Ćwiczenie 19a. ADC – pomiar jednokrotny 192
9.3.3. Ćwiczenie 19b. ADC – pomiar ciągły 196
9.3.4. Ćwiczenie 19c. ADC i DMA – pomiar dwóch kanałów 196
9.3.5. Ćwiczenie 19d. ADC, DMA i układ monitorowania napięcia – pomiar dwóch kanałów i alarm przekroczenia wartości 199
9.3.6. Ćwiczenie 19e. ADC, DMA i układ monitorowania napięcia – pomiar dwóch kanałów wyzwalany licznikiem 200
9.4. Ćwiczenie 20. Dwa przetworniki A/C 202
9.4.1. Wprowadzenie 202
9.4.2. Ćwiczenie 20a. Dwa ADC – synchroniczny pomiar dwóch kanałów 202
9.4.3. Ćwiczenie 20b. Dwa ADC – dwa kanały i linijka diodowa 203
10. Układ USART 205
10.1. Interfejs RS-232 206
10.2. Program Terminal 211
10.3. Ćwiczenie 21. RS-232C 212
10.3.1. Wprowadzenie 212
10.3.2. Ćwiczenie 21. RS-232C – transmisja pojedynczych bajtów 212
10.4. Ćwiczenie 22. RS-232C i przerwania 216
10.4.1. Wprowadzenie 216
10.4.2. Ćwiczenie 22a. RS-232C – transmisja danych z wykorzystaniem przerwań. Odbiór danych z PC 216
10.4.3. Ćwiczenie 22b. RS-232C – dwukierunkowa transmisja danych z wykorzystaniem przerwań 218
10.5. Układ komunikacji bezprzewodowej Bluetooth – moduł KAmodBTM222 221
10.5.1. Konfiguracja przykładowego modułu Bluetooth USB po stronie PC 224
10.6. Ćwiczenie 23. RS-232C i KAmodBTM222 – transmisja danych 227
10.6.1. Wprowadzenie 227
10.6.2. Ćwiczenie 23. RS-232C i KAmodBTM222 227
10.7. Ćwiczenie 24. RS-232C – odczyt i zmiana konfiguracji KAmodBTM222 228
10.7.1. Wprowadzenie 228
10.7.2. Ćwiczenie 24. RS-232C – odczyt i zmiana konfiguracji modułu Bluetooth 228
11. Interfejs I2C 235
11.1. Interfejs I2C 236
11.2. Akcelerometr STM LIS35 – moduł KAmodMEMS2 239
11.3. Ćwiczenie 25. I2C – akcelerometr KAmodMEMS2 246
11.3.1. Wprowadzenie 246
11.3.2. Ćwiczenie 25a. Akcelerometr I2C 246
11.3.3. Ćwiczenie 25b. Akcelerometr I2C – wykrywanie uderzeń 249
12. Interfejs SPI 251
12.1. Interfejs SPI 252
12.2. Czujnik temperatury Microchip TC77 255
12.3. Ćwiczenie 26. SPI – pomiar temperatury układem Microchip TC77 256
12.3.1. Wprowadzenie 256
12.3.2. Ćwiczenie 26. SPI – pomiar temperatury 256
12.4. Akcelerometr STM LIS35 – moduł KAmodMEMS2 259
12.5. Ćwiczenie 27. SPI – akcelerometr KAmodMEMS2 262
12.5.1. Wprowadzenie 262
12.5.2. Ćwiczenie 27. Akcelerometr SPI 263
12.6. Barometr Freescale MPL115A1 – moduł KAmodBAR 263
12.7. Ćwiczenie 28. SPI – barometr KAmodBAR 270
12.7.1. Wprowadzenie 270
12.7.2. Ćwiczenie 28. Barometr SPI 270
13. Obsługa kart SD 273
13.1. Obsługa kart SD i SDHC z wykorzystaniem biblioteki FATFs 274
13.2. Ćwiczenie 29. Karta SD – odczyt z pliku 279
13.2.1. Wprowadzenie 279
13.2.2. Ćwiczenie 29. Odczyt danych z karty SD 279
13.3. Ćwiczenie 30. Karta SD – zapis do pliku – rejestrator danych 285
13.3.1. Wprowadzenie 285
13.3.2. Ćwiczenie 30. Zapis danych na kartę SD 285
14. Obsługa wyświetlaczy graficznych 293
14.1. Obsługa wyświetlacza z telefonu Nokia 3310 – sterownik PCD8544 294
14.2. Ćwiczenie 31. Monochromatyczny wyświetlacz graficzny KAmodLCD1 301
14.2.1. Wprowadzenie 301
14.2.2. Ćwiczenie 31a. Demonstracja możliwości wyświetlacza 302
14.2.3. Ćwiczenie 31b. Prosta animacja 305
14.3. Obsługa wyświetlacza z telefonu Nokia 6610 – sterownik PCF8833 307
14.4. Ćwiczenie 32. Kolorowy wyświetlacz graficzny KAmodTFT2 315
14.4.1. Wprowadzenie 315
14.4.2. Ćwiczenie 32a. Demonstracja możliwości wyświetlacza 315
14.4.3. Ćwiczenie 32b. Obroty obrazu 320
15. Cyfrowe przetwarzanie sygnałów 323
15.1. Przetwarzanie sygnałów w mikrokontrolerach STM32 z rdzeniem Cortex-M3 324
15.2. Ćwiczenie 33. Widmo amplitudowe sygnału 325
15.2.1. Wprowadzenie 325
15.2.2. Ćwiczenie 33a. Widmo amplitudowe sygnału w postaci próbek 326
15.2.3. Ćwiczenie 33b. Widmo amplitudowe sygnału w postaci graficznej 332
16. Oszczędzanie energii 335
16.1. Tryby oszczędzania energii 336
16.2. Ćwiczenie 34. Tryb uśpienia 339
16.2.1. Wprowadzenie 339
16.2.2. Ćwiczenie 34. Tryb uśpienia 339
Dodatki 343
Dodatek A. Schematy elektryczne zestawu ZL27ARM 344
Dodatek B. Lista funkcji wyprowadzeń dla obudowy 100-pinowej procesora STM32F103VB
Dodatek C. Schematy elektryczne modułu KAmodMEMS1 350
Dodatek D. Schematy elektryczne modułu KAmodKB4×4 350
Dodatek E. Schematy elektryczne modułu KAmodLED8 351
Dodatek F. Schematy elektryczne modułu KAmodBTM222 351
Dodatek G. Schematy elektryczne modułu KAmodMEMS2 352
Dodatek H. Schematy elektryczne modułu KAmodBAR-SPI 352
Dodatek I. Schematy elektryczne modułu KAmodLCD1 353
Dodatek J. Schematy elektryczne modułu KAmodTFT2 353
Dodatek K. Tabela kodów ASCII 354
Dodatek L. Tabela kodów znakowych sterownika LCD HD44870 356
Dodatek M. Schemat blokowy systemu taktującego zastosowanego w mikrokontrolerach STM32F1