Tytuł: | Mikrokontrolery STM32 w systemach sterowania i regulacji | Autor: | Maciej Szumski | ISBN: | 978-83-64702-12-9 | Ilość stron: | 438 | Data wydania: | 03/2018 | Oprawa: | Twarda | Format: | 16.5x23.5cm | Wydawnictwo: | BTC | Cena: | 111.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).
Spis treści:
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
Mikrokontrolery STM32 w systemach sterowania i regulacji --- Pozycja niedostępna.---
|