Suchen und Finden
Service
ARM Cortex-M3 Mikrocontroller - Einstieg und Praxis
Ralf Jesse
Verlag mitp Verlags GmbH & Co. KG, 2014
ISBN 9783826696015 , 576 Seiten
Format PDF, ePUB, OL
Kopierschutz frei
Cover
1
Inhaltsverzeichnis
5
Einleitung
15
Teil I: Grundlagen
25
Orientierung
27
1.1 Kommerzielle IDEs
27
1.1.1 Keil QVision
28
1.1.2 IAR Workbench
28
1.1.3 Sourcery Codebench
28
1.1.4 Atollic TrueSTUDIO
29
1.1.5 CrossWorks for ARM
29
1.2 Herstellergebundene IDEs
30
1.2.1 ATMEL Studio 6
30
1.2.2 Texas Instruments StellarisWare
30
1.2.3 STMicroelectronics STVD
31
1.3 Freie IDEs
31
1.3.1 CooCox CoIDE
31
1.3.2 NetBeans for C Developers
31
1.3.3 Code::Blocks
32
1.3.4 emIDE
32
1.3.5 Eclipse für C/C++-Entwickler
32
1.4 Vorbereitende Arbeiten
33
1.4.1 Hardware
34
1.4.2 Software
37
ARM und CMSIS
53
2.1 Einige Hintergrundinformationen
53
2.1.1 Die Firma ARM Holdings PLC
53
2.1.2 Das Geschäftsmodell
53
2.2 CMSIS
54
2.2.1 Implementierungen
54
2.3 Erzeugung der Bibliotheken
56
2.3.1 libboard: Die Bibliothek für das Entwicklungsboard
57
2.3.2 libchip: Die Bibliothek für den Mikrocontroller-Chip
62
2.4 Weitere Software installieren
64
2.4.1 SAM-BA
64
2.4.2 SEGGER J-Link GDB Server via JTAG
67
Das erste Eclipse-Projekt
71
3.1 Erstellen einer Projektschablone
71
3.1.1 Workspace einrichten
72
3.1.2 Anlegen eines neuen Projekts
73
3.1.3 Projektspezifische Einstellungen
75
3.1.4 C/C++ Build: Settings
78
3.2 Weitere erforderliche Dateien
94
3.2.1 board_cstartup_gnu.c und syscalls.c
94
3.2.2 Linkerscriptdateien
96
3.3 Konfiguration des Debuggers
104
3.4 Fertigstellen des Templates
108
3.4.1 Anwendung der Erweiterung
109
Hello World!
111
4.1 Grundlegende Hinweise
111
4.2 Erstellen des Projekts 04_01_Blinky
112
4.2.1 Importieren der Schablone
114
4.2.2 Der Sourcecode von Blinky
116
4.3 Blinky im Debugger ausführen
126
4.4 Debugging light
132
4.4.1 Was Sie benötigen
132
4.4.2 Konfiguration der Schnittstelle
133
4.4.3 Programm laden und ausführen
133
4.4.4 Vorteile und Nachteile dieser Methode
134
Teil II: Einfache Grundlagen der Elektronik
137
Der ATMEL SAM3S4B
139
5.1 Die ATMEL-SAM3S-Familie
140
5.1.1 Übersicht
140
5.2 Das Datenblatt DOC 6500
141
5.2.1 Der Aufbau von DOC 6500
142
5.2.2 Mikrocontroller anderer Hersteller
144
5.3 Elektrische Daten des SAM3S4
145
5.3.1 Minimum- und Maximumwerte
146
5.3.2 Elektrische Versorgungsspannungen
147
5.3.3 Gleichstromwerte
149
5.4 System Controller
152
5.5 CHIP_ID
153
5.5.1 Das Projekt 05_01_CHIPID
154
5.5.2 Erläuterungen
158
5.6 Weiterführende Literatur
162
Elektronik
165
6.1 Digitale Ausgänge
165
6.1.1 Ports A, B und C im Reset-Zustand
166
6.2 Schalten kleiner Ströme
174
6.2.1 Current Sourcing
174
6.2.2 Current Sinking
176
6.2.3 Dimensionierung bei Current Sourcing und Current Sinking
177
6.2.4 Vor- und Nachteile beider Betriebsarten
180
6.3 Schalten größerer Ströme
181
6.3.1 Bipolare Transistoren
181
6.3.2 Feldeffekt-Transistoren (FETs)
190
6.3.3 Schalten mit Optokopplern
191
6.3.4 Schalten von Leistungstransistoren
192
6.3.5 Schalten induktiver Lasten (Relais, Elektromagnete, Motoren)
192
6.4 Digitale Eingänge
194
6.4.1 Grundlegende Betrachtungen
194
6.4.2 Einfachste Form der Beschaltung
194
6.4.3 Bessere Form der Beschaltung
195
6.4.4 Erfassen größerer Spannungen I
196
6.4.5 Erfassen größerer Spannungen II
198
6.5 Allgemeine Anmerkungen
198
Anwendungen
199
7.1 LC-Displays
199
7.1.1 Die Hardware
200
7.1.2 Projekt 07_01_LCD
202
7.2 7-Segment-Anzeigen
223
7.2.1 Kein Datenblatt verfügbar?
225
7.2.2 Eine Möglichkeit der Ansteuerung
226
Teil III: Basiskomponenten
237
NVIC, PMC, Clock Generator und SUPC
239
8.1 Allgemeines zu Interrupts
239
8.1.1 Asynchrone Ereignisse
240
8.1.2 Der NVIC – Nested Vector Interrupt Controller
240
8.1.3 Zuordnung der Interrupt-Quellen
244
8.1.4 Tail Chaining
246
8.1.5 CMSIS-Funktionen für den NVIC
247
8.1.6 (Kein) Beispiel
249
8.1.7 Software-Interrupts
251
8.1.8 Tipps und Empfehlungen
252
8.2 Der Clock Generator / Taktgenerator
252
8.2.1 Funktionen des Clock Generators
252
8.3 Der PMC – Power Management Controller
256
8.3.1 Aufgaben des PMC
257
8.3.2 Die Taktsignale des PMC
257
8.3.3 Weitere Informationen zum PMC
259
8.3.4 Ausgewählte Register des PMC
260
8.4 Der SUPC – Supply Controller
264
Parallel Input/Output Controller
265
9.1 Port-Register und -Betriebsarten
265
9.1.1 PIOA, PIOB und PIOC
266
9.1.2 Die Register von PIOA, PIOB und PIOC
269
9.2 Input-Ports in der Praxis
289
9.2.1 Das Projekt 09_01_INPUT_SAMPLE
290
9.2.2 Das Ergebnis
296
Timer und Counter, Teil 1
299
10.1 Real-time Timer RTT
300
10.1.1 Projekt 10_01_RTT
300
10.1.2 Die Register des RTT
313
10.2 RTC – Die Echtzeituhr
314
10.2.1 Das Projekt 10_02_RTC
315
10.2.2 Projekt 10_02_RTC_Advanced
320
10.2.3 Die Register der RTC
339
10.3 Der Watchdog-Timer WDT
344
10.3.1 Projekt 10_03_WDT
345
10.3.2 Register des WDT
352
10.4 Der System-Timer SysTick
353
10.4.1 Grundlegende Funktion
353
10.4.2 Anwendung von SysTick
354
10.4.3 Konfiguration des SysTick
355
10.4.4 Register des System-Timers SysTick
356
10.4.5 SysTick-Interrupt
358
10.5 Abschlussbetrachtung
358
Timer und Counter, Teil 2
359
11.1 Timer/Counter, Grundlagen
360
11.1.1 Einsatzgebiete von Timern und Countern
360
11.1.2 Grundlegende Betrachtungen
361
11.1.3 Triggern der Counter
361
11.2 Timer/Counter programmieren
362
11.2.1 PIO-Controller konfigurieren
362
11.2.2 PMC konfigurieren
365
11.2.3 NVIC konfigurieren
365
11.3 Die Register der Timer/Counter
366
11.3.1 TC- und TC-Channel-Register
366
11.4 Projekt 11_01_TIMER_COUNTER
375
11.4.1 global.h
375
11.4.2 tcWave.h und tcWave.c
376
11.4.3 tcCapture.h und tcCapture.c
383
11.4.4 main.c
385
Teil IV: Weiterführende Komponenten
389
Peripheral DMA Controller (PDC)
391
12.1 Prinzipieller Aufbau
391
12.1.1 Voll-Duplex-fähige Peripherie
392
12.1.2 Halb-Duplex-fähige Peripherie
392
12.1.3 Monodirektionale Peripherie
393
12.1.4 Voll-Duplex- und Halb-Duplex-Kanäle
393
12.1.5 Monodirektionale Kanäle
393
12.2 PDC-Register
393
12.2.1 Receive Pointer Register (PERIPH_RPR)
394
12.2.2 Receive Counter Register (PERIPH_RCR)
394
12.2.3 Transmit Pointer Register (PERIPH_TPR)
394
12.2.4 Transmit Counter Register (P_TCR)
394
12.2.5 Weitere Receive- und Transmit-Register
394
12.2.6 Transfer Control Register (PERIPH_PTCR)
395
12.2.7 Transfer Status Register (PERIPH_PTSR)
395
12.3 Schlussbetrachtung
395
PWM – Pulsweitenmodulation
397
13.1 Was ist Pulsweitenmodulation?
397
13.2 Pulsweitenmodulation – aber wozu?
398
13.3 Der PWMC der AT91SAM3S-Familie
398
13.3.1 Abhängigkeiten des PWMC
399
13.3.2 Die CMSIS-Funktion des PWMC
400
13.3.3 Zuordnung der PWM-Anschlüsse
409
13.4 Projekt 13_01_PWM
410
13.4.1 board_olimex.h
410
13.4.2 pulsewidthmod.h
414
13.4.3 pulsewidthmod.c
414
13.4.4 terminal.c
416
13.4.5 main.c
418
13.5 Drehzahlregelung eines DC-Motors
423
13.5.1 Dimensionierung der Schaltung
423
13.5.2 Drehrichtungswechsel
424
Analoge und digitale Größen
425
14.1 Vereinfachte Grundlagen
425
14.2 DACC – Digital-to-Analog Converter Controller
426
14.2.1 DACC-Register
427
14.2.2 CMSIS-Funktionen zum DACC
429
14.2.3 14_01_DACC_SIGNAL_GENERATOR_WITH_INTERRUPT
430
14.2.4 Hilfsprogramm: 14_02_TABLE_GENERATOR
434
14.3 ACC – Analog Comparator Controller
442
14.3.1 Die Register des ACC
443
14.3.2 CMSIS-Funktionen zum ACC
445
14.3.3 Projekt 14_03_ACC
446
14.4 ADC – Analog-to-Digital Converter
448
14.4.1 Eigenschaften des ADC
448
14.4.2 Die ADC-Register
449
14.4.3 CMSIS-Funktionen des ADC
457
14.4.4 Projekt 14_06_ADC_TS_UND_POTI
458
Teil V: Serielle Kommunikation
475
Serielle Schnittstellen I
477
15.1 Hardware
478
15.1.1 RS-232 (EIA 232)
479
15.1.2 RS-485
481
15.1.3 TWI (I2C)
482
15.1.4 Serial Peripheral Interface (SPI)
482
15.1.5 Synchronous Serial Controller (SSC)
482
15.2 Serielle Schnittstellen der AT91SAM3S-Familie
483
15.2.1 Grundlegende Begriffe
483
15.3 Universal Asynchronous Receiver Transceiver (UART)
489
15.3.1 UART-Eigenschaften beim AT91SAM3S
489
15.3.2 UARTs auf dem Olimex SAM3-P256
489
15.3.3 UART-Register
490
15.3.4 RS232_0 und Retargeting
493
15.4 Universal Synchronous Asynchronous Receiver Transceiver (USART)
496
15.4.1 USART-Eigenschaften beim AT91SAM3S
497
15.4.2 USARTs auf dem Olimex SAM3-P256
498
15.4.3 USART-Register
499
15.5 Two-wire Interface (TWI)
507
15.5.1 TWI-Eigenschaften beim AT91SAM3S
509
15.5.2 TWI auf dem Olimex SAM3-P256
509
15.5.3 TWI-Register
509
Serielle Schnittstellen II
515
16.1 SD Card (stark vereinfacht)
515
16.1.1 Ausführungsformen und Anschlüsse
516
16.1.2 Versorgung und Stromaufnahme
517
16.1.3 Speicherkapazitäten und Zugriffsraten
517
16.2 SD-Karten im SPI-Modus
518
16.2.1 Grundlagen zum SPI
518
16.2.2 Initialisierung des SPI
518
16.2.3 Lesen und Schreiben von Rohdaten
536
16.3 High Speed MultiMedia Card Interface (HSMCI)
538
16.3.1 Merkmale des HSMCI
538
16.3.2 Informationen zu den Protokollen
539
16.3.3 Anschluss eines SD-Kartenslots
540
16.3.4 Die HSMCI-Register
540
16.3.5 Hinweis zur Nutzung des HSMCI
543
16.4 Synchronous Serial Controller (SSC)
543
16.4.1 Merkmale des SSC
544
16.4.2 Die wichtigsten Register des SSC
545
Glossar
547
A.1 Architektur
547
A.2 ARM
547
A.3 ARM-Befehlssatz
547
A.4 Big.LITTLE-Konzept
548
A.5 BSS
548
A.6 CMSIS
548
A.7 Cortex
548
A.8 Debugging
549
A.9 Echtzeit-Betriebssysteme
549
A.10 Embedded Linux
549
A.11 FIFO
550
A.12 Firmware
550
A.13 Heap
550
A.14 JTAG
550
A.15 LIFO
551
A.16 OCD
551
A.17 SAM-BA
551
A.18 Stack
551
A.19 SWD
552
A.20 TDMI
552
A.21 Text-Segment
552
A.22 Thumb-Befehlssatz
553
Ressourcen
555
B.1 Hardware
555
B.1.1 Das Olimex-Board SAM3-P256
555
B.1.2 In-Circuit-Emulatoren
556
B.1.3 Andere Elektronik-Komponenten
556
B.2 Software
556
Literatur
559
C.1 Literatur (Buchversion)
559
C.2 Literatur (Online-Version)
559
C.3 Weitere allgemeine Quellen
561
Erfahrungen
563
D.1 Wechsel der Toolchain
563
D.2 GNU Tools for ARM Embedded Processors
563
D.3 Nochmals: Verwendung der Nano-Libs
564
D.4 Updates von Eclipse und dem CDT
564
D.5 Andere Probleme mit Eclipse und dem CDT
564
D.6 Debugger
565
D.7 Versionsverwaltung
565
Stichwortverzeichnis
566