Raspberry Zero W IO


© März 2021, letzte Änderung am 26.08.23

Übersicht

Die ersten Schritte habe ich bereits in Raspberry Grundkonfiguration beschrieben.

Um eine Orientierung zu haben, denifiere ich die Draufsicht auf den Raspberry
mit 40 poliger Pfostensteckerleiste rechts als Standard-Ansicht.
Entsprechend ist oben die µSD-Card-Buchse, links HDMI & µUSB und unten CSI.

Verwendete Begriffe

Stromversorgung über USB beim Zero W

An der unteren Micro-B USB Buchse J1 steht auf der Platine PWR.
Und mehr ist an dieser Buchse auch nicht angeschlossen.
Die Numerierung erfolgt von links nach rechts
von außen in die Buchse hinein geschaut.
Übliche USB Kabelfarben sind ebenso enthalten.

Kabelfarbe Pin Bezeichnung
rot 1 5V
weiss 2 -
grün 3 -
- 4 -
schwarz 5 Gnd

Zum Anfang

µUSB-Schnittstelle beim Zero W

Die 2. Micro-B USB Buchse, mittig links (näher zur CPU),
ist auch tatsächlich eine USB 2.0 Schnittstelle.
Bei Sicht in die USB-Buchse (breite flache Seite oben) ist links Pin 1 und rechts Pin 5.
D+ und D- sind die differentiellen Datenleitungen.
Im einzigen, im Internet auffindbaren Schaltplan, ist noch nichteinmal diese Schnittstelle beschrieben.

Laut wikipedia.org ist der ID-Pin am Micro-B-Stecker wie folgt:
Typ A: Masse (On-The-Go; [OTG]-Gerät arbeitet als Host)
Typ B: nicht verbunden (OTG-Gerät arbeitet als Peripherie)

Da ich über diese Schnittstelle, via Hub (da die 5 V nicht direkt aus den Raspberry gezogen werden sollten),
eine Tastatur und Maus anschließen kann, stimmt das mit den ID-Pin beim Raspberry nicht ganz.

Kabelfarbe Bezeichnung Pin
rot VBUS 5V 1
weiss Data - 2
grün Data + 3
- ID (NC) 4
schwarz Gnd 5

Zum Anfang

Unbestückte JTAG-Schnittstelle beim Zero W

Die JTAG-Schnittstelle ist eine typische debug Schnittstelle um ein IC
z.B. nach der Bestückung auf Funktionsfähigkeit zu überprüfen.
J5 befindet unterhalb der Platine im unteren Bereich
(gegenüber der Kamera-Schnittstelle).
An welche CPU-Pins die Signale gehen,
ist aus den mageren Schaltplan Rev 1.1 nicht ersichtlich.
Bände spricht für sich, dass es eine Rev. 1.1 von 2015 & 2017 gibt…

Bezeichnung Pin
RUN 1
VC_TRST_N 2
VC_TDI 3
Gnd 4
VC_TDO 5
VC_TMS 6
Gnd 7
VC_TCK 8

Zum Anfang

miniHDMI-Pinbelegung beim Zero W

Die mini-HDMI-Buchse J6 oder HDMI Typ C, befindet sich oben links
auf der Platine neben der µSD-Card und der CPU.
Die Bezeichnung Links und rechts bezieht sich auf die Sicht in die Buchse (flache Seite oben).
Aus den Schaltplan geht leider nicht hervor, an welche CPU-Pins das geht.
Um sie nutzen zu können,
ist meist noch ein Adapter 19 pol. HDMI Buchse (Typ A) auf 15 pol. mini HDMI Stecker nöitg.

Bei den HDMI-Datenleitungen handelt es sich um differentielle wikipedia.org TDMS-Signale.
Entsprechend gibt es 4 Signalpaare (3 für die Farben + Takt),
wobei jedes Signal des Paars am Ende mit p wie positiv oder n wie negativ bezeichnet ist.

Zusätzlich gibt es noch eine 5V tolerante I2C-Schnittstelle (SCL, SDA).

wikipedia.org CEC ist ein einadriger serieller Datenbus
zur Kontrolle aller angeschlossenen Geräte über eine IR-Fernbedienung.

HPD wird vom Monitor hochgezogen z.B. via Pullup-Widerstand,
dann liest die Signalquelle via I2C die Möglichkeiten des Monitors aus.

Bezeichnung Pin rechts
Gnd 1
HDMI_T2P 2 rot
HDMI_T2N 3
Gnd 4
HDMI_T1P 5 grün
HDMI_T1N 6
Gnd 7
HDMI_T0P 8 blau
HDMI_T0N 9
Gnd 10
HDMI_CKP 11 Takt
HDMI_CKN 12
Gnd 13
HDMI_CEC 14
HDMI_SCL 15 DDC SCL
HDMI_SDA 16 DDC SDA
reserved 17
5V max. 50 mA 18
HDMI_HPD 19 hotplug detect
Bezeichnung Pin links

Zum Anfang

Pinbelegung des 40 pol. Steckers beim Zero W

Die folgenden Tabelle bedarf wahrscheinlich noch etwas Erklärung.
Die Numerierung von J8 am rechten Platinenrand ist von oben auf die Platine betrachtet.
(Sicht in den Pfostenstecker)
Zur Orientierung ist Pin 1 mit einem eckigen Pad versehen und befindet sich oben links.

Nach einem Reset ist zunächst jeder der 54 general-purpose I/O (GPIO) Pins ein Eingang
mit fast überall einem Widerstand. Siehe Buchstabe vor der Pin Nummer.
Der Widerstand kann entweder ein H = pull-up oder ein L = pull-down Widerstand oder - = offen sein.
Später kann ich jeden GPIO umprogrammieren zu einen Ausgang oder
er kann bis zu 6 alternative Funktionen (ALT0…ALT5) haben.
Nur ein Bruchteil davon GPIO0…GPIO27, ist auf dieser Steckerleiste erreichbar.
Betimmte Funktionen benötigen ein Gruppe von Pins, sonst machen sie keinen Sinn und sind entfallen.
Steht am Anfang der Bezeichnung ein kleines n, wie z.B. nCE, so ist diese Chip Enable low aktiv.

Pin Pin
1 3V3
2 5 V
H 3 GPIO02 0 SDA1 *
4 5 V
H 5 GPIO03 0 SCL1 *
6 Gnd
H 7 GPIO04 0 GPClk0 1-w 5 ARM TDI
L 8 GPIO14 0 TxD0 5 TxD1
9 Gnd
L 10 GPIO15 0 RxD0 5 RxD1
L 11 GPIO17 4 SPI1 nCE1 5 RTS1
L 12 GPIO18 0 PCM Clk 4 SPI1 nCE0 5 PWM0 3 BSCSL SDA/MOSI
L 13 GPIO27 4 ARM TMS 3 SD1 DAT3
14 Gnd
L 15 GPIO22 4 ARM TRST 3 SD1 CLK
L 16 GPIO23 4 ARM RTCK 3 SD1 CMD
17 3V3
L 18 GPIO24 4 ARM TDO 3 SD1 DAT0
L 19 GPIO10 0 SPI0 MOSI
20 Gnd
L 21 GPIO09 0 SPI0 MISO
L 22 GPIO25 4 ARM TCK 3 SD1 DAT1
L 23 GPIO11 0 SPI0 sClk
H 24 GPIO08 0 SPI0 nCE0
25 Gnd
H 26 GPIO07 0 SPI0 nCE1
H 27 GPIO00 0 ID_SDA0
H 28 GPIO01 0 ID_SCL0
H 29 GPIO05 0 GPClk1 5 ARM TDO
30 Gnd
H 31 GPIO06 0 GPClk2 5 ARM RTCK
L 32 GPIO12 0 PWM0 5 ARM TMS
L 33 GPIO13 0 PWM1 5 ARM TCK
34 Gnd
L 35 GPIO19 0 PCM_FS 4 SPI1 MISO 5 PWM1 3 BSCSL SCL/SCLK
L 36 GPIO16 4 SPI1 nCE2 5 CTS1
L 37 GPIO26 4 ARM TDI 3 SD1 DAT2
L 38 GPIO20 0 PCM DIn 4 SPI1 MOSI 5 GPClk0 3 BSCSL MISO
39 Gnd
L 40 GPIO21 0 PCM DOut 4 SPI1 SCLK 5 GPClk1 3 BSCSL nCE
odd even x GPIO Alt0 Alt4 Alt5 Alt3

Der Pins 3 und Pin 5 hat noch eine Sonderstellung, da dort extern zur CPU,
jeweils ein extra 1k8 pullup Widerstand nach 3V3 angeschlossen wurde.
Die Nummer vor der Bezeichnung z.B. bei Pin 3 steht 0 SDA1
kennzeichnet die Alternative 0 → ALT0.

GPIO3 kann ich als "shut down" programmieren, indem ich in folgende Datei etwas einfüge.

sudo nano /boot/config.txt

dtoverlay=gpio-shutdown

Zum Anfang

Pinbelegung des 40 pol. Steckers aus der Sicht der WiringPi- Bibliothek

wiringPiGPIOPinPinGPIOwiringPi
3V3 1 2 5V
8 2 3 4 5V
9 3 5 6 Gnd
7 4 7 8 14 15
Gnd 9 10 15 16
0 17 11 12 18 1
2 27 13 14 Gnd
3 22 15 16 23 4
3V3 17 18 24 5
12 10 19 20 Gnd
13 9 21 22 25 6
14 11 23 24 8 10
Gnd 25 26 7 11
0 27 28 1 9
5 29 30 Gnd
6 31 32 12
13 33 34 Gnd
19 35 36 16
26 37 38 20
Gnd 39 40 21

CSI-Pinbelegung beim Zero W

Die 22 polige CSI- Kamera-Schnittstelle J12 befindet sich am unteren Rand der Platine.
An einen kleinen Dreieck kann man rechts Pin 1 erkennen.
Aus dem Schaltplan geht leider nicht hervor, an welche CPU Pins das geht.
Um übliche ZIF15 Kameramodule nutzen zu können, ist ein Adapter-Kabel nötig.
Wenn man sich die Steckerbeleung anguckt, fragt man sich,
warum man überhaupt einen 22 poligen Stecker verwendet hat.

Bezeichnung Pin Bezeichnung Pin
Gnd 1 1
CAM_DN0 2 2
CAM_DP0 3 3
Gnd 4 4
CAM_DN1 5 5
CAM_DP1 6 6
Gnd 7 7
CAM_CN 8 8
CAM_CP 9 9
Gnd 10 10
- 11
- 12
Gnd 13
- 14
- 15
Gnd 16
CAM_GPIO0 ID_SDA0 17 11
CAM_GPIO1 ID_SCL0 18 12
Gnd 19
SCL0 20 13
SDA0 21 14
3V3 22 15
CSI ZIF15

Moderne Kamera-Chips können bis zu 4 Daten-Lanes zur Verfügung stellen.
Leider bietet diese Schnittstelle nur 2 Daten-Lanes (CAM-D0, CAM-D1)
und eine Clock-Lane (CAM-C).
Über die I2C-Schnittstelle (SCL, SDA) wird die Kamera konfiguriert.

Zum Anfang

µSD-Card beim Zero W

Die µSD-Card Schnittstelle befindet sich am oberen Platinenrand.
Dies ist im SD-Mode eine serielle 4 Bit-Schnittstelle
und im SPI-Mode eine 1 Bit serielle Schnittstelle.
Guckt man in den Schacht hinein (Kontakte unten) ist rechts an der µSD-Card eine Nase Pin 1.

Name SD Mode Pin SPI Mode
D2 Data 2 1 -
D3 Data 3 2 CS
CMD Command 3 DIn
3V3 3V3 4 3V3
Clk Clock 5 Clk
Gnd Gnd 6 Gnd
D0 Data 0 7 DOut
D1 Data 1 8 -

Zum Anfang

Die 4 extra Pins beim Zero W

Am unteren Ende der 40 poligen Steckerleiste befinden sich links noch 4 Pins.
Wenn HDMI nicht angeschlossen ist, hat man ein analoges composit Video-Signal
(gelber RCA-Stecker) zur Verfügung.
Mit den /Reset-Pin könnte ich einen gestoppten Raspberry wieder starten.
Sonst sollte man diesen Pin möglichst nicht verwenden, da unter Umständen,
wenn Linux nicht richtig runter gefahren wird, ein korruptes Dateisystem entsteht.

breite Seite PinPin Platinenrand
composite video via RCA 1 2 Gnd
Gnd 2 1 Run oder /Reset

Zum Anfang

Quellen (alphabetisch)

cbrell.de   GPIO – Raspberry Pi Pinbelegung
components101.com   SD-Card pinout, features, Spec., how to connect
datenreise.de   Raspberry Pi – Kameramodul als Überwachungskamera (Livestream)
delphys.net   A simple solution using a MOSFET to level-shift control
giga.de   USB-Anschluss: Pinbelegung von USB A, B, C und Micro-USB
github.com   RPi-Distro / raspi-gpio
indibit.de   Raspberry Pi: Die GPIO-Schnittstelle (Grundlagen + Belegung)
iwenzo.de   HDMI Steckerbelegung
mikrocontroller.net   Pegelwandler
petervis.com   Raspberry Pi CSI Camera Module
pi-buch.info   GPIO-Steuerung in PHP-Scripts
pinout.xyz   Raspberry Pi Pinout
raspberrypi-spy.co.uk   Simple Guide to the Raspberry Pi GPIO Header
raspberry.tips   GGPIO Belegung für den Raspberry Pi B+ und WiringPi Update
raspberrypiguide.de   Raspberry Pi GPIO How-To
reichelt.de   USB
sprut.de   Ansteuerung von Dot-Matrix LCD-Displays
stackexchange.com   Raspberry Pi RUN Pin
stackexchange.com   How to trigger hot plug detection in HDMI interface?
tutorials-raspberrypi.de   Raspberry Pi GPIO Erklärung für Beginner + Programmierung (Teil 2)
tutorials-raspberrypi.de   KY040 Drehregler als Lautstärkeregler für den Raspberry Pi
tutorials-raspberrypi.de   WS2812 RGB LED Streifen per Raspberry Pi steuern
tutorials-raspberrypi.de   Raspberry Pi: Per IR Remote Befehle ausführen
tutorials-raspberrypi.de   Raspberry Pi und I2C Luftdrucksensor BMP180
thepihut.com   How to add an RCA TV Connector to a Raspberry Pi Zero

Zum Anfang