Startseite   |  Site map   |  A-Z artikel   |  Artikel einreichen   |   Kontakt   |  
  


informatik artikel (Interpretation und charakterisierung)

Impulsdiagramme + spezifikationen


1. Java
2. Viren



Timing-Spezifikationen r / Parameter Symbol min. Max. Einheit

SCL Taktfrequenz

SCL-clockfrequency


fSCL


100
kHz
Zeit in der Bus frei bis wieder Übertragung starten kann
Bus free time tBUF 4,7 - µs
Haltezeit nach Startbedingung (Zeit bis erster Takt generiert wird)
Start condition hold time tHD;STA 4,0 - µs

LOW-Periode des Taktes
SCL-LOW period

tLOW 4,7 - µs
HIGH-Periode des Taktes

SCL-HIGH period
tHIGH 4,0 - µs
Zeitdifferenz zwischen SCL->HIGH u. Startbed.
(bei Repeated Start -Bedingung)
Start condition set-up time tSU:STA 4,7 - µs
Haltezeit der gültigen Daten nach SCL-Impuls

(für C-Bus kompatible Master
Data hold time tHD:DAT 0

5 -
- µs

µs)
Vorhaltezeit der gütigen Daten vor SCL-Impuls

Data set-up time
tSU:DAT 250 - ns

Anstiegszeit (SDA und SCL-Flanken)
Rise time

tR - 1 µs
Abfallszeit (SDA und SCL-Flanken)

Fall time
tF - 300 ns
Zeitdifferenz zwischen SCL->HIGH u. Stopbed.
Stop condition set-up time

tSU:STO 4,7 - µs




START-Bedingung


Kurze Erklärung

. START: Clock - Leitung HIGH  Datenleitung wechselt von HIGH auf LOW
. START Bedingung wird immer vom Master generiert.

. An den Bus angeschlossenen ICs (gewisse Geräte) können die START Bedingung leicht erkennen, weil sie das richtige Interface besitzen.
Mikrocomputer ohne ein solches Interface müssen die Datenleitung zwei mal pro Periode abtasten, um den Übergang zu erkennen.


Spezifikationen

tBUF min 4,7µs .......... BUS FREE TIME Zeit , die der Bus frei sein muß, bevor wieder eine

Übertragung gestartet werden kann

tHD;STA min 4,0µs .......... START CONDITION HOLD TIME Haltezeit nach Startbedingung (Zeit bis
erster Takt generiert wird)



LOW und HIGH Zustände - Mastertakt


Kurze allgemeine Erklärung



Der Takt beim I²C-Bus hat eine minimale LOW-Periode von 4,7µs und eine minimale HIGH-Periode von 4µs. In diesem Mode kann ein Master einen Takt mit einer Frequenz von bis zu fmax=100kHz erzeugen.
Alle an den Bus angeschlossenen Geräte müssen aber in der Lage sein, diese Frequenz zu verarbeiten - gegebenenfalls muß der Takt synchronisiert werden  d.h. der Master wird in einen WAIT STATE gebracht. Dadurch wird die LOW-Periode ausgedehnt. Daraus ergibt sich natürlich eine Verminderung der Frequenz.


Spezifikationen

tLOW min 4,7µs .......... SCL-LOW period LOW-Periode des Taktes
tHIGH min 4,0µs .......... SCL-HIGH period HIGH-Periode des Taktes



Zeitspezifikationen bei Datentransfer


Allgemein
Daten dürfen nur während der LOW-Periode des Taktes geändert werden (ausgenommen START- und STOP-Bedingungen).


Spezifikationen

tLOW min 4,7µs .......... SCL-LOW period LOW-Periode des Taktes
tHIGH min 4,0µs .......... SCL-HIGH period HIGH-Periode des Taktes

tHD;DAT 0µs .......... DATA HOLD TIME Haltezeit der gültigen Daten nach einer
(negativen) SCL-Flanke

( 5µs .......... DATA HOLD TIME Haltezeit der gültigen Daten nach einer
(negativen) SCL-Flanke  für C kompatible Master )
tSU;DAT min 250ns .......... DATA SET-UP TIME Vorhaltezeit der gültigen Daten vor einer
(positiven) SCL-Flanke



STOP Bedingung


Kurze Erklärung

. STOP: Clock - Leitung HIGH  Datenleitung wechselt von LOW auf HIGH

. STOP Bedingung wird immer vom Master generiert.

. Auch hier gilt: An den Bus angeschlossenen ICs können die STOP Bedingung leicht erkennen, weil sie das richtige Interface besitzen. Mikrocomputer ohne ein solches Interface müssen die Datenleitung zwei mal pro Periode abtasten, um den Übergang zu erkennen.


Spezifikationen
tSU;STO min 4,7µs .......... STOP CONDITION SET-UP TIME Zeitdifferenz zwischen positiver Flanke

SCL und der STOP-Bedingung
RISE- UND FALL - TIME


Spezifikationen



