Gast
#3800782
Hallo, ich bin gerade dabei etwas mit I2C zu machen und habe etwas Probleme. Die Software verhält sich sehr merkwürdig, spruckt irgendwelche Fehler aus wie "Arbitartion lost" und "Controller timed out". Als ich mir mit nem Logick Analyzer das Signal angesehen habe, stellt ich fest, dass einen Moment (einige Abfragen) bevor alles gegen die Wand fährt Fehler im I2C-Protokoll zu sein scheinen. Ich habe zwei Bilder angehängt, Ack.png beschreibt den Fall wie der Befehl, der an den Slave gesendet wird aussehen sollte. Nack zeigt den Fall, wenn der Slave die Anfrage mit einem Nack ablehnt, was sein gutes Recht ist. Jedoch folgt danach kein Stop und der nächste Start wird - zumindest von PulseView - als Repeated Start interpretiert. Zählt man die Takte in beiden Fällen, fällt auf, dass im Falle des Nack einer weniger ist. Auch interessant ist: Ist alles abgeschmiert und nichts passiert mehr und ich ziehe die CLK Leitung einmal manuell auf low geht alles weiter als wäre nichts gewesen. Sprich irgendwem - ich vermute fast dem Host - fehlt ein Takt, um weiter zu machen. Aber wieso fehlt dem ein Takt, der erzeugt die doch selbst??? Hat irgendjemand eine Idee woher das kommen kann? Bei dem Host handelt es sich um einen ARM DM3730 mit Linux, der Slave ist ein Touch-Controller. Ich würge direkt im Kernel an einem Treiber dafür rum. MfG

