serielle schnittstellen (uarts) - darc.de · der usb-sbuchse, die als serielle schnittstelle...

33
30.05.14 Serielle Schnittstelle 1 Serielle Schnittstellen (UARTs) 25.10..2013 A.Schultze, DK4AQ Serielle Signale Serielle Schnittstellen am Arduino Nano Serial Library für Hardware UARTs SoftSerial Library für Software-UARTs Der Baustein FT232 Breakout Boards mit USB-Seriell-Konvertern Experiment TestSoftSerial Anhang ASCUII-Tabelle Anhang USB Signale und Protokolle

Upload: others

Post on 30-Aug-2019

8 views

Category:

Documents


1 download

TRANSCRIPT

30.05.14 Serielle Schnittstelle 1

Serielle Schnittstellen (UARTs)

25.10..2013 A.Schultze, DK4AQ

● Serielle Signale● Serielle Schnittstellen am Arduino Nano● Serial Library für Hardware UARTs● SoftSerial Library für Software-UARTs● Der Baustein FT232● Breakout Boards mit USB-Seriell-Konvertern● Experiment TestSoftSerial● Anhang ASCUII-Tabelle● Anhang USB Signale und Protokolle

30.05.14 Serielle Schnittstelle 2

Für viele Aufgaben werden serielle Schnittstellen benötigt. Sie stellen eine ziemlich alteForm der seriellen Kommunikation dar. Die ersten Anfänge stammen aus der Zeit dermechanischen Streifenschreiber 1930er-Jahre).Es handelt sich um eine asynchrone serielle Datenübertragung mit Start- und Stop-Bits.

Quelle:wikipedia.org/wiki/Universal_Asynchronous_Receiver_Transmitter

Signalform Serielles Signal (a)

30.05.14 Serielle Schnittstelle 3

Als Zeichensatz wurden internationale Codes verabredet. Einer diese Code-Sätze warder ASCII-Code (American Standard Code for Information Interchange). Er konnte fürden englischsprachigen Raum alle benötigten Zeichen für eine schriftlicheKommunikation darstellen. Fernschreiber (Teletypes, TTY) wurden zu Beginn derComputerentwicklung als Ein-Ausgabe-Geräte verwendet und daher arbeitet dieComputertechnik noch heute mit diesem bzw. angepassten Zeichensätzen beiZeichen-orientierten Daten. Der PC-Zeichensatz ist ein angepasster ASCII-Zeichensatz. (siehe Anhang)

Die Zuordnung der logischen Zustände zum Leitungspegel wurde über denamerikanischen EIA-Standard RS-232 geregelt. Ursprünglich wurden für den Wert „1“-3V...-15V definiert, für den Wert „0“ waren es +3...+15V. Die Daten wurden über 3Leitungen übertragen ( RXD,TXD,GND)RS-232 definierte auch zusätzliche Steuersignale, die zum Aufbau einer Verbindungüber ein Telefonnetz dienten und ausserdem einen Überlauf des Empfängersverhinderten. (DTE,DCS,RTS, CTS). Solche Schnittstellen waren bis zu den PCs derletzten Generation noch Standard-Schnittstellen.

In der Mikrorechnertechnik wird die serielle Kommunikation noch häufig verwendet,jedoch häufig mit logischen Pegeln (z.B. 0V, 5V). Die Signale werden meist vonspezieller Hardware erzeugt (UART, Universal Asynchronous Receiver Transmitter).Man kann jedoch durch entsprechendes Schalten von Port-Pins auch per Softwaresolche Signale erzeugen oder Lesen

Signalform Serielles Signal (b)

30.05.14 Serielle Schnittstelle 4

Startbit Stopbit„1“„2“„4“„8“„1“„2“„4“„8“

2 3lowhigh

32h ASCII-Character „2“

Serielle Daten auf TTL-Level

5V = „1“

0V = „0“

30.05.14 Serielle Schnittstelle 5

Microcontroller haben bis auf wenige Ausnahmen solche UARTs an Bord. Die beiArduino verwendeten Prozessoren haben mindestens eine UART, teilweise mehrere.

Der Arduino Nano hat eine hardwaregesteuerte serielle Schnittstelle auf dem Chipverfügbar (Atmega328).

