Personal tools
You are here: Home Book (Książka) spis treści
Document Actions

spis treści

spis treści

Wstęp             9

1.      Informacje ogólne o procesorach rodziny AT91SAM7S            11

1.1.   Typy procesorów SAM7S                11

1.2.   Architektura procesorów SAM7S   11

1.3.   Źródła zegara taktującego 13

1.4.   Funkcje wyprowadzeń zewnętrznych             14

1.5.   Sygnały żądania przerwania              14

1.6.   Mapa pamięci       15

1.7.   Typowe struktury rejestrów urządzeń peryferyjnych  16

1.8.   Ładowanie programu         17

2.      Rdzeń ARM7TDMI            19

2.1.   Architektura rdzenia           19

2.2.   Tryby ARM i Thumb         21

2.3.   Tryby operacyjne               22

2.4.   Dostępne rejestry w zależności od trybu pracy            23

2.4.1.                Rejestry stanu      23

2.4.2.                Rejestry w trybie ARM      24

2.4.3.                Rejestry w trybie Thumb   26

2.5.   Omówienie listy instrukcji w trybie ARM      27

2.5.1.                Wykonywanie warunkowe instrukcji              29

2.5.2.                Rozkazy arytmetyczne, logiczne, MOV/MVN               30

2.5.3.                Przesuwnik bitowy              31

2.5.4.                Modyfikator uaktualniania rejestru CPSR      33

2.5.5.                Rozkazy mnożenia               34

2.5.6.                Rozkazy rozgałęzień            35

2.5.7.                Rozkazy przesłań z lub do pamięci   37

2.5.8.                Pseudoinstrukcja LDR Rd,=              41

2.5.9.                Rozkazy przesłań wielu rejestrów     42

2.5.10.              Rozkaz SWAP/SWAPB     45

2.5.11.              Rozkazy MSR/MRS            45

2.5.12.              Rozkaz SWI          46

2.5.13.              Rozkazy opcjonalnych koprocesorów            47

2.6.   Informacje o liście instrukcji w trybie Thumb                47

3.      Plik startowy        49

3.1.   Struktura pliku startowego                49

3.2.   Mapa pamięci aplikacji       50

3.3.   Definicje stałych symbolicznych     51

3.4.   Inicjalizacja wektorów przerwań i wskaźników stosów                52

3.5.   Przekazanie sterowania do dalszej części programu     55

3.6.   Inicjalizacje podstawowych urządzeń peryferyjnych   56

3.6.1.                Maskowanie przerwań w kontrolerze AIC      57

3.6.2.                Konfiguracja wyprowadzenia NRST               57

3.6.3.                Kontroler pamięci MC        57

3.6.4.                Deaktywacja układu nadzorującego WDT     58

3.6.5.                Konfiguracja i wybór zegara             58

3.6.6.                Komenda REMAP              59

3.7.   Szkielet aplikacji   61

3.8.   Ładowanie programu         61

3.8.1.                Wariant SAMBA_FLASH                61

3.8.2.                Wariant JTAG_RAM         62

4.      Wybrane techniki organizacji plików nagłówkowych w języku C             63

4.1.   Pliki nagłówkowe 63

4.1.1.                Zastosowania i zawartość plików nagłówkowych        63

4.1.2.                Struktura pliku nagłówkowego         64

4.1.3.                Organizacja hierarchii plików nagłówkowych               65

4.2.   Nazewnictwo rejestrów i bitów urządzeń peryferyjnych oraz używana notacja     65

4.2.1.                Rejestry urządzeń peryferyjnych     65

4.2.2.                Bity rejestrów urządzeń peryferyjnych           67

4.3.   Makra    69

4.4.   Funkcje inline       69

5.      Podstawowe urządzenia peryferyjne               71

5.1.   Kontroler resetu RSTC       71

5.1.1.                Interfejs użytkownika         72

5.1.2.                Przykład funkcji konfigurującej kontroler RSTC           73

5.2.   Kontroler pamięci MC        74

5.2.1.                Przykład funkcji konfigurującej kontroler MC               75

5.2.2.                Przykład komendy REMAP               75

5.3.   Blok zegarów taktujących oraz kontroler PMC             76

5.3.1.                Zegar SLOWCLK                77

5.3.2.                Główny oscylator MAINCLK           77

5.3.3.                Blok PLL               77

5.3.4.                Rozprowadzanie sygałów zegarów taktujących, blok PMC        78

5.3.5.                Interfejs użytkownika         79