tR max. 1µs .......... RISE TIME Anstiegszeiten für SDA- und SCL-Flanken

tF max. 300ns .......... FALL TIME Abfallzeiten für SDA- und SCL-Flanken



Repeated start


Spezifikationen



tSU;STA min. 4,7µs .......... SCL HIGH Zeitdifferenz zwischen der (positiven) Flanke des
Taktes und der Startbedingung (Repeated Start

Bedingung !)






1.2 PROGRAMM:
;#############################################
;############### I2C Slave ###################
;#############################################
;### Christoph Auer,Christian Steinbrecher ###
;############### 5HNA 1997/98 ################
;#############################################

;#############################################
;############## Zuweisungen ##################
;#############################################


hauptpr code 8100h
unter code 8200h

charout code 3000h
binout code 301eh

binbit code 3018h
charin code 302ah

cursor equ 59h
home equ 48h

erase equ 4Ah
esc equ 1Bh

left equ 44h
down equ 42h
auer equ 10000000b ;Adresse des Slave-Receivers
enter equ 3003h

dat bit 01b
sda bit p1.7 ;Port für die softwaresimulierte SDA-Leitung
scl bit p1.6 ; -\"- SCL-Leitung

;#############################################
;############# Startbedingung ################
;#############################################


org hauptpr


haupt: jnb scl,haupt ;SCL=HIGH


X1: jnb sda,haupt ;SDA=HIGH

anf: jnb scl,haupt ;SCL immer noch HIGH
jb sda,anf ;SDA HIGH->LOW Übergang

mov R1,#00h ;R1 \"leeren\"
mov R2,#00h ;R2 \"leeren\"
mov R3,#8h ;R3 für 8 Durchläufe setzen (1byte)

;#############################################
;############## Adressabfrage ################
;#############################################


X2: setb scl ;SCL freigeben

X3: jnb scl,x3 ;positive Clockflanke zur Datenübernahme


