Ich versuche es jetzt schon eine Weile, aber ich kann keinen EEPROM-Speicher finden, bei dem ein Adressbit einem GPIO zugeordnet ist. Oder aus einem anderen Blickwinkel, ein GPIO-Expander mit einem EEPROM-Speicher zum Speichern der Konfiguration.
Gibt es solche Geräte auf dem Markt?
BEARBEITEN: Natürlich wäre der einfachere Weg, eine MCU zu verwenden, aber das ist keine Option, da zusätzliche Abhängigkeiten erforderlich sind. Dies ist die erforderliche Funktionalität:
Eine CPU kann entweder von NOR-Flash 1 oder NOR-Flash 2 booten. Die einzige Möglichkeit, zwischen den Flashs umzuschalten, besteht darin, den #CS-Pin umzuschalten. Bevor die CPU bootet, muss die #CS-Pin-Info (0 oder 1) in der Hardware gesetzt werden. Dies kann durch die externe Entität erfolgen, die über einen GPIO und ein EEPROM verfügt. Die Konfiguration kann sich während der Laufzeit ändern, deshalb muss sie irgendwie programmierbar sein (dh über I2C). Also suche ich entweder nach einem EEPROM, das einen seiner adressierten Werte auf GPIOs abbildet (obwohl ich nur 1 brauche), oder ich suche nach einem GPIO, das mit (wie erwähnt) einem nichtflüchtigen Speicher erweitert ist. Auf diese Weise bleibt beim Einschalten der programmierte GPIO-Wert erhalten.
Das hat mehr Logik, aber das erklärt es auf den Punkt gebracht. Ich muss einfach einen Zustand eines GPIO (programmiert vor dem Herunterfahren) beim Einschalten beibehalten. Der gpio-Zustand muss theoretisch für unendlich gültig sein, deshalb ist das Laden eines Kondensators oder einer anderen Lösung ein No-Go.
Und ich glaube, ich habe eine Lösung für mein Problem gefunden: diesen Maxim DS4520 Non Volatile I/O Expander .
Afaik, der übliche Weg ist, Ihre Anforderungen in zwei Teile aufzuteilen:
Die typischen Schritte sind:
Und natürlich müssen Sie Code schreiben, um die Konfiguration zu ändern.
Während es scheint, dass Sie eine kommerzielle Option gefunden haben, die Ihren Anforderungen entspricht, besteht die andere Alternative darin, Ihre eigene zu rollen. Ein Allzweck-Mikrocontroller mit NVram oder EEPROM kann als digitaler Port-Expander fungieren. Es gibt mehrere Bibliotheken online, um eine solche schnell bereitzustellen. Es ist im Grunde trivial für jeden mit Mikrocontroller-Erfahrung. Dies gibt Ihnen mehr Spielraum als ein speziell entwickeltes, da Sie möglicherweise kein i2c möchten oder mehr oder weniger Ports benötigen oder andere Funktionen benötigen.
Lior Bilia
Lukasz Przeniosło
Ilja
Passant
Lukasz Przeniosło