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
|