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?
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.