5.3.6.                Przykład funkcji konfigurującej zegar taktujący            83

5.3.7.                Przykład funkcji załączającej i wyłączającej zegar taktujący dla urządzeń peryferyjnych      83

5.4.   Obwód nadzorujący WDT                84

5.4.1.                Interfejs użytkownika         85

5.4.2.                Przykład funkcji konfigurującej obwód WDT               87

5.5.   Inicjalizacja podstawowych urządzeń peryferyjnych w języku C              87

5.6.   Szkielet aplikacji   88

6.      Organizacja komponentów programowych    91

6.1.   Dekompozycja systemu     91

6.2.   Sterowniki urządzeń peryferyjnych 91

6.3.   Podział sterowników           94

6.3.1.                Sterowniki linii wejściowych i wyjściowych GPIO ogólnego przeznaczenia           94

6.3.2.                Sterowniki timerów i timerów PWM                95

6.3.3.                Sterowniki urządzeń komunikacyjnych           95

6.4.   Sterowniki protokołów       97

6.5.   Komponenty programowe 97

6.6.   Zestawienie sterowników  98

7.      Kontroler wyprowadzeń PIO            101

7.1.   Funkcje wyprowadzeń zewnętrznych             101

7.2.   Wybrane parametry elektryczne wyprowadzeń zewnętrznych  102

7.3.   Struktura bloku PIO            102

7.3.1.                Wybór trybu GPIO             104

7.3.2.                Wybór urządzenia peryferyjnego A lub B     104

7.3.3.                Konfiguracja wejścia lub wyjścia w trybie GPIO          104

7.3.4.                Zapis i odczyt stanu wyprowadzenia              105

7.3.5.                Konfiguracja wyjścia typu multi-drive            105

7.3.6.                Rezystor podciągający       105

7.3.7.                Filtr przeciwzakłóceniowy  105

7.3.8.                Żądanie przerwania             106

7.4.   Interfejs użytkownika         106

7.5.   Przykład sterowników kontrolera PIO             107

7.5.1.                Funkcje konfigurujące i obsługujące tryb GPIO-wejście             108

7.5.2.                Funkcje konfigurujące i obsługujące tryb GPIO-wyjście            108

7.5.3.                Funkcje konfigurujące wyprowadzenia do trybu urządzenia peryferyjnego           109

7.5.4.                Zaawansowana konfiguracja wyprowadzeń  110

7.5.5.                Funkcje konfigurujące żądania przerwania     111

7.6.   Przykład sterownika diod LED          111

7.7.   Przykład funkcji opóźniającej            112

7.8.   Przykład sterownika obsługującego mikrowyłączniki  113

7.9.   Przykład zastosowania sterowników LED i SW            114

7.10. Przykład sterownika klawiatury w trybie odpytywania               115

7.10.1.              Definicje stałych symbolicznych     116

7.10.2.              Funkcje składowe               116

7.10.3.              Przykład aplikacji wykorzystującej sterownik KB         118

7.11. Przykład sterownika dla wyświetlacza HD44780           119

7.11.1.              Zapis wartości do wyświetlacza       119

7.11.2.              Definicje stałych symbolicznych dla komend wyświetlacza       121

7.11.3.              Funkcje składowe sterownika LCD  122

7.11.4.              Przykład użycia sterownika LCD      124

8.      Sterownik hierarchicznego menu     125

8.1.   Założenia              125

8.2.   Organizacja plików              127

8.3.   Organizacja danych            128

8.3.1.                Definicje struktur danych  129

8.3.2.                Umieszczenie struktur danych w pamięci FLASH        131

8.4.   Treść funkcji stowarzyszonych z pozycjami menu       131

8.5.   Przykład sterownika hierarchicznego menu   132

8.6.   Przykład użycia sterownika MNU    136

9.      System przerwań 137

9.1.   Pojęcia podstawowe           137

9.2.   Typowe zastosowania systemu przerwań      137

9.3.   Struktura systemu przerwań w procesorach SAM7S   139

9.4.   Obsługa żądań przerwania przez rdzeń ARM7TDMI   139

9.4.1.                Szczegóły przyjęcia przerwania IRQ                140

9.4.2.                Szczegóły przyjęcia przerwania FIQ 141

9.5.   Sygnały żądań przerwania od urządzeń peryferyjnych               141

9.5.1.                Numerowanie urządzeń peryferyjnych           141

9.5.2.                Grupa żądań przerwania pochodząca od bloku systemowego   142

9.5.3.                Sygnały żądań IRQ0, IRQ1 oraz FIQ               142

