Transcript pptx

DIY
Personal Fabrication
Drahtgebundene Kommunikation
Juergen Eckert – Informatik 7
Fahrplan
• UART
• SPI
• TWI
Kommunikation Grundlagen (1/2)
• Taster und LED (siehe Bsp. vor Weihnachten) sind
einfache Schnittstellen zur Kommunikation
• Kommunikation = Austausch von Signalen
(z.B. Licht oder Spannung)
• Signal
– Information in Form einer physikalischen Größe
– Kategorisierungstupel:
• Wert: kontinuierlich oder diskret
• Zeit: kontinuierlich oder diskret
heute
Kommunikation Grundlagen (2/2)
• Leitungskodierung bei binären Signalen = Zuordnung
der Signalwerte zu 0 oder 1
• Übertragungsart:
– Parallel: mehrere Bits gleichzeitig
– Seriell: zeitlich aufeinander folgende Bits
• Weitere Eigenschaften:
1. Synchron (selbsttaktend) oder asynchron: Sendertakt
wird mit übermittelt
2. Gleichstromfrei: Kein bestimmter Pegel in Ref zu GND
3. Bandbreitenbedarf: Breite des Frequenzbands, um Signal
zu übertragen.
Leitungskodierung (1/2)
• Non-Return-To-Zero (NRZ):
„1“ = High, „0“ = Low, ¬(1), unipolar: ¬(2), polar: (2)✓
• NRZ-Invert (NRZI):
„1“ = Wechsel, „0“ = kein Wechsel, ¬(1), ¬(2), verpolungssicher
• Bipolar:
„0“ = Nullpegel, „1“ = alternierend Low und High, ¬(1), (2) ✓
• Manchester-Kodierung:
Pegelwechsel in Taktmitte, „1“ = High→Low, „0“ = Low→High, (1) ✓,
¬(2), benötigt doppelte Bandbreite, Verwendung bei Ethernet
• Differentielle Manchester-Kodierung:
Pegelwechsel in Taktmitte und zusätzliche Taktwechsel am
Flankenanfang,„1“ = kein Wechsel, „0“ = Wechsel, (1) ✓, (2) ✓,
nochmal höhere Bandbreite, Verwendung bei Token Ring
(Hier: High und Low sind Symbole die Spannung repräsentieren)
Leitungskodierung (2/2)
Bitsequenz
Unipolares NRZ
Polares NRZ
NRZI
Bipolar
ManchesterKodierung
Differentielle
ManchesterKodierung
1
0
1
0
1
1
1
Referenz
0
0
Übertragungssystem
• Systemtheorie: mathematisches Modell zur
Beschreibung des Übertragungsverhaltens
Eingangssignal
s1(t)
Ausgangssignal
Übertragungssystem
s2(t)
• Signalübertragung (Pegelwechsel) benötigt
Energie (je höher die Freq. desto mehr)
• Bandbreitenbeschränkung (min. und max. Freq.)
– Signalverzerrung
– Idealisiert: Freq. 0..fC unverändert, höhere Freq. stark
gedämpft. (Low Pass Filter)
Theorie (Fourierreihen, Fouriertransformation, Abtasttheorem, ...) siehe RK Vorlesung
[Hier (aus Zeitgründen) Daumenregel: Signal auf das Medium geben und mit Oszi überprüfen]
Foto: Wikipedia
Serielle Schnittstelle (1/2)
• Meist genutztes Interface (DIY/HACKs)
• EIA-232 (RS-232, V.10) in 1962
– Punkt-zu-Punkt Verbindung (1:1)
– Asynchron
– Geschwindigkeit in Baud = Symbolrate ≠
Bits/s
• Neuere serielle Schnittstellen:
–
–
–
–
Ethernet
USB
S-ATA
...
max.
Baud
max.
Länge
2400
900m
4800
300m
9600
152m
19200
15m
57600
5m
115200
<2m
Alle Differenziell:
• 2 Leitungen übertragen das gleiche Signal,
eine Leitung ist invertiert (Ursprung: RS485)
• Hohe Toleranz gegenüber el-mag. Störungen
(Einschub)
Differenzielle Signalübertragung
Foto: Wikipedia
Serielle Schnittstelle (2/2)
• RS-232: NRZ polar, mit TTL Logik: unipolar
– TTL „1“ = 3.3V oder 5V und „0“ = 0V
• Baudrate muss
bekannt sein
• Üblich: 8N1
(ohne Parity)
• 5-9 bit
• LSB first
Foto: Wikipedia
t
Universal Asynchronous Receiver
Transmitter (UART)
• Hardware in fast jedem Mikrocontroller
AVR: 1Byte Puffer
Andere bieten
mehr HardwareSupport (Puffer)
Atmel AVR
Manchmal auch USART: S steht für synchronous, also alternative Konfigurationsart
Hardware UART (Bsp: AVR) (1/3)
void USART_Init( unsigned int baud )
{
/* Set baud rate */
UBRRH = (unsigned char)(regbaud>>8);
UBRRL = (unsigned char)regbaud;
/* Enable receiver and transmitter */
UCSRB = (1<<RXEN)|(1<<TXEN);
/* Set frame format: 8data, 2stop bit */
UCSRC = (1<<URSEL)|(1<<USBS)|(3<<UCSZ0);
}
fOSC
regbaud =
-1
16 × BAUD
Trick:
Sender 8N2, Empfänger 8N1
→Empfänger hat 1bit mehr
Zeit zur Verarbeitung
Programmier Tutorial:
• Hardware wird mittels Bits in Register kontrolliert
• Beschreibung siehe Datenblatt
Hardware UART (Bsp: AVR) (2/3)
void USART_Transmit( unsigned char data )
{
/* Wait for empty transmit buffer */
while ( !( UCSRA & (1<<UDRE)) )
;
/* Put data into buffer, sends the data */
UDR = data;
}
• Aktives warten bis das Register frei ist
• Daten in Register schreiben.
• Mikrocontroller kann andere Sachen erledigen
während der UART die Daten versendet
Hardware UART (Bsp: AVR) (3/3)
unsigned char USART_Receive( void )
{
/* Wait for data to be received */
while ( !(UCSRA & (1<<RXC)) )
;
/* Get and return received data from buffer */
return UDR;
}
• Schreib- und Lesezugriff auf Register kann
unterschiedliche Resultate haben (Bsp: UDR)
– AVR UART ist Full Duplex
(senden und empfangen gleichzeitig)
UART und Interrupts
• UART kann Interrupt nach dem Versenden
oder Empfangen eines Bytes auslösen.
→ Kein aktives Warten notwendig!
• Komplexere MCUs haben FIFO
Warteschlangen oder DMA Controller
→ Interrupt nur noch alle n Bytes
Software UART (= pain)
• Hardware bietet viele Vorteile:
Geschwindigkeit, Interrupts, Fehlererkennung,...
• Wenn mehr UARTs benötigt werden als
vorhanden kann der UART auch in Software
mittels GPIO Pins implementiert werden.
– „Semi-Software“ Lösungen (Kombination aus
Interrupts und Timer) möglich
– Sonst idR Half-Duplex
• Umgangssprachlich: Bit-Banging
TX
Software UART (AVR304)
RX
Hier: Kein
Stop Bit Test
Serielle Schnittstelle in der Praxis
• RS232 Service- und Konfigurationsschnittstelle
– Heutzutage sonst eher unüblich
– Heute: TTL oder CMOS UART (auf den Pegel achten!)
• Debugging:
–
–
–
–
2 weitere UARTS (die 2 Empfangsleitungen)
Bus Pirate
Oszilloskop (2 Kanal)
Logic Analyzer
• Verwendung in Modulen
– GPS, Bluetooth, WiFi, ...
Für Modultest:
USB nach Seriell Adapter (z.B. mittels FTDI)
Punkt-zu-Punkt Verbindung
• Jedes Modul benötigt dedizierte Hardware
(Pins)
TX
RX
Mikrocontroller
Modul
RX
TX
Binary Unit System (BUS)
(weiterhin seriell)
• Datenübertragung zwischen mehreren
Teilnehmern über einen gemeinsamen
Übertragungsweg
• Aktive Konten: Master
– Greifen selbstständig auf den BUS zu
• Passive Knoten: Slave
• Varianten
– Single-Master (1:n) Bsp: SPI
– Multi-Master (m:n) Bsp: TWI (aka. I2C)
Serial Peripheral Interface (SPI)
Von Motorola
•
•
•
•
Synchronous Serial Port (SSP)
Master-Slave Paradigma (1:n)
SCLK (Clock)
Full Duplex
MISO (Master In Slave Out)
MOSI (Master Out Slave In)
„Lockerer“ Standard
Foto: Wikipedia
Andere Namen mögl. (SDI/SDO)
SPI Topologie
Kaskadierung (Daisy-Chain)
• Slave nur über Vorgänger
ansprechbar
• Benötigt wenig IOs
• Bsp. APA102 LEDs
Fotos: Wikipedia
Stern
• Jeder Slave benötigt dedizierte
Slave Select (SS) Leitung
• Schneller bei beliebigen Zugriff
• Meist verbreitet
Leitungskodierung (1/2)
• Unipolares NRZ für alle Leitungen
• 4 Modi basieren aus Kombination von
– Clock Polarität (CPOL)
– Clock Phase (CPHA)
Folgen des lockeren Standards:
• Keine festgelegt Bit- und Byte-Order
– MSB oder LSB first
– Little oder Big Endian
• Keine festgelegt Bitanzahl (üblich 8-16bit)
Leitungskodierung (2/2)
Rot
Blau
Foto: Wikipedia
SPI in der Praxis
• Mikrocontroller
– Hardware Unterstützung
– Software Mode einfacher als UART
(zumindest als Master)
• Debugging
– Bus Pirate
– Oszilloskop (2-4 Kanäle)
– Logic Analyzer
• Verwendung
– SD-Karte (MMC)
– So gut wie jeder Chip
Für Chiptest:
Bus Pirate
Foto: dangerousprototypes.com
Single- vs. Multi-Master (1/2)
• Single-Master
– Alle Kommunikation wird vom Master initiiert
– Zentrale Kommunikation
Beispiel SPI:
• Clock Leitung wird nur vom Master getrieben
• Paralleler Zugriff auf die Clock Leitung kann
Hardware beschädigen
• Bus-Arbiter (lat.: „Richter“) kann Zugriff regeln
– Komplex / Aufwendig
Single- vs. Multi-Master (2/2)
• Multi-Master
– Mehrere aktive Konten auf dem geteilten Bus
– Dezentrale Kommunikation
Arbitrierung (Zugriffsregelung auf den Bus)
• Bus-Arbiter (de-) zentral Komponente (High
Level)
• Auf Leitungsebene (Low Level)
Multi-Master Medienzugriff
• SPI: Clock HI ⇨ Leitung ⇦ Clock LOW ⚡️⚡️⚡️
• Dominantes und Rezessives Bit
– Verhindern von Hardwarebeschädigung wenn
unterschiedliche Signals auf der Leitung
– Dominantes Bit verdrängt rezessives Bit
• Bekannte Beispiele:
– CAN-BUS (Automobilbereich, 1987)
– I2C
Inter-Integrated Circuit (I2C)
•
•
•
•
Philips Semiconductors (heute NXP), 1982
Schaltungsinterne Kommunikation (zwischen ICs)
Ab Mitte der 1990er lizenzierte Drittanbieter
Two-Wire-Interface (TWI) lizenzfreie alternative
– 2006 I2C Patent abgelaufen
• TWI = I2C ≈ SMBus
– System Management Bus gedacht für stromsparende PCs
Physikalische Schicht I2C
• Datenleitung: SDA, Taktleitung SCK (Half Duplex)
• Buszugriff mittels Open-drains
– Low dominant, High rezessiv
• High Zustand mittels Pull-Up Widerstande
– High-Speed:
Konstant Strom
Senke
Foto: Lammertbies
Medienzugriff I2C
• Start Kondition (S): SDA⤵︎︎, SCL=1
• Bit übertragen (BX) (MSB zuerst):
– Sender: Pegel auf SDA während SCL=0
– Empfänger: SDA sampeln nachdem SCL ⤴︎
• Stop Kondition (P): SDA ⤴︎, SCL=1
Foto: Wikipedia
Transferschicht
• Zwischen Start und Stop beliebig viele Bits
• Byteweise Übertragung
• 9 Bit pro Byte: Letztes Bit = Bestätigung des
Empfängers (ACK = „0“ = Low)
• Erstes Byte nach Start:
– 7 Bit Adressierung: 112 Adressen (16 reserviert)
• Erweiterung auf 10 Bit (mittels 2. Adressbyte)
– 8. Bit Kommunikationsrichtung
• Master lesen oder schreiben
Beispiel: AT24CXX EEprom
(=persistenter Speicher)
Adress-Pins
Lesen
(Zuvor muss der LesePointer gesetzt werden)
Schreiben
Fotos: Datenblatt
I2C/TWI in der Praxis
• Siehe SPI Folie
• Anwendung:
– „Low Power“ / „Langsame“ ICs
UART / I2C / SPI im Vergleich
UART
I2C/TWI
SPI
Leitungen
1-2
2
2-3 +1 je Chip
Konnektivität
1:1
m:n
1:n
Distanz
Einige Meter
Einige Zentimeter < 1m
Geschwindigkeit 1200-115k2 Baud 100-400 kbit/s
(Einige Mbaud)
(Bis zu 5Mbit/s)
Synchronität
+
Für große Entfernungen empfiehlt sich ein höheres
Spannungspotential und/oder ein differenzielles Signal
>> 10Mbit/s
+
Nächstes mal bei DIY
• Drahtlose Kommunikation (Crash Kurs)
• ISO OSI Referenzmodell