Für dieses Hardware-Schnittstellen gibtes Libraries, die eine einfache Nutzungermöglichen.

Benötigt man mehr serielle Schnitt-stellen, dann gibt es die Möglichkeit perSoftware alle verfügbaren Digital-IO-Pins als RX/TX-Leitungen zu verwen-den.

Hardware-UARTs sind eigenständigabeitende HW-Automaten, die nachÜbergabe ohne Software-Zutun 1 Bytesenden oder empfangen können.Software-UARTs benötigen Rechenzeit und Speicher, sind also langsamer.Ausserdem kann immer nur eine Software UART gleichzeitig hören !!!

Hardware-/Software-UARTs

30.05.14 Serielle Schnittstelle 6

Funktion Bedeutung Rückgabewertif (Serial[x]) Anfrage ob die spezifizierte Schnittstelle x

betriebsbereit ist. (Nano UART: x weglassen)True: Schnitt-stelle vorhanden

available() Kontrolle ob Zeichen empfangen wurden AnzahlempfangenerZeichen

begin(baudrate) Start der Schnittstellensoftware mit Einstellungder Baudrate

keiner

end() Stoppen der Schnittstellensoftware keinerfind(string) Durchsuchen der empfangenen Zeichen nach

einem StringTrue: Stringgefunden

findUntil(string,terminator)

Durchsuchen der empfangenen Zeichen nacheinem String oder nach einem Terminator-String

True: String oderTerminatorgefunden

flush() Programm wartet bis alle Zeichen aus demSendepuffer gesendet wurden

keiner

parseFloat() Sucht nach dem ersten gültigen Float-Wert GefundenerFloat-Wert

parseInt() Sucht nach dem ersten gültigen Int-Wert Gefundener Int-Wert

Serial Library für Hardware UARTs (1)

30.05.14 Serielle Schnittstelle 7

Funktion Bedeutung Rückgabewertpeek() Lesen eines Zeichens aus dem

Empfangspuffer ohne Zeichen dort zulöschen

Erstesempfangenes Byte

print(x,Zahlensyst) Sendet einen Wert im gewähltemZahlensystem oder Character. Character wirdin Hochkomma gesetzt (' ')

Anzahl dergesendetenzeichen

println() Ausgabe eines Wertes im gewähltemZahlensystem oder String mitanschließendem CR/LF

Anzahl dergesendetenzeichen

read() Liest einen empfangenes Byte Erster gelesenerWert oder -1 (leer)

readBytes(Puffer,Länge)

Liest empfangene Bytes in einen Puffer mitmaximaler Länge

Anzahl dergesendeten Bytes

readBytesUntil(Terminator, Puffer, Länge)

Liest empfangene Bytes in einen Puffer mitmaximaler Länge bis ein Terminator-Werterscheint

Anzahl dergesendeten Bytes

setTimeout(Zeit) Setzen einer Timeout-Zeit bei allenOperationen, die auf einen Terminator warten

keiner

Serial Library für Hardware UARTs (2)

30.05.14 Serielle Schnittstelle 8

Funktion Bedeutung Rückgabewertwrite(x) Senden von Bytes, Strings oder Puffer mit

vorgegebener LängeAnzahl dergesendeten Bytes

serialEvent(routine) Nutzung des Empfangs-Interrupts, mit derRoutine kann das(die) Zeichen abgeholtwerden

= häufig verwendet Funktionen

Diese Library wurde für die Hardware-UARTs der Arduino-Boards entwickelt.Alle Aufrufe werden unter Vorsatz von „Serial.“ aufgerufen. Damit erreicht man die UARTder USB-SBuchse, die als serielle Schnittstelle genutzt wird. Auf Boards mit mehrerenHardware- UARTs kann man „Serial1.“ „Serial2.„ oder „Serial3.“ verwenden..

Serial Library für Hardware UARTs (3)

30.05.14 Serielle Schnittstelle 9

Funktion Bedeutung RückgabewertSoftwareSerial(rxPin,txPin)

Deklaration eines Objektes vom TypSoftwareSerial. SoftwareSerial mySerial =SoftwareSerial(rxPin, txPin);

True: Schnitt-stelle vorhanden

available() Kontrolle ob Zeichen empfangen wurden AnzahlempfangenerZeichen

begin(baudrate) Start der Schnittstellensoftware mit Einstellungder Baudrate

keiner

isListening() Test, ob die spezifizierte serielle Schnittstelle aktiv auf Eingangssignale hört

True: Schnittstellehört zu

overflow() Kontrolle, obseit dem letzten Lesen der eineÜberlauf des Empfangs-Puffers passiert

True: Überlauf istpassiert, ungültigerPufferinhalt

peek() Lesen eines Zeichens aus demEmpfangspuffer ohne Zeichen dort zu löschen

ErstesempfangenesByte

print(x,Zahlensyst) Sendet einen Wert im gewähltemZahlensystem oder Character. Character wirdin Hochkomma gesetzt (' ')

Anzahl dergesendetenzeichen

SoftSerial für Software-UARTs (1)

30.05.14 Serielle Schnittstelle 10

Funktion Bedeutung Rückgabewertprintln() Ausgabe eines Wertes im gewähltem

Zahlensystem oder String mitanschließendem CR/LF

Anzahl dergesendetenzeichen

read() Liest einen empfangenes Byte Erster gelesenerWert oder -1 (leer)

write(x) Senden von Bytes, Strings oder Puffer mitvorgegebener Länge

Anzahl dergesendeten Bytes

listen(serielles Objekt) Nur eine Software-UART kann gleichzeitighören. Wenn Zeichen bei anderen UARTseintreffen, dann werden si nichtaufgenommen !

keiner

Serial Library für Hardware UARTs (2)

30.05.14 Serielle Schnittstelle 11

Übertragung serieller Daten über USB-Verbindungen zum PC

Wenn man eine serielle Verbindung zum PC herstellen will und es heutzutage an PCskeine seriellen Schnittstellen gibt, verwendet man meist die mehrfach vorhandenenUSB-Schnittstellen. Dazu werden Seriell-zu-USB-Umsetzer verwendet. Auf derÜbertragungsleitung wird mit USB-Kabeln und USB-Protokoll übertragen. Auf derEmpfangsseite werden die übertragenen Daten wieder umgesetzt und über COM-Treiber dem PC zur Verfügung gestellt. Über diese COM-Treiber können alleProgramme auf die Daten zugreifen, die für serielle Schnittstellen geschrieben wurden.Ein Beispiel dafür sind Programme, die ein Datenterminal emulieren, z.B. Arduino´sSerial Monitor , Terminal-Emulatoren sind z.B. HyperTerminal , TeraTerm und PuTTY.

Beispiel für einen Serial-USB-Umsetzer ist der Schaltkreis FT232 Er kann auf der einenSeite USB-Signale und auf der anderen Seite serielle Signale mit logischen Pegelnverarbeiten. Auf der USB-Seite liefert er Kennungen, die mit dem zugehörigen Treiberder Herstellerfirma einen Verbindungsaufbau zu einer COM-Schnittstelle am PCerlauben.

Eine so installierte Verbindung wird unter Windows genau wie eine echte serielleSchnittstelle sichtbar. Will man also kontrollieren, ob eine serielle Schnittstelle desArduino funktioniert, dann braucht man so einen Konverter.

30.05.14 Serielle Schnittstelle 12

FT232R USB UART IC

30.05.14 Serielle Schnittstelle 13

Future Technology Devices (FTDI)

30.05.14 Serielle Schnittstelle 14

*

*

**

Anschlussbelegung FT232

30.05.14 Serielle Schnittstelle 15

Anschlussbelegung FT232

30.05.14 Serielle Schnittstelle 16

*

*

Anschlussbelegung FT232

30.05.14 Serielle Schnittstelle 17

Von vielen verfügbaren Anschlüssen braucht man glücklicherweise meist nur die

mit * gekennzeichneten Anschlüsse

Anschlussbelegung FT232

30.05.14 Serielle Schnittstelle 18

SparkfunBreakout Board for FT232RL USB to SerialBOB-00718

Schaltung

30.05.14 Serielle Schnittstelle 19

TXD

DTR RTS

VCC

IOR

XD RI

GN

DD

SRD

CD

GN

DTX

LED

RXL

EDVC

CV3

.3C

TSSL

EEP

TXD

ENPW

REN

SparkfunBreakout Board for FT232RL USB to SerialBOB-00718

Anschlüsse

30.05.14 Serielle Schnittstelle 20

Belegung verschiedener USB-Stecker

30.05.14 Serielle Schnittstelle 21

Anwendung von Hardware- und Software-UART

Es wird die eingebaute serielle Schnittstelle mit FT232-Umsetzer der Arduino Nanoverwendet und zusätzlich eine serielle Schnittstelle, die such die Pins D2 und D3 gebildetwird und mit der Library SoftSerial betrieben wird. Es soll auf beiden Seiten ein Terminal-Programm laufen und die Terminals sollen miteinander kommunizieren können.

30.05.14 Serielle Schnittstelle 22

Allgemeine Anmerkung:Der FT232 kann auf der Seite der Seriellen Schnittstelle mit 3,3V oder 5V arbeiten.Einige Boards sind festgelegt auf eine der Spannungen, andere haben Lötbrücken oderwie in diesem Falle einen Umschalter. Die Boards haben ebenfalls festeAusgangspegel. Es besteht nun die Gefahr, dass ein auf 3,3V konfiguriertes FT232-Board mit 5V Signalen gespeist wird, was zur Zerstörung führen kann ! 2 Widerständein den Signalleitungen bieten da einen gewissen Schutz und erlauben eine Messungmit dem Oszilloskop, ob das Signal am Eingang des FT232 begrenzt wird.Die Speisung der Bausteine ist ebenfalls eine Gefahr. Die beste Lösung ist, dass hierbeide USB-Konverter vom angeschlossenen Gerät gespeist werden.

FTDI Breakout Reloadedhttp://www.watterott.com/de/FTDI-Breakout-Reloaded-V11

Auch mit diesem Konverter Board kann man die Seriell-USB-Umsetzung durchführen.Bei eigenen Projekten kann man den Konverter-Chip mit auf die Leiterplatte bringen..

Das Board kann mit dem gleichen Programm betrieben werden.

30.05.14 Serielle Schnittstelle 23

30.05.14 Serielle Schnittstelle 24

TestSoftSerial(a)

30.05.14 Serielle Schnittstelle 25

TestSoftSerial(b)

30.05.14 Serielle Schnittstelle 26

Auf dem Serial Monitor auf COM1 wird ein Text eingegeben (Textfenster) und mit Returnabgeschickt. Das Terminal PuTTY auf COM6 empfängt die Zeichen von der Software-gesteuerten UART. Das funkltioniert auch in die andere Richtung.

COM1

COM6

COM6

Textübertagung vonTerminal zu Terminal

30.05.14 Serielle Schnittstelle 27

Anhang: ASCII-Tabelle (a)

30.05.14 Serielle Schnittstelle 28

Anhang: ASCII-Tabelle (b)

30.05.14 Serielle Schnittstelle 29

[Quelle: ftp://ftp.ccc.de/congress/2004/papers/080%20USB-Unbekannter%20Serieller%20Bus.pdf]

[Quelle: Wikipedia.org]

Leitungssignaleund ihreBedeutung

Anhang: USB Signale und Protokolle (a)

30.05.14 Serielle Schnittstelle 30

[Quelle: ftp://ftp.ccc.de/congress/2004/papers/080%20USB-Unbekannter%20Serieller%20Bus.pdf]Empfehlenswerte Gesamtdarstellung :

Anhang: USB Signale und Protokolle (a)

Protokollschichten

30.05.14 Serielle Schnittstelle 31

[Quelle: http://www.tu-chemnitz.de/informatik/RA/news/stack/kompendium/vortraege_97/usb/protokol.html]

Anhang: USB Signale und Protokolle (c)

30.05.14 Serielle Schnittstelle 32

[Quelle: http://www.tu-chemnitz.de/informatik/RA/news/stack/kompendium/vortraege_97/usb/protokol.html]

Anhang: USB Signale und Protokolle (d)

30.05.14 Serielle Schnittstelle 33

Quelle [10]: USB Class Codes. usb.org. 17. November 2009 (englisch)., zitiert in Wikipedia

Anhang: USB Signale und Protokolle (e)