X4: mov c,sda ;Daten übernehmen
nop ;minimale HIGH-Zeit=4µs
clr scl ;Clock auf LOW ziehen (\"Master bremsen\")

mov A,R2 ;gesicherten Akku laden
rlc A ;Daten (Carry-Bit) bitweise (MSB...LSB) in den
;Akku schreiben (rotieren)

mov R2,A ;Akku (Daten) sichern
djnz r3, x2 ;8x wiederholen (8bit=1byte)

X5: mov R4,#auer ;lädt eigene Adresse in R4

mov A,R2 ;gesicherten Akku laden
subb A,R4 ;vergleicht die angelegten Daten=Adresse mit der

;eigenen Adresse
jnz haupt ;bei Übereinstimmung weiter, wenn nicht warten auf neue

;Startbedingung
;#############################################
;############### Acknowledge #################
;#############################################

ack: clr sda ;Daten auf LOW ziehen

setb scl ;Takt freigeben
ack11: jnb scl,ack11 ;warten bis Clock auf HIGH (Acknowledge Bit: Daten=LOW

;während SCL-HIGH-Phase)
ack12: jb scl,ack12 ;halten der Datenleitung auf LOW bis Clockleitung LOW

setb sda ;Datenleitung freigeben

;#############################################
;############### Datenempfang ################
;#############################################

empfang: mov R3,#8h ;R3 für 8 Durchläufe setzen (1byte)
mov R1,#0h ;R1 \"leeren\"
mov R4,#2h ;Stopbedingung 2x abtasten


X6: setb scl ;SCL freigeben

X7: jnb scl,x7 ;postive Taktflanke (SCL LOW->HIGH) zur Datenübernahme


X8: mov c,sda ;Daten übernehmen
jb sda,x98 ;wenn sda=HIGH, dann sicher keine Stop-Bed.

x99: jnb scl,x98 ;scl=HIGH

jb sda,haupt ;sda:low->high
djnz R4,x99 ;2x abtasten

x98: clr scl ;Clock auf LOW ziehen (\"Master bremsen\")

mov A,R1 ;gesicherten Akku laden
rlc A ;Daten (Carry-Bit) bitweise (MSB...LSB) in den Akku

;schreiben (rotieren)
mov R1,A ;Akku (Daten) sichern

djnz R3,X6 ;8x wiederholen (1byte)

mov A,R1 ;gesicherten Akku laden

call charout ;Ausgabe am Bildschirm

;#############################################
;############### Acknowledge #################
;#############################################


ack2: clr sda ;Daten auf LOW ziehen

setb scl ;Takt freigeben
ack21: jnb scl,ack21 ;warten bis Clock auf HIGH (Acknowledge Bit: Daten=LOW

;während SCL-HIGH-Phase)
ack22: jb scl,ack22 ;halten der Datenleitung auf LOW bis Clockleitung LOW
setb sda ;Datenleitung freigeben
jmp empfang ;Sprung zur Empfangsroutine=Warten auf neue Daten

;#############################################


end


1.3 TIMING-DIAGRAMM:


Programm Zeit/Befehl SDA SCL
;###########################################

0 1
0 1
;############# Startbedingung ################
;###########################################


org hauptpr

haupt: jnb scl,haupt 2µs

X1: jnb sda,haupt 2µs

anf: jnb scl,haupt 2µs

jb sda,anf 2µs
mov R1,#00h 1µs

mov R2,#00h 1µs
mov R3,#8h 1µs

;###########################################
;############## Adressabfrage ################
;###########################################

X2: setb scl 1µs

X3: jnb scl,x3 2µs

X4: mov c,sda 1µs

nop 1µs
clr scl 1µs

mov A,R2 1µs

rlc A 1µs

mov R2,A 1µs

djnz r3, x2 2µs


X5: mov R4,#auer 1µs

mov A,R2 1µs

subb A,R4 1µs


jnz haupt 2µs

;###########################################
;############### Acknowledge ################
;###########################################


ack: clr sda 1µs

setb scl 1µs

ack11: jnb scl,ack11 2µs


ack12: jb scl,ack12 2µs
setb sda 1µs

;###########################################
;############### Datenempfang ###############
;###########################################

empfang: mov R3,#8h 1µs

mov R1,#0h 1µs
mov R4,#2h 1µs

X6: setb scl 1µs

X7: jnb scl,x7 2µs

X8: mov c,sda 1µs

jb sda,x98 2µs


x99: jnb scl,x98 2µs
jb sda,haupt 2µs

djnz R4,x99 2µs


x98: clr scl 1µs

mov A,R1 1µs

rlc A 1µs


mov R1,A 1µs
djnz R3,X6 2µs

mov A,R1 1µs
call charout 1,x ms

;###########################################
;############### Acknowledge ################
;###########################################

ack2: clr sda 1µs

setb scl 1µs
ack21: jnb scl,ack21 2µs

ack22: jb scl,ack22 2µs

setb sda 1µs
jmp empfang 2µs

;###########################################


end


1.4 ZUSTANDSDIAGRAMM (F. XILINX-SCHALTUNG)


1.5 BLOCKSCHALTBILD





1.6 GRAY-CODE-COUNTER (9 NEGATIVE FLANKEN)
Dieser Zähler ist kein richtiger Gray-Code-Zähler, weil sich vom 9. Auf den 1.Zustand 2Bits ändern. Dies ist jedoch unerheblich, da bei diesem Übergang nicht der wichtige Zustand 8 erreicht werden kann (hier wird das Schieberegister ausgelesen und das ACK "gesendet").



QN+1 QN
D C B A D C B A

1 0 0 0 0 0 1 0 1
2 0 0 0 1 0 0 0 0

3 0 0 1 1 0 0 0 1
4 0 0 1 0 0 0 1 1

5 1 0 1 0 0 0 1 0
6 1 0 0 0 1 0 1 0

7 1 1 0 0 1 0 0 0
8 1 1 0 1 1 1 0 0

9 0 1 0 1 1 1 0 1


A
2 3 4 5

1

C

D 8 9

7 6

B


A

1 1 0 0
X 0 X X

C

D 1 1 X X
0 X X 0

B
A=/B*/C*/D+C*D






A

0 1 1 1
X 0 X X

C


D 0 0 X X
0 X X 0

B
B=A*/B*/C+B*/D


A

0 0 0 0
X 0 X X

C

D 1 1 X X
1 X X 0

B

C=/B*D


A

0 0 0 1
X 0 X X

C


D 1 0 X X
1 X X 1

B
D=/A*B+/A*/B*D



 
 



Datenschutz
Top Themen / Analyse
indicator Anwendung von Expertensystemen
indicator Hard Disk
indicator Voxel-Spacing:
indicator Beispielprogramm für die serielle Daten¬übertragung mit dem 8251
indicator Festplatten-
indicator How to ged rid of trojan horses
indicator Aufruf von Routinen im installierten TSR
indicator Vergleich zwischen CRT und TFT
indicator RAID 3 oder Byte Striping with Parity
indicator How to prevent trojan horse infections




Datenschutz
Zum selben thema
icon Netzwerk
icon Software
icon Entwicklung
icon Windows
icon Programm
icon Unix
icon Games
icon Sicherheit
icon Disk
icon Technologie
icon Bildung
icon Mp3
icon Cd
icon Suche
icon Grafik
icon Zahlung
icon Html
icon Internet
icon Hardware
icon Cpu
icon Firewall
icon Speicher
icon Mail
icon Banking
icon Video
icon Hacker
icon Design
icon Sprache
icon Dvd
icon Drucker
icon Elektronisches
icon Geschichte
icon Fehler
icon Website
icon Linux
icon Computer
A-Z informatik artikel:
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z #

Copyright © 2008 - : ARTIKEL32 | Alle rechte vorbehalten.
Vervielfältigung im Ganzen oder teilweise das Material auf dieser Website gegen das Urheberrecht und wird bestraft, nach dem Gesetz.
dsolution