Ich bin sehr neu in der Elektronik und habe das Gebiet des I2C-Busses betreten. Sie möchten das Verhalten konformer Geräte gemäß der I2C-Protokollspezifikation verstehen.
Eine Bedingung gemäß dem Link unten ist, wenn ein Master-Controller während einer Transaktion zurückgesetzt wird. Das heißt, der verlobte Sklave weiß nicht, was er jetzt tun soll.
https://www.i2c-bus.org/i2c-primer/analysing-obscure-problems/blocked-bus/
Ich verstehe nicht, wie diese Anrufe für den Bus hängen? Der neu gestartete Master könnte immer eine neue Transaktion starten und die Slaves sollten sie lesen können.
Gibt es eine andere Möglichkeit zusätzlich zu dem, was oben erklärt wurde, um ein Hängenbleiben des Busses zu verursachen?
Kann ein solches Problem durch einen Softwaretreiber verursacht werden?
Der Master kann keine Start- oder Stoppbedingung ausgeben, während irgendein Slave SCL oder SDA antreibt. Wenn sich nur ein Slave auf dem Bus befindet, wäre das Worst-Case-Szenario, wenn der Master zurückgesetzt wird, nachdem der Slave gerade eine "Lese" -Anforderung erhalten hat, diese gerade bestätigt hat und vollständig eingestellt ist als Antwort eine "0" senden. In diesem Szenario würde der erste Takt über die Bestätigung hinausgehen, und die nächsten acht würden über die Datenbits hinausgehen, und das Gerät würde SDA kontinuierlich treiben, bis es den neunten Takt empfängt. Nachdem die Uhr zum neunten Mal hoch und dann wieder niedrig geht, würde das Gerät den Bus schweben lassen (wenn es dies nicht schon vorher getan hätte), um nach einer Bestätigung vom Master zu suchen.
Wenn mehrere Slave-Geräte vorhanden sind, könnte ein Bus dauerhaft gesperrt werden, wenn zwei Geräte beide glauben, dass sie Befehle zum Auslesen einer Zeichenfolge von Null-Bytes erhalten haben, aber (möglicherweise weil der Master zu einem Zeitpunkt zurückgesetzt wurde, der zu einem "Runt " Puls auf SCL, der lang genug war, um von einem Slave gesehen zu werden, aber nicht vom anderen) geben die beiden Slaves den Bus zu unterschiedlichen Zeiten frei, wenn sie nach Bestätigungen vom Master suchen.
Eugen Sch.
Toni M
Das Photon
letzte Ursache