Hallo zusammen, ich frage mich gerade, ob es möglich ist, einen µC mit zwei I2C-Peripherieeinheiten (z.B. STM32F103) transparent in einen I2C-Bus einzuschleusen. Im Normalfall soll er sich in die Bus-Kommunikation nicht einmischen - nur bestimmte Bus-Nachrichten manipulieren. Desgleichen bei einem SPI-Bus. Erst einmal völlig transparent den Bus durchschleifen, aber bestimmte Kommandos filtern und verändern. 1. Sind die Hardware-SPI und I2C für so einen Zweck geeignet, oder müßte man soetwas als Bitbanging-Treiber selbst zusammenassemblern? 2. Hat soetwas schon jemand gemacht? Ich suche (noch) keine Anleitung, sondern erst einmal eine Einschätzung zur Machbarkeit. Viele Grüße W.T.
Walter T. schrieb: > 1. Sind die Hardware-SPI und I2C für so einen Zweck geeignet, oder müßte > man soetwas als Bitbanging-Treiber selbst zusammenassemblern? So etwas dürfte unabhängig vom Controller mit Hardware-I²C schwierig sein, denn wenn er auf der Empfangen-Seite eine Adresse empfängt muss er ja wissen ob er das ACK-Bit als 1 oder 0 senden muss, was er aber nur kann wenn er bereits die Adresse auf der Sende-Seite abgesendet hat. Mit anderen Worten: Jedes Adressbit muss direkt weitergereicht werden, und dann superschnell das ACK-Bit zurückgereicht. Hardware-I²C-Einheiten können so etwas generell nicht da unnötig für typische I²C-Anwendungen.
I2C und SPI sind bidirektional, da kannst Du keine Nachrichten manipulieren. Du kannst bestenfalls dem Master vorgaukeln, Du seiest der Slave, die Nachricht puffern und dann weitersenden. Schwierig wird es aber vom Slave zum Master. Du kannst ja nicht hellsehen, was der Master gerade vom Slave lesen will und es vorher vom Slave abholen.
Peter D. schrieb: > Du kannst ja nicht > hellsehen, was der Master gerade vom Slave lesen will und es vorher vom > Slave abholen. Stimmt. Daran habe ich nicht gedacht. Zumindest, solange es keine Busy-Leitung gibt. Aber in jedem Fall erfolgt es nicht mehr 100% transparent.
Hi Ein I2C konformer master sollte clock stretching unterstützen. Damit kann dann dein Gateway den Master anhalten bis eine Antwort vom Slave da ist. Das ist auf der Protokollebene komplett transparent ändert aber das Timing. Und nicht alle Master unterstützen clock stretching. Matthias
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.