Tytuł: | Mikrokontrolery STM32 w systemach sterowania i regulacji | | Autor: | Maciej Szumski | | ISBN: | 978-83-64702-12-9 | | Ilość stron: | 438 | | Data wydania: | 06/2018 dodruk | | Oprawa: | Twarda | | Format: | 17.0x25.0cm | | Wydawnictwo: | BTC | |
| Cena: | 89.00zł | |
Rdzenie ARM Cortex-M są obecnie powszechnie stosowane przez producentów mikrokontrolerów.
Książka jest łagodnym wprowadzeniem do techniki mikrokontrolerów zbudowanych w oparciu o klasycznego przedstawiciela tej rodziny, czyli Cortex-M3. Rozpoczyna się od pojęć podstawowych, takich jak bit, bajt, reprezentacja liczb w komputerze.
Opisane są przykładowe projekty: obsługa wyświetlacza i klawiatury, transmisja szeregowa ModBus, przetwarzanie analogowo-cyfrowe ADC/DAC oraz regulatory PID i z lokowaniem biegunów.
Ostatni rozdział to projekt prostego systemu czasu rzeczywistego RTOS.W przykładach używane jest środowisko programistyczne µKeil (wersja bezpłatna ma ograniczenie do 32 kB kodu).
Rozdziały:
Oznaczenia 15 Wstęp 17 Zalety regulacji cyfrowej 17 Podstawowy układ regulacji 18 Płyty rozwojowe używane w książce 21 Nazewnictwo (terminologia) 23 Przedrostki dwójkowe i przedrostki SI 23
1. Historia architektury ARM 25 1.1. Acorn – początki 25 1.2. Narodziny procesorów ARM 25 1.3. Advanced RISC Machines Ltd 26 1.4. ARM i sprzedawcy mikrokontrolerów 27 1.5. Zalety procesorów Cortex-M 27 1.5.1. Niski pobór energii 27 1.5.2. Moc obliczeniowa 27 1.5.3. Efektywność energetyczna 28 1.5.4. Gęstość upakowania kodu 29 1.5.5. Przerwania 29 1.5.6. Łatwe w użyciu, zorientowane na język C 29 1.5.7. Skalowalność 29 1.5.8. Uruchamianie programów 29 1.6. CMSIS Cortex Microcontroller Software Interface Standard 29 1.6.1. Struktura CMSIS 30 1.6.2. CMSIS-Core 31 1.6.3. CMSIS-RTOS 31 1.6.4. CMSIS-DSP 31 1.6.5. CMSIS-Driver 31 1.6.6. CMSIS-SVD 31 1.6.7. CMSIS-DAP 32 1.6.8. CMSIS-Pack 32
2. Reprezentacja liczb całkowitych 33 2.1. Półprzewodniki 33 2.2. Bit, czyli najmniejsza jednostka informacji 39 2.2.1. Działania logiczne 39 2.3. Reprezentacja Danych 40 2.4. Liczby binarne, oktalne, dziesiętne i hexadecymalne 41 2.5. Liczby całkowite bez znaku 43 2.6. Liczby całkowite ze znakiem 44 2.6.1. Kod uzupełnień do jedności U1 44 2.6.2. Kod uzupełnień do dwóch U2 45 2.7. Dodawanie i odejmowanie liczb bez znaku, flaga Carry 46 2.8. Dodawanie i odejmowanie liczb ze znakiem, flaga Overflow 47 2.9. Jak kompilator tłumaczy instrukcję if (a < b) 49 2.10. Stringi (ciągi znaków) w pamięci 50 2.10.1. Unicode Transformation FormatUTF-8 50 2.10.2. Stringi 51
3. Jak działa procesor 53 3.1. Tłumaczenie kodu źródłowego C na kod maszynowy 54 3.2. Ładowanie programu maszynowego do pamięci 56 3.2.1. Architektura Harvard versus Von Neumann 56 3.2.2. Rozmieszczenie obszarów pamięci 59 3.3. Rejestry wewnętrzne procesora 63 3.4. Wykonywanie programu maszynowego 67
4. Zestaw uruchomieniowy z procesorem STM32F103VB 71 4.1. Wprowadzenie 71 4.2. Rodzina mikrokontrolerów STM32 71 4.3. Zestaw uruchomieniowy 73 4.4. Dokumentacja Cortex-M3 i STM32F103 74 4.5. Programator 75 4.6. Środowisko IDE Keil μVision 76 4.6.1. Zintegrowane środowisko programistyczne 76 4.6.2. Instalacja środowiska μVision 77 4.7. Cortex Microcontroller Software Interface CMSIS 77 4.8. Nasz pierwszy projekt: Projekt00 79 4.8.1. Opcje projektu 82 4.8.2. Symulacja komputerowa 90 4.9. Reset and Clock Control (RCC) 96 4.9.1. Reset 96 4.9.2. Taktowanie mikrokontrolera – sygnały zegarowe 96 4.10. Porty GPIO 98 4.10.1. Wejście: oporniki Pull Up i Pull Down 99 4.10.2. Wejście, przerzutnik Schmitta 100 4.10.3. Wyjście GPIO: komplementarne lub otwarty dren 101 4.10.4. Szybkość wyjścia GPIO 103 4.10.5. Jak dołączyć diodę LED do mikrokontrolera? 104 4.11. Projekt01 LED, migająca dioda 106 4.11.1. Tworzymy nowy projekt 106 4.11.2. Plik stm32f10x conf.h 106 4.11.3. Inicjalizacja RCC i GPIO 107 4.11.4. Z jakim parametrem należy wywołać Delay(), aby uzyskać 1 s? 109 4.11.5. Dołączamy zewnętrzną diodę LED 110 4.11.6. Oscyloskop: szybkość wyjścia GPIO 111
5. Zestaw instrukcji ARM ISA 113 5.1. Zestawy instrukcji ARM 113 5.2. Budowa procesora Cortex-M 115 5.3. Format instrukcji asemblerowej 116 5.4. Struktura programu asemblerowego 117 5.5. Dyrektywy asemblera 119
6. Instrukcje arytmetyczno-logiczne 123 6.1. Rejestr Flag 123 6.2. Modyfikowanie flag 125 6.3. Instrukcje przesunięcia i obrotu 126 6.4. Instrukcje arytmetyczne 128 6.4.1. Instrukcje dodawania i odejmowania 128 6.4.2. Instrukcje krótkiego dzielenia i mnożenia 129 6.4.3. Instrukcje długiego mnożenia 129 6.5. Instrukcje nasycenia 129 6.6. Dwuargumentowe działania logiczne 130 6.6.1. Maski bitowe 131 6.6.2. Definiowanie masek za pomocą dyrektywy EQU 131 6.6.3. Operatory logiczne w C 132 6.7. Kolejność bitów i bajtów 132 6.8. Zmiana typu liczby całkowitej 133 6.9. Instrukcje porównań 134 6.10. Przesyłanie danych pomiędzy rejestrami 135 6.11. Przepisz określony fragment rejestru 136
7. Instrukcje przesyłania danych 137 7.1. Wpisanie danej do rejestru 137 7.1.1. Instrukcje przesyłania danych MOV i MVN 138 7.1.2. Pseudoinstrukcje LDR i ADR 138 7.2. Big Endian oraz Little Endian 140 7.3. Dostęp do danych w pamięci 141 7.4. Adresowanie pamięci 141 7.4.1. Pre-index, Post-index oraz Pre-index with Update 141 7.4.2. Instrukcje Load i Store 142 7.5. Load i Store z listą rejestrów 143
8. Instrukcje rozgałęzień Branch 145 8.1. Testowanie warunków 145 8.2. Instrukcje rozgałęzień 147 8.3. Warunkowe wykonanie instrukcji 148 8.4. Instrukcja kompilatora If-then 150 8.4.1. Złożone wyrażenie logiczne z OR 150 8.4.2. Złożone wyrażenie logiczne z AND 151 8.5. Instrukcja kompilatora If-then-else 151 8.6. Instrukcje pętli 152 8.6.1. Pętla For 152 8.6.2. Pętla While 153 8.6.3. Pętla Do while 154 8.7. Instrukcja kompilatora Switch 154
9. Wyświetlacz LCD 1602 157 9.1. Wymiana danych z wyświetlaczem (4 bity danych) 159 9.2. Instrukcje 160 9.3. Projekt02 LCD 163
10. Programowanie strukturalne 175 10.1. Podprogramy 176 10.2. Stos 177 10.3. Ochrona rejestrów w podprogramie 178 10.4. Przekazywanie parametrów przez rejestry 179 10.5. Projekt03 asm 180 10.5.1. Bit parzystości – przekazywanie wartości 180 10.5.2. Wyszukanie największej liczby – przekazywanie wskaźnika 181
11. Kontroler przerwań NVIC, SysTick i RTC 183 11.1. Przerwania 183 11.2. Tryby i stany pracy procesora 184 11.3. Program obsługi przerwania ISR 185 11.4. Układ zarządzania przerwaniami NVIC 187 11.4.1. Priorytety przerwań 189 11.4.2. Funkcje CMSIS do obsługi NVIC 190 11.5. Zegar systemowy SysTick 191 11.6. Projekt04 SysTick 192 11.7. Przerwania zewnętrzne 194 11.8. Klawiatura matrycowa 4 ×4 196 11.9. Projekt05 keypad 199 11.10. Projekt06 scanf 202 11.11. Zegar czasu rzeczywistego RTC 204 11.11.1. Czas UNIXowy 204 11.11.2. Konfiguracja zegara RTC 205 11.12. Projekt07 RTC 206
12. Liczniki i sterowanie PWM 207 12.1. Budowa licznika i tryby zliczania 207 12.2. Odmierzanie odcinków czasu 209 12.3. Projekt08 toggleLED 211 12.4. Pomiar długości impulsu 214 12.5. Projekt09 TIM2switch, eliminacja drgań styków 216 12.6. Projekt10 RadioControl 220 12.7. Projekt11 6WheelDrive 226 12.8. Projekt12 DistanceSensor, dalmierz ultradźwiękowy 231
13. Płyta STM3210E-EVAL, silniki krokowe 235 13.1. Katalog ARM2CortexM3-STM3210E-EVAL 236 13.2. Projekt01 LED 237 13.3. Projekt14 TFTLCD 238 13.3.1. Kolory 239 13.3.2. Tekst 240 13.3.3. Grafika 241 13.3.4. Zdjęcia i obrazki 241 13.4. 4-Pin Trace ETM 241 13.4.1. Opóźnienie programowe 243 13.5. Silnik krokowy 245 13.5.1. Silnik o zmiennej reluktancji VR – variable reluctance 245 13.5.2. Silnik z magnesem trwałym PM – permanent magnet 246 13.5.3. Silnik hybrydowy HB – hybrid motor 246 13.5.4. Silniki krokowe unipolarne i bipolarne 248 13.5.5. Sterowanie falowe (jednofazowe) 249 13.5.6. Sterowanie pełnokrokowe (dwufazowe) 249 13.5.7. Sterowanie półkrokowe 249 13.6. Projekt15 StepperMotor 250 13.6.1. Płyta ZL27ARM 252 13.6.2. Płyta STM32F10E-EVAL 253 13.7. Indukcyjność 254 13.7.1. Stała czasowa obwodu RL 254 13.7.2. Sterowanie L/nR 257 13.7.3. Sterowanie z kluczowaniem prądu 258 13.7.4. Sterowanie bipolarne silników krokowych 260 13.7.5. Wolne i szybkie rozładowanie energii uzwojenia 260 13.8. Projekt16 StepperMotor 261
14. Liczby wymierne stałopozycyjne 265 14.1. Binarna arytmetyka stałopozycyjna 266 14.1.1. Liczby stałopozycyjne bez znaku 266 14.1.2. Liczby stałopozycyjne ze znakiem 267 14.1.3. Konwersja liczby wymiernej do postaci stałopozycyjnej 267 14.1.4. Kompromis pomiędzy rozdzielczością a zakresem 268 14.1.5. Arytmetyka stałopozycyjna z nasyceniem 268 14.2. Działania niezależne od formatu 269 14.2.1. Negacja i moduł liczby 269 14.2.2. Dodawanie i odejmowanie 270 14.3. Działania zależne od formatu (Q15.16) 271 14.3.1. Mnożenie stałopozycyjne 272 14.3.2. Dzielenie stałopozycyjne Q15.16 274 14.3.3. Dzielenie liczb 64-bitowych ze znakiem 276 14.3.4. Operacje pomocnicze na liczbach 64-bitowych 278 14.3.5. Dzielenie liczb całkowitych dodatnich long division 279 14.4. Projekt17 FixedPoint sin 282 14.5. Projekt18 cube3D 284 14.5.1. Obroty na płaszczyźnie 284 14.5.2. Macierze obrotu 285 14.5.3. Złożenie obrotów na płaszczyźnie 286 14.5.4. Obroty w przestrzeni R3 287 14.5.5. Złożenie obrotów w przestrzeni R3 288 14.5.6. Projekt18 cube3D 289 14.6. Projekt19 cube3D FixedPoint 290
15. Bezpośredni dostęp do pamięci DMA 291 15.1. DMA Bus Matrix 292 15.2. Kanały DMA 293 15.3. Programowanie DMA 296 15.4. Projekt20 DMA M2M 297
16. Przetwornik analogowo-cyfrowy ADC 299 16.1. Przetwornik ADC z sukcesywną aproksymacją 299 16.1.1. Próbkowanie 300 16.1.2. Kwantyzacja 302 16.1.3. Kodowanie 304 16.2. Kanały wejściowe ADC 304 16.3. Wyzwalanie ADC i okres próbkowania 305 16.4. Autokalibracja 305 16.5. Przetwarzanie ADC z wykorzystaniem przerwań SysTick 306 16.5.1. Projekt21 ADC1 306 16.6. Pętla prądowa 4–20 mA 308 16.6.1. Źródło napięciowe DC: stałe napięcie na zaciskach 308 16.6.2. Źródło prądowe DC: stały prąd w obwodzie 309 16.6.3. Parametryzowane źródło prądowe 309 16.6.4. Układ pomiarowy pętli prądowej 310 16.7. Projekt22 4–20mA przemysłowy pomiar temperatury 312
17. Przetwornik cyfrowo-analogowy DAC 315 17.1. Budowa przetwornika DAC 315 17.2. DAC w procesorach STM32F103 320 17.3. Wzmacniacz wyjściowy 321 17.4. Projekt23 DAC sin 322
18. Transmisja szeregowa 325 18.1. USART Universal Synchronous/Asynchronous Receiver-Transmitter 326 18.1.1. Ramka 327 18.1.2. Prędkość bodowa 328 18.1.3. Warstwa fizyczna 328 18.2. Warstwa łącza danych 329 18.2.1. INTEL HEX Format 329 18.2.2. Modbus 330 18.2.3. Master (klient) – slave (serwer danych) 331 18.2.4. CRC w Modbus RTU 331 18.3. Projekt24 1 Modbus Master 333 18.4. Projekt25 Modbus slave 336 18.5. Projekt24 2 Modbus Master 340 18.6. I2C Inter-Integrated Circuit 342 18.6.1. Czujnik temperatury STLM75 344 18.6.2. Projekt26 I2C 346 18.7. SPI Serial Peripheral Interface 347 18.7.1. Projekt27 SPI 348
19. Obiekt regulacji 351 19.1. Obiekt oscylacyjny 351 19.2. Obiekt wieloinercyjny z opóźnieniem 352 19.3. Projekt28 obiekt 353
20. Cyfrowy regulator PID 357 20.1. Podstawowy schemat układu regulacji 357 20.1.1. Transmitancja operatorowa regulatora PID 358 20.2. Cyfrowa realizacja algorytmu PI 358 20.2.1. Składowa proporcjonalna algorytmu 359 20.2.2. Składowa całkowa algorytmu 359 20.2.3. Czas zdwojenia TI 361 20.2.4. Projekt29 PI 361 20.3. Cyfrowa realizacja algorytmu PID 362 20.3.1. Czas wyprzedzenia TD 363 20.3.2. Składowa różniczkowa algorytmu 363 20.3.3. Projekt30 PID 367 20.4. Dobór nastaw regulatora PID 368
21. Lokowanie biegunów 371 21.1. Transmitancja dyskretna i transformata Z (Laurenta) 371 21.1.1. Operator różnicy wstecznej Δ 374 21.1.2. Bieguny transmitancji (poles) 375 21.1.3. Bieguny zespolone sprzężone 376 21.1.4. Twierdzenie o wartości końcowej 378 21.2. Prosty projekt regulatora 379 21.2.1. Wzory Vi´ete’a 381 21.2.2. Projekt31 1 pole placement 384 21.3. Zwiększenie odporności na zakłócenia 386 21.3.1. Zakłócenie stałe odniesione do wejścia obiektu 386 21.3.2. Szum pomiarowy 388 21.3.3. Projekt31 2 pole placement 393 21.3.4. Projekt31 3 pole placement, obiekt oscylacyjny 393
22. RTOS Real Time Operating Sysytem 397 22.1. Podwójny wskaźnik stosu: MSP i PSP 398 22.2. Projekt32 Multitasking 400 22.2.1. Inicjalizacja systemu RTOS 404 22.2.2. Obsługa przerwania systemowego SysTick 408 22.2.3. Uruchomienie systemu RTOS 410
A. Schemat zestawu uruchomieniowego ZL27ARM 413 B. Znaki ASCII7 i operatory języka C 417 C. Karty katalogowe silników krokowych 421 D. Schemat płyty SMSboard 425 E. Schemat płyty KP board 427 F. Schemat płyty RS232/485 429 Bibliografia 431 Skorowidz 435
|