Forum: Mikrocontroller und Digitale Elektronik I2C Anfängerfrage Datenübertragung


von Timo D. (td79)


Lesenswert?

Hallo ich möchte über I2C beliebig viele Daten übertragen.Leider hat 
mein Prosessor nur nur ein 4 Byte grossen FIFO.Kann mir irgend jemand 
eine Tipp geben wie ich dies umgehen kann?

von Schrotty (Gast)


Lesenswert?

ein SW-FIFO schreiben, dass dann das HW-FIFO "füttert" :-)

von Peter D. (peda)


Lesenswert?

I2C-Controller mit FIFO sind mir nicht bekannt, wäre auch nicht wirklich 
praktikabel.

I2C arbeitet paketorientiert (Start, Adresse, Datenbytes 0 .. n, Stop).
D.h. wenn Du nen SW-Puffer einrichtest, sollte der ein ganzes Paket 
fassen können.
Ansonsten nützt Dir der Puffer nichts, da dann doch der Master wieder 
auf den Slave warten muß (SCL-stretching).


Peter

von Schrotty (Gast)


Lesenswert?

wie Peter schon sagte, ist es genaugenommen kein FIFO, sondern einfach 
ein Speicher, dessen Inhalt versendet wird.

Wenn du Pakete versenden willst, die größer als die 4 Byte sind (davon 
geh ich jetzt mal aus), dann kannst du erst manuell die Start-Condition 
erzeugen (gibt´s in der Regel irgendein Flag, das man setzen muss) und 
danach wird der Inhalt der 4 Register (oder ggf auch weniger, wenn 
entsprechend konfiguriert) versendet.
Danach folgen dann deine Daten in 4Byte großen Paketen.
Am Ende der Übertragung stzt du eine Stop-Condition.

Du sendest also eine Start-Condition und dann teilst du dein Telegramm 
in 4Byte große Häppchen auf und versendest die einfach nacheinander. 
Wenn du damit fertig bist, kommt noch die Stopp-Condition

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.