9.6.   Struktura wewnętrzna kontrolera przerwań AIC           143

9.6.1.                Obwód konfiguracji żądania przerwania         143

9.6.2.                Obwód wektoryzacji           144

9.6.3.                Fałszywe przerwanie           146

9.7.   Interfejs użytkownika         146

9.8.   Sterownik kontrolera przerwań AIC 149

9.8.1.                Funkcje składowe               149

9.8.2.                Szkielet procedury obsługi przerwania IRQ bez zagnieżdżeń     151

9.8.3.                Szkielet procedury obsługi przerwania FIQ    152

9.9.   Przykłady konfiguracji oraz procedur obsługi przerwania IRQ   152

9.9.1.                Konfiguracja oraz procedura obsługi przerwania z kontrolera wyprowadzeń PIO 152

9.9.2.                Konfiguracja oraz procedury obsługi przerwań zewnętrznych IRQ0, IRQ1             154

9.10. Zagnieżdżanie przerwań IRQ            155

9.10.1.              Przykładowa realizacja makr obsługujących zagnieżdźanie        157

9.10.2.              Przykład aplikacji z zagnieżdżonymi przerwaniami        158

9.10.3.              Komentarze i uwagi            159

9.11. Przykłady konfiguracji oraz procedur obsługi przerwania FIQ   160

9.11.1.              Konfiguracja oraz procedura obsługi przerwania z kontrolera wyprowadzeń PIO 161

9.11.2.              Konfiguracja oraz procedura obsługi przerwania zewnętrznego FIQ        162

9.12. Opóźnienia w przyjęciu przerwania  162

9.13. Alternatywna postać wywołań procedur obsługi przerwań       163

9.14. Wybrane informacje o wyjątku SWI               165

9.15. Wybrane informacje o wyjątku UND              166

9.16. Wybrane informacje o wyjątku ABORT         166

10.    Kontroler PDC     167

10.1. Informacje ogólne               167

10.2. Interfejs użytkownika         169

10.3. Przykład sterownika kanałów DMA                171

10.3.1.              Kanał nadawczy  171

10.3.2.              Kanał odbiorczy  171

11.    Port DBGU            173

11.1. Informacje ogólne               173

11.2. Interfejs użytkownika         174

11.3. Przykład sterownika portu DBGU w trybie odpytywania            177

11.3.1.              Funkcje składowe               178

11.3.2.              Przykład aplikacji wykorzystującej sterownik DBGUPOL           179

11.3.3.              Implementacja wejścia/wyjścia dla funkcji scanf/printf               181

11.4. Przykład sterownika z użyciem kontrolera PDC i systemu przerwań         182

11.4.1.              Funkcje składowe               183

11.4.2.              Interpretacja poleceń          186

11.4.3.              Makro Trace         188

11.4.4.              Przykład aplikacji wykorzystującej sterownik DBGU   188

12.    Timer PIT              191

12.1. Informacje ogólne               191

12.2. Interfejs użytkownika         192

12.3. Przykład sterownika timera PIT        193

12.3.1.              Funkcje składowe               193

12.3.2.              Przykład aplikacji wykorzystującej sterownik PIT        196

12.4. Przykład sterownika obsługującego klawiaturę w przerwaniu zegarowym              197

12.4.1.              Funkcje składowe               198

12.4.2.              Przykład aplikacji wykorzystującej sterownik KBPIT   199

12.5. Programowe sprawdzanie przekroczenia czasu oczekiwania      201

12.5.1.              Funkcje składowe               201

12.5.2.              Przykłady aplikacji wykorzystującej komponent PTO  203

13.    Timer RTT            205

13.1. Informacje ogólne               205

13.2. Interfejs użytkownika         206

13.3. Przykład sterownika timera RTT       207

13.3.1.              Funkcje składowe               207

13.3.2.              Przykład aplikacji wykorzystującej sterownik RTT       209

13.4. Organizacja aplikacji z użyciem funkcji typu callback  210

13.4.1.              Koncepcja wywołań callback           210

13.4.2.              Przykładowa realizacja        211

13.4.3.              Wybrane aspekty związane z projektowaniem funkcji callback 212

14.    Timery PWM       213

14.1. Informacje ogólne               213

14.1.1.              Obwód dzielników sygnałów taktujących      214

14.1.2.              Obwód kanałów PWM       215

14.1.3.              Konfiguracja i załączenie kanału, zmiana nastaw, wyłączenie kanału       216

14.2. Interfejs użytkownika         217

14.3. Przykłady obliczania nastaw PWM 220

14.4. Przykład sterownika timera PWM    221

14.4.1.              Funkcje składowe               221

14.4.2.              Przykład aplikacji wykorzystującej sterownik PWM    223

14.5. Przykład sterownika timera PWM do zgłaszania okresowych żądań przerwania    224

14.5.1.              Funkcje składowe               224

14.5.2.              Przykład aplikacji wykorzystującej sterownik PWMTMR          226

15.    Przetwornik ADC 227

15.1. Informacje ogólne               227

15.2. Interfejs użytkownika         229

15.3. Przykład sterownika przetwornika ADC w trybie odpytywania 232

15.3.1.              Funkcje składowe               232

15.3.2.              Przykład aplikacji wykorzystującej sterownik ADPOL 234

15.4. Przykład sterownika przetwornika ADC z użyciem kanału DMA              235

15.4.1.              Funkcje składowe               236

15.4.2.              Przykład aplikacji wykorzystującej sterownik ADDMA              238

15.5. Przykład sterownika timera TC2 do wyzwalania przetwornika ADC         239

15.5.1.              Stała częstotliwość próbkowania     239

15.5.2.              Funkcje składowe               239

15.6. Przykład sterownika przetwornika AD wyzwalanego timerem TC2           241

15.6.1.              Funkcje składowe               241

15.6.2.              Przykład aplikacji sterującej używającej sterownika ADTC2DMA           242

16.    Porty szeregowe USART   245

16.1. Informacje ogólne               245

16.2. Zegar taktujący transmisję                246

16.2.1.              Prędkość transmisji w trybie asynchronicznym            247

16.2.2.              Ułamkowy podzielnik zegara w procesorach SAM7S128/S256/S512        247

16.2.3.              Prędkość transmisji w trybie synchronicznym              247

16.2.4.              Prędkość transmisji w trybie ISO7816             248

16.3. Podstawowy tryb pracy portów USART       249

16.3.1.              Tryb asynchroniczny         249

16.3.2.              Tryb synchroniczny           250

16.3.3.              Dodatkowe przerwy pomiędzy wysyłanymi znakami   251

16.3.4.              Timeout odbiornika            251

16.3.5.              Sygnał BREAK    252

16.3.6.              Tryb multidrop     253

16.4. Pozostałe tryby pracy portów USART oraz specyficzne konfiguracje trybów       253

16.4.1.              Tryb sprzętowej kontroli przepływu danych 253

16.4.2.              Tryb modem         254

16.4.3.              Tryb RS485           255

16.4.4.              Tryb IrDA             255

16.4.5.              Tryb ISO7816       256

16.4.6.              Tryby diagnostyczne         257

16.5. Interfejs użytkownika         257

16.6. Przykład sterownika portu USART z pojedynczym buforowaniem za pomocą kanału DMA              264

16.6.1.              Funkcje składowe               264

16.6.2.              Przykład aplikacji wykorzystującej sterownik U0DMA               268

16.7. Przykład sterownika protokołu komunikacji pakietowej              271

16.7.1.              Idea komunikacji pakietowej             271

16.7.2.              Analiza struktury i działania sterownika         272

16.7.3.              Funkcje składowe sterownika portu USART 274

16.7.4.              Funkcja interpretująca rozkazy         278

16.7.5.              Przykład aplikacji wykorzystującej sterownik U0PKT  279

Dodatek A. Skrócone informacje o pozostałych urządzeniach peryferyjnych procesorów rodziny SAM7S             283

A.1.  Układy czasowo-licznikowe (timery) TC         283

A.2.  Port SPI 284

A.3.  Port TWI               284

A.4.  Port SSC                285

A.5.  Port USB-UDP     285

A.6.  Programowanie pamięci FLASH       286

A.7.  Interfejsy JTAG i ICE         286

A.8.  Obwód BOD         286

A.9.  Obwód VREG       286

Dodatek B. Przykład środowiska programistycznego dla procesorów z rdzeniem ARM7TDMI  287

B.1.   Instalacja i konfiguracja środowiska               287

B.2.   Tworzenie nowego projektu             289

B.3.   Organizacja struktury plików projektu            290

B.4.   Konfiguracja kluczowych opcji projektu        293

B.5.   Utworzenie plików wynikowych      297

Dodatek C. Schemat blokowy procesorów rodziny SAM7S oraz przykład zestawu uruchomieniowego    299

Literatura        301


Powered by Plone CMS, the Open Source Content Management System

This site conforms to the following standards: