Die meisten I2C-Interfaces, die bisher in
Elektor beschrieben wurden, basieren auf
einer Philips-Applikation. Diese Schaltung
macht da keine Ausnahme. Besonders ist
aber die Kombination eines I2C-Interfaces
mit einem 8-bit-Interface. Zur Steuerung bie-
tet sich der Parallelport des PCs an, da eine
8-bit-Ausgabe von Anfang an von IBM defi-
niert war. Da die Datenleitungen jedoch nur
für die Ausgabe bestimmt waren, mußte
früher zu einem Trick gegriffen werden, um
Daten lesen zu können, nämlich
über den Statusport der Schnitt-
stelle. Da dieser aber nur 5 bit breit
ist, mußte dies nibbleweise zu je 4
bit geschehen.
Durch die Entwicklung neuer Modi
wie EPP (enhanced paralell port)
oder dem ECP (extended capabilities
port) wurde es möglich, direkt über
den Datenbus 8-bit-Daten zu lesen.
Seit der Einführung dieser Modi nut-
zen auch immer mehr Peripherie-
geräte wie zum Beispiel Scanner die
parallele Schnittstelle, um mit dem
PC zu kommunizieren, da erst mit
dem direkten Lesen der Daten eine
entsprechend hohe Übertraguns-
grate möglich wurde.
Hardware
Die Hardware des I2C/8-bit-Interfa-
ces in Bild 1 besteht eigentlich nur
aus einem 25-poligen Steckverbinder
und ein paar Gattern als Treiber und
Inverter. Die I2C-Kommunikation
läuft über die Gatter IC3b und
IC3d...f. SDA und SCL werden über
die beiden Datenleitungen D0 und
D1 angesteuert und über UserB2
(Pin 15) respektive Intr (Pin 10) der
EPP-Schnittstelle K1 gelesen. Ein
paar Pull-up-Widerstände sorgen für
geordnete Pegelverhältnisse. Takt-
und Datenleitung des I2C-Busses
findet man sowohl an Pin 3 (SCL)
beziehungsweise Pin 5 (SDA) des
Kombinations-Pfostenverbinders K2
wie auch zusammen mit Masse auf
Lötnägel herausgeführt.
Der PC erfährt, ob ein Adapter ange-
schlossen (init_iic) ist, durch die
durch Gatter IC2b geschlossene
Schleife von Pin 17 (nAStrb) zu Pin 13
(XFlagUser3). Über den ControlPort
Pin 16 (nInit) wird der bidirektionale
8-bit-Bustreiber IC1 aktiviert und
damit festgelegt, ob das Interface im
I2C- oder im Parallel-Modus arbeitet
(Funktionen io_enable und io-disable
COMPUTER
24
Elektor
10/2000
I
2
C-Interface am EPP
mit Logik-Analyser
Von Ingo Gerlach DH1AAD
E-Mail:
IngoGerlach@welfen-netz.com
Mit diesem Interface an der erweiterten parallelen Druckerschnittstelle
sind sowohl eine Kommunikation nach dem I
2
C-Protokoll als auch direkte
Lese- und Schreibzugriffe auf die acht Datenbits möglich.
fen, funktioniert diese DLL nur unter den
Betriebssystemen Windows 95/98, nicht aber
unter NT, da NT den direkten Zugriff auf die
Hardware verbietet. Als Quasi-Schnittstelle
zwischen der DLL und dem Anwendungs-
programm wie zum Beispiel VisualBasic eig-
net sich die Datei I2CEPP.BAS. Hier sind die
Funktionen sowie die Aufrufparameter dekla-
riert und beschrieben.
Testprogramm
Auf der Diskette ist ein einfachst strukturier-
ter 8-Kanal-Logik-Analysator enthalten, um
ohne weiteren Hardwareaufwand die Schnitt-
stelle zu testen und acht TTL-Pegel auf dem
Monitor darzustellen. Es sind maximal 64000
Messungen möglich (Schieberegler Counts),
der DLL). Die Datenrichtung
(lesen/schreiben) wird über nWrite
und Gatter IC3a gewählt (L = Lesen,
H = Schreiben). RC-Glied R1/C1 und
Gatter IC2a schließlich sorgen für
den erforderlichen Übernahmeimpuls
an Pin 11 von K1 (nWait) für die
Dateneingabe. Bild 2 zeigt das kor-
rekte Timing eines Lesevorgangs.
Alle Bauteile finden zusammen mit
einer einfachen Spannungsstabili-
sierung durch B1, C2...C7 und 5-V-
Festspannungsregler IC4 und Funk-
tionsleuchte D1 auf der in Bild 3
gezeigten Platine Platz. Die ICs müs-
sen mit (geeigneten) Fassungen aus-
gestattet werden, da einige der elf
Drahtbrücken auch unterhalb dieser
Bausteine verlaufen. Die meisten der
10-k-Pull-up-Widerstände werden
stehend eingebaut, ein gemeinsa-
mer Draht an den freien Enden wird
neben der Widerstandsreihe mit +5
V verbunden. Zur Spannungsversor-
gung reicht ein kleiner 9-V-Trafo oder
besser ein einfaches 9-V-Stecker-
netzteil.
DLL und BAS
Alle Funktionen befinden sich in der
I2CDLL.DLL, die wie die restliche
Software auf Diskette EPS 000096-11
erhältlich ist. Da diese auf den C-
Funktionen outp und inp basieren,
die direkt auf die Hardware zugrei-
COMPUTER
25
10/2000
Elektor
Bild 1. Die Hardware des Interfaces besteht aus ein paar Gattern und einem achtfachen
bidirektionalen Bustreiber.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
K1
K2
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
1
2
3
4
5
6
7
8
9
13
12
1
IC3f
11
10
1
IC3e
9
8
1
IC3d
3
4
1
IC3b
R7
10k
R3
10k
R6
10k
R2
10k
5
6
1
IC3c
1
2
1
IC3a
74LS245
IC1
3EN2
3EN1
11
12
13
14
15
16
17
18
19
G3
2
3
4
7
8
9
5
6
1
1
2
R8
10k
R9
10k
13
12
1
IC2f
R11
10k
R12
10k
R1
22k
C1
10n
1
2
1
IC2a
3
4
1
IC2b
R5
10k
R4
10k
B1
B80C1500
C3
470µ
25V
C2
10µ
63V
C4
100n
C5
100n
C6
100n
C7
100n
D0
D1
D2
D3
D4
D5
D6
D7
+5V
GND
SDA
SCL
STROBE PE
SDA
SCL
5V
2
7805
IC4
R10
1k
D1
IC1
20
10
IC2
14
7
IC3
14
7
5
6
1
IC2c
9
8
1
IC2d
11
10
1
IC2e
5V
5V
5V
5V
5V
5V
IC2, IC3 = 74LS06
000096 - 11
I C
Belegung der
EPP-Schnitstelle
Pin
Funktion
1 nWrite
2 Data
D0
3 Data
D1
4 Data
D2
5 Data
D3
6 Data
D4
7 Data
D5
8 DataD6
9 Data
D7
10
Intr
11
nWait
12
UserB1
13
XFlagUser3
14
nDStrb
15
UserB2
16
nInit
17
nAStrb
18...25
Masse
Belegung der
Ausgangsbuchse K2
Pin
Funktion
1 Strobe
2 PE
(Eingang)
3 SCL
5 SDA
7 Masse
9
+5 V (Ausgang)
11
Data D7
13
Data D6
15
DataD5
17
Data D4
19
Data D3
21
Data D2
23
Data D1
25
Data D0
der darzustellende Bereich wird mit den Reg-
lern StartShow und EndShow eingestellt. Die
gemessenen Werte können gespeichert und
auch wieder gelesen werden. Während einer
Messung wird Strobe (Pin 1 von K2) auf Low
gezogen.
Weiter besteht die Möglichkeit, extern die
Messung zu starten. Dazu muss die Check-
Box PE Trigger gesetzt sein. Die Messung
wird erst dann gestartet, wenn Pin 2 von K2
auf LOW geht.
(000096)rg
Verwendete Literatur:
Parallel Port Complete ,
Jan Axelson
Lakeview Research, ISBN 0-9650819-1-5
COMPUTER
26
Elektor
10/2000
Stückliste
Widerstände:
R1 = 22 k
R2...R9,R11,R12 = 10 k
R10 = 1 k
Kondensatoren:
C1 = 10 n
C2 = 10
µF/63 V stehend
C3 = 470
µF/25 V stehend
C4...C7 = 100 n keramisch
Halbleiter:
D1 = LED, high efficiency
IC1 = 74LS245
IC2,IC3 = 74LS06
IC4 = 7805
Außerdem:
K1 = 25-poliger Sub-D—Stecker für
Platinenmontage, gewinkelt
K2 = 26-poliger Pfostenverbinder mit Box
B1 = B80C1500 rund
Platine EPS 000096-1
Diskette EPS 000096-11
Disketten EPS 000096-12a...c
Td
data byte
Th
Tel
Tes
data
n Write
nD Strobe
n Wait
X Flag
n Init
nA Strobe
000096 - 12
Bild 2. Ein Lesevorgang über die EPP-Schnittstelle.
Bild 3. Die Hardware wird auf dieser kleinen Platine untergebracht.
(C) ELEKTOR
000096-1
B1
C1
C2
C3
C4
C5
C6
C7
D1
H1
H2
H3
IC1
IC2
IC3
IC4
K1
K2
R1
R2
R3
R4
R5
R6
R7
R8
R9
R10
R11
R12
~
~
SDA
SCL
T
*
000096-1
(C) ELEKTOR
000096-1
Inhalt der Disketten 000096-12a...c
Auf drei Disketten 000096-12a...c ist die Anwendung Logic-Analyser inklusive
sämtlicher DLLs sowie ein Setup-Programm zu finden. Damit kann der Logic-
Analyser auch auf einem Rechner ohne Visual Basic installiert und ausgeführt
werden.
Auf der Diskette EPS 000096-11 sind Sourcen, Forms sowie die erforderliche
I2C_DLL.DLL untergebracht. Der Inhalt dieser Diskette dient als Beispiel für die
Verwendung der DLL-Funktionen und wird benötigt, will man das Programm
ändern (siehe auch I2CEPP.BAS Version 2). Möchte man das Projekt auf seinem
Rechner mit VB bearbeiten, empfiehlt sich folgende Vorgehensweise:
1. Verzeichnis anlegen
(z.B. LA)
2. Alle Dateien der vier-
ten Diskette in das
Verzeichnis kopieren.
3. Die Datei
I2C_DLL.DLL in das
Verzeichnis WIN-
DOWS/SYSTEM
kopieren.
4. Unter VB Datei? Pro-
jekt öffnen und das
Projekt LA.VBP aus-
wählen.