-
Technischer Bereich
-
Diese Offenbarung bezieht sich allgemein auf die Konfigurierung serieller Geräte.
-
Hintergrund
-
Ein I2C-Bus (Inter-Integrated Circuit Bus) ist ein multimaster, multislave, einendiger, serieller Computerbus, der häufig für den Anschluss von Peripheriegeräten mit niedriger Geschwindigkeit (z.B. serielle Speichergeräte) an Computer-Motherboards und eingebettete Systeme verwendet wird. Das I2C-Protokoll stellt keine Mechanismen zur Änderung des internen Verhaltens eines Peripheriegeräts zur Verfügung, was dazu führt, dass unterschiedliche Versionen von seriellen Geräten für verschiedene Anwendungen hergestellt werden.
-
Aus der
DE 699 31 745 T2 ist ein Verfahren zur automatischen Konfiguration von Computerperipheriegeräten bekannt. Hierfür verfügt ein Computersystem über eine spezielle Gerätekonfigurationssoftware, die ausgeführt wird, wenn ein neues Gerät installiert wird oder wenn eine Konfigurationsänderung erwünscht ist. Hierbei werden Peripherietreiberbefehle unter Verwendung eines speziellen Protokolls erzeugt, die von dem Peripheriegerät verarbeitet werden können.
-
Die
US 7 043 569 B1 beschreibt ein Verfahren und ein System zur Konfiguration einer Verbindungseinrichtung über eine Konfigurationsschnittstelle. Hierbei werden in einem nicht flüchtigen Speicher vorgespeicherte Konfigurationsdaten auf Anforderung über eine spezielle Konfigurationsschnittstelle abgerufen.
-
Zusammenfassung
-
Es werden Systeme, Verfahren, Schaltungen, Geräte und computerlesbare Medien zur Konfigurierung von seriellen Geräten offenbart. Der vorliegenden Erfindung liegt die Aufgabe zu Grunde, ein verbessertes Verfahren zur Konfiguration eines Peripheriegeräts mittels eines Bussystems und ein entsprechendes Gerät zur Verfügung zu stellen. Diese Aufgabe wird mit den Merkmalen der unabhängigen Patentansprüche gelöst.
-
In manchen Implementierungen umfasst ein Gerät: Einen Eingang zum Empfangen von ersten und zweiten Anforderungen von einem seriellen Bus; einen Decoder, der mit dem Eingang gekoppelt ist und dazu konfiguriert ist, festzustellen, ob entweder die erste oder die zweite Anforderung eine Konfigurationsmodusanforderung ist; eine Steuereinheit, die mit dem Decoder gekoppelt ist und dazu konfiguriert ist: Als Reaktion auf eine Feststellung, dass die erste Anforderung eine Konfigurationsmodusanforderung ist, einen Konfigurationsblock mit Konfigurationsdaten zu programmieren, die von dem seriellen Bus erhalten wurden, und ein Geräteverhalten gemäß den Konfigurationsdaten zu ändern; und als Reaktion auf eine Feststellung, dass die zweite Anforderung nicht eine Konfigurationsmodusanforderung ist, eine oder mehrere Aktionen gemäß der zweiten Anforderung auf dem Gerät auszuführen.
-
In manchen Implementierungen umfasst ein Verfahren: Empfangen, durch das Gerät, einer ersten und einer zweiten Anforderung von einem seriellen Bus; Feststellen, durch eine Decoderschaltung, ob entweder die erste oder die zweite Anforderung eine Konfigurationsmodusanforderung ist; als Reaktion auf eine Feststellung, dass die erste Anforderung eine Konfigurationsmodusanforderung ist: Programmieren, durch die Steuereinheit des Geräts, eines Konfigurationsblocks mit Konfigurationsdaten, die von dem seriellen Bus erhalten werden, und Ändern, durch die Steuereinheit des Geräts, eines Geräteverhaltens gemäß den Konfigurationsdaten; und als Reaktion auf eine Feststellung, dass die zweite Anforderung nicht eine Konfigurationsmodusanforderung ist: Durchführen, durch eine Steuereinheit des Geräts, von einer oder mehreren Aktionen gemäß der zweiten Anforderung.
-
In manchen Implementierungen hat ein nicht-transitorisches, computerlesbares Speichermedium Anweisungen gespeichert, die bei ihrer Ausführung durch einen oder durch mehrere Prozessoren eines Geräts den einen oder die mehreren Prozessoren des Geräts dazu veranlassen, Operationen auszuführen, die umfassen: Empfangen, durch das Gerät, einer ersten und einer zweiten Anforderung von einem seriellen Bus; Feststellen, durch eine Decoderschaltung, ob entweder die erste oder die zweite Anforderung eine Konfigurationsmodusanforderung ist; als Reaktion auf eine Feststellung, dass die erste Anforderung eine Konfigurationsmodusanforderung ist: Programmieren, durch die Steuereinheit des Geräts, eines Konfigurationsblocks mit Konfigurationsdaten, die von dem seriellen Bus erhalten werden, und Ändern, durch die Steuereinheit des Geräts, eines Geräteverhaltens gemäß den Konfigurationsdaten; und als Reaktion auf eine Feststellung, dass die zweite Anforderung nicht eine Konfigurationsmodusanforderung ist: Durchführen, durch eine Steuereinheit des Geräts, von einer oder von mehreren Aktionen gemäß der zweiten Anforderung.
-
Kurze Beschreibung der Zeichnungen
-
- 1 ist ein konzeptionelles Blockdiagramm eines seriellen Speichergeräts mit einem Konfigurationsmodus.
- 2A und 2B zeigen beispielhafte Schreibübertragungssequenzen zum Schreiben auf ein serielles Speichergerät.
- 2C und 2D zeigen beispielhafte Leseübertragungssequenzen zum Lesen eines seriellen Speichergeräts.
- 3 ist ein Flussdiagramm eines Beispielprozesses zur Konfigurierung eines seriellen Speichergeräts.
-
Detaillierte Beschreibung
-
Die vorliegende Beschreibung ist ein beispielhaftes serielles Gerät, das einen Konfigurationsmodus zur Änderung des internen Verhaltens des seriellen Geräts enthält. In diesem Beispiel ist das serielle Gerät ein EEPROM (Electrically Erasable and Programmable Read-Only Memory), auf das durch ein Mastergerät über einen seriellen Bus unter Verwendung des I2C-Protokolls zugegriffen wird. Die offenbarten Implementierungen können an andere serielle Geräte oder serielle Protokolle angepasst werden, wenn es gewünscht ist, das interne Verhalten eines seriellen Geräts zu ändern.
-
Beispielarchitektur eines seriellen Geräts
-
1 ist ein konzeptionelles Blockdiagramm eines seriellen Speichergeräts 100, das einen Konfigurationsmodus hat. In manchen Implementierungen kann das serielle Speichergerät 100 ein Speicherfeld 101, einen Start/Stopp-Detektor 102, ein Schreibschutzsteuermodul 103, einen POR (power-on-reset)-Generator 104, ein Speichersystemsteuermodul (memory system control module, MSCM) 105, eine Hochspannungserzeugungsschaltung 106, ein Eingabe/Ausgabe-Steuermodul 107, Adressregister und Zähler 108, einen Hardware-Adresskomparator 109 und einen Sensor 113 enthalten.
-
Das Speicherfeld 101 besteht aus Bits des EEPROM. Daten werden in das Speicherfeld 101 geschrieben und aus diesem gelesen, indem Spalten- und Zeilendecoder 114, 115 verwendet werden. Das EEPROM ist ein nicht flüchtiger Speicher, was bedeutet, dass die Daten nach Abschalten der Stromversorgung erhalten bleiben. Das Speicherfeld 101 kann in eine Reihe von Speicherzonen aufgeteilt werden, wie dies untenstehend im Einzelnen beschrieben wird.
-
Der Start/Stopp-Detektor 102 überwacht den Zustand der Datenleitung (SDA) und der Taktleitung (SCL), um nach Start- und Stopp-Signalen Ausschau zu halten. SDA und SCL umfassen einen seriellen Bus. Starts und Stopps sind in dem I2C-Protokoll als Änderungen auf der SDA-Leitung definiert, wenn SCL high ist.
-
Die Schreibschutzsteuerung 103 überwacht den Zustand des Schreibschutzeingangs (WP-Anschluss) und leitet dieses Zustand an MSCM 105 weiter. MSCM 105 verwendet die WP-Eingabe, um zu entscheiden, ob eine gegebene Schreiboperation auf dem Speicherfeld 101 erlaubt oder abgebrochen werden soll.
-
Der POR-Generator 104 ist eine Schaltung, die verhindert, dass das serielle Speichergerät 100 im falschen Zustand hochfährt. Der POR-Generator 104 wird verwendet, um verschiedene Schaltungen in dem seriellen Speichergerät 100 in einen sicheren Default-Zustand zu versetzen. Der POR-Generator 104 überwacht den Zustand der Versorgungsspannung VCC. Der POR-Generator 104 ist dazu ausgelegt, das serielle Speichergerät 100 in einen zurückgesetzten Zustand zu versetzen und diesen bei einem VCC-Pegel zu beenden, bei dem andere Schaltungen des seriellen Speichergeräts 100 sicher und korrekt arbeiten können.
-
MSCM 105 steuert Funktionen des seriellen Speichergeräts 100 mit einer (nicht dargestellten) Zustandsmaschine. MSCM 105 empfängt Eingaben von anderen Schaltungen in dem seriellen Speichergerät 100, um festzustellen, wie das serielle Speichergerät 100 auf verschiedene Ereignisse reagieren oder nicht reagieren soll.
-
Die Hochspannungserzeugungsschaltung 106 vervielfacht die VCC-Pegeleingabe auf einen oder mehrere höhere Pegel, die durch die Decodierungsschaltung (Zeilendecoder, Spaltendecoder) am Speicherfeld 101 verwendet werden sollen. Das Schreiben und Löschen des Speicherfelds 101 erfordert eine Spannung, die höher ist als die durch VCC zur Verfügung gestellte.
-
Das Eingabe/Ausgabe-Steuermodul 107 empfängt das aktuelle Bit, das von der SDA-Leitung in das serielle Speichergerät 100 hereinkommt, und das aktuelle Bit, das das serielle Speichergerät 100 über die SDA-Leitung herausschiebt. Ausgehende Daten werden von dem Datenregister 110 an die SDA-Leitung geschoben. Eingehende Daten werden von der SDA-Leitung aufgefangen und an das Datenregister 110 gesendet.
-
Adressregister und Zähler 108 umfassend ein Register, das die aktuelle Speicheradresse hält, auf die zugegriffen wird, und zeigt auf die nächste Speicheradresse (N+1) für nachfolgende Speicherzugriffsoperationen.
-
Der Hardware-Adresskomparator 109 überwacht den Zustand der Hardware-Adressanschlüsse (A0, A1 und A2). Diese Zustände werden an MSCM 105 gesendet, welches diese Werte mit den Werten vergleicht, die auf dem SDA-Bus während des anfänglichen Zugriffs auf das Gerät 100 aufgefangen wurden, um festzustellen, ob das Protokoll auf dem seriellen Bus für das Gerät 100 bestimmt ist.
-
Gemäß dem I2C-Protokoll kann ein (nicht dargestelltes) Mastergerät einen Speicherzugriffsbefehl (eine Lese- oder Schreibanforderung) an das serielle Speichergerät 100 senden, um das Speicherfeld 101 zu schreiben oder zu lesen. Für eine Schreibanforderung, und nach einem START-Signal, sendet das Mastergerät auf dem seriellen Bus die Adresse für das Speichergerät 100 mit einem gelöschten Richtungsbit (Schreiben), gefolgt von einer Zwei-Byte-Speicheradresse. Das Mastergerät sendet dann Datenbytes an das serielle Speichergerät 100, die in das Speicherfeld 101 geschrieben werden sollen, beginnend an der Zwei-Byte-Speicheradresse, gefolgt von einem STOPP-Signal. Wenn mehrere Bytes geschrieben werden, liegen die Bytes in der gleichen n-Byte-Seite (z.B. 32-Byte-Seite). Während das serielle Speichergerät 100 diese Bytes in das Speicherfeld 101 speichert, antwortet das serielle Speichergerät 100 nicht auf weitere I2G-Anforderungen von dem Mastergerät oder anderen Mastergeräten.
-
Für eine Leseanforderung, und nach einem START-Signal, schreibt das Mastergerät die Adresse des Speichergeräts 100 mit einem gelöschten Richtungsbyte (Schreiben) und dann die zwei Bytes der Speicherdatenadresse. Das Mastergerät sendet dann ein wiederholtes START-Signal und die Adresse des Speichergeräts 100 mit gesetztem Richtungsbit (Lesen). Das serielle Speichergerät 100 antwortet dann mit den Datenbytes beginnend an der angegebenen Speicheradresse. Das Mastergerät gibt mit Ausnahme des letzten Bytes nach jedem gelesenen Byte ein ACK aus und gibt dann ein STOPP-Signal aus. Das serielle Speichergerät 100 erhöht die Adresse nach jedem übertragenen Datenbyte. Mehrfachbyte-Leseoperationen können den gesamten Inhalt des Speicherfelds 101 unter Verwendung einer kombinierten Nachricht abrufen.
-
Konfigurationsmodus
-
In manchen Implementierungen ist das serielle Speichergerät 100 dazu konfiguriert, einen Konfigurationsmodus auf dem seriellen Speichergerät 100 zu implementieren, der es ermöglicht, bestimmte Verhaltensweisen des Geräts durch Schreibanforderungen zu ändern, ohne externe hohe Spannungen (z.B. 10V+) zu benötigen. Beispiele für Verhaltensweisen des Geräts, die im Konfigurationsmodus geändert werden können, umfassen, sind aber nicht beschränkt auf: Speicherfeldschutz, Sperren der gegenwärtigen Konfiguration, Sperren der Hardware-Adressanschlüsse, Sperren des Konfigurationsmodus, UVLO (under-voltage lock out)-Steuerung und Gerätezustandsreporting. In manchen Implementierungen ist der Konfigurationsmodus durch einen Konfigurationsblock 112 implementiert, der in einem Teil des Speicherfelds 101 befindlich ist, der während einer Schreibanforderung unter Verwendung eines ausgewählten seriellen Protokolls (z.B. I2C) programmiert werden kann, wie dies im Zusammenhang mit den 2A und 2B beschrieben wurde. In manchen Implementierungen kann der Konfigurationsblock 112 ein oder mehrere Konfigurationsregister enthalten, abhängig von den Anwendungen, die auf dem Gerät ausgeführt werden sollen. In manchen Implementierungen handelt es sich bei dem einen oder den mehreren Konfigurationsregister(n) um n-Bit (z.B. 16 Bit) nicht flüchtige Lese/Schreib-Register.
-
Die Speicherfeldschutzfunktion kann für einen herkömmlichen Schutzmodus oder einen verbesserten Schutzmodus eingestellt werden. Im herkömmlichen Schutzmodus kann das ganze Speicherfeld schreibgeschützt werden. Im verbesserten Schutzmodus wird das Speicherfeld in Speicherzonen aufgeteilt, wobei jede Speicherzone ein zugehöriges Register hat, das gesetzt werden kann, um auf Eingaben an dem Schreibschutzanschluss (WP, write protection) für die Speicherzone zu reagieren, oder gesetzt werden kann, um die Speicherzone dauerhaft auf nur Lesezugriffe zu setzen (unabhängig von den Eingaben an dem WP-Anschluss). Die Funktion zur Sperrung der gegenwärtigen Konfiguration kann gesetzt werden, um neue Schreibzugriffe auf den Konfigurationsblock zu sperren. Die Funktion zur Sperrung der Hardware-Adressanschlüsse kann gesetzt werden, so dass das serielle Speichergerät 100 auf alle möglichen Hardware-Adressstellen auf dem seriellen Bus antwortet. Die Funktion zur Sperrung des Konfigurationsmodus kann gesetzt werden, um den Konfigurationsmodus auf dem seriellen Speichergerät 100 permanent zu sperren, indem die Antwort auf Schreibanforderungen auf dem Bus gesperrt wird, die das serielle Speichergerät 100 in den Konfigurationsmodus versetzen würde.
-
Die UVLO-Steuerfunktion kann implementiert werden, indem ein oder mehrere Register in dem Konfigurationsblock 112 mit einem Versorgungsspannungsdetektionsschwellwert geladen werden, der bei Nichterreichen durch die Versorgungsspannung verschiedene Gerätefunktionen ein- oder ausschaltet (z.B. Lese- oder Schreibanforderungen auf dem Speicherfeld 101 sperrt), abhängig davon, wie der Schwellwert gesetzt wurde. In manchen Implementierungen ist der Sensor 113 (z.B. ein Spannungskomparator) zwischen die Versorgungsspannung VCC und MSCM 105 geschaltet. Wenn die Versorgungsspannung VCC unter den Versorgungsspannungsdetektionsschwellwert fällt (z.B. ein Benutzer-programmierbarer Wert, der in dem Konfigurationsblock 112 gespeichert ist und durch MSCM 105 an den Sensor 113 geliefert wird), wird das serielle Speichergerät 100 in den UVLO-Steuermodus versetzt. In manchen Implementierungen kann der Sensor 113 in dem POR-Generator 104 enthalten sein. Der Grad der Empfindlichkeit der Schwelle (z.B. die Zahl der programmierbaren Pegel) kann entwurfsabhängig variieren, um verschiedene Anwendungsanforderungen zu erfüllen.
-
Die Funktion zum Berichten des Gerätezustands kann ein oder mehrere Register des Konfigurationsblocks 112 verwenden, um verschiedene Gerätezustände zu berichten. Beispiele für Gerätezustände enthalten, sind aber nicht beschränkt auf, Berichte, wenn das serielle Speichergerät 100 beschäftigt ist (z.B. beschäftigt mit Lesen oder Schreiben), fertig oder anderweitig nicht in der Lage ist, aktiv zu werden. In manchen Implementierungen kann der Zustand einer Fehlerkorrektureinheit berichtet werden, wie z.B. Berichte darüber, ob die letzte ausgeführte Lese- oder Schreiboperation den Fehlerkorrekturmechanismus des seriellen Speichergeräts 100 aktiviert hat, oder den Zustand eines monotonen Zählers, der die Zahl der Fehlerkorrekturereignisse über die Lebensdauer des seriellen Speichergeräts 100 verfolgt. Die Zahl der Register (z.B. 8 Bit-Register in dem Konfigurationsblock 112), die erforderlich sind, um die obigen Funktionen zu implementieren, hängen von der Zahl der implementierten Funktionen ab. Die UVLO-Steuerfunktion kann z.B. mit einem einzigen dedizierten 8 Bit-Register implementiert werden. Zusätzlich kann die Größe des Speicherfelds 101 oder die Größe der Speicherzonen die geeignete Zahl von Zonenschutzregistern bestimmen, wie dies untenstehend im Zusammenhang mit den 2A und 2B beschrieben wird.
-
Beispielhafte Lese/Schreib-Übertragungssequenzen im Konfigurationsmodus
-
2A und 2B zeigen beispielhafte Schreib-Übertragungssequenzen für ein serielles Busprotokoll, das einen Konfigurationsmodus in dem seriellen Speichergerät 100 implementiert. In den dargestellten Beispielen handelt es sich bei dem seriellen Busprotokoll um I2C. Die Beispieloperationen können an andere serielle Busprotokolle angepasst werden, abhängig von der Anwendung.
-
In manchen Implementierungen erfolgt der Zugriff auf die Register in dem Konfigurationsblock 112 über die Verwendung von Geräteadressbytes, die sich von dem Adressbyte unterscheiden, die für den Zugriff auf das Speicherfeld 101 verwendet werden. Jeder hexadezimale Geräteadressenwert kann verwendet werden, obwohl es wünschenswert ist, eine auszuwählen, der nicht mit anderen Geräteadressen auf dem seriellen Bus kollidiert. Für eine maximale Flexibilität können die vier höchstwertigen Bits (MSB) der Geräteadresse in Firmware modifiziert werden. Um die Möglichkeit einer Kollision zu reduzieren, kann die Geräteadresse 6h für serielle Speichergeräte (z.B. EEPROM-Geräte) ein Default-Wert sein, da andere serielle Speichergeräte diesen Wert für andere Zwecke verwendet haben. Die Modifikation der Firmware ermöglicht es, serielle Speichergeräte z.B. durch einen Herstellen zu modifizieren, wenn dies erforderlich ist, um einen Systemkonflikt zu vermeiden, wenn dieser in Anwendungen auftreten würde.
-
Nachdem das Geräte-Adressbyte durch ein Mastergerät auf dem seriellen Bus gesendet wurde, kann das folgende Beispielprotokoll entweder dem Format <Geräteadresse + Registeradresse + Registerdaten (Lesen/Schreiben» oder dem Format <Geräteadresse + Registerdaten (Lesen/Schreiben)> folgen. Die Auswahl von einem dieser Formate kann von der Zahl der Konfigurationsregister in dem Konfigurationsblock 112 abhängigen, die durch die Anwendung verwendet werden. In einer Beispielimplementierung, in der nur ein oder zwei Register in dem Konfigurationsblock 112 verwendet werden, kann das <Geräteadresse + Registerdaten (LesenISchreiben)> Format verwendet werden, wobei der gesamte Konfigurationsregisterinhalt verwendet werden kann, um bei jeder Bustransaktion zu lesen oder zu schreiben. Wenn es mehr als nur ein paar Konfigurationsregister (z.B. mehr als zwei) gibt, dann kann ein <Geräteadresse + Registeradresse + Registerdaten (Lesen/Schreiben)> verwendet werden, um die Größe der Bustransaktionen zu minimieren und um einen schnellen Zugriff auf die gewünschten Registerinhalte zu ermöglichen.
-
Bezug nehmend auf die 2A-2D kann in manchen Implementierungen auf den Konfigurationsblock 112 in einer n-Byte (z.B. 4-Byte)-Übertragungssequenz zugegriffen werden, die ein oder mehrere Register in dem Konfigurationsblock 112 mit einer oder mit mehreren Schreibanforderungen programmiert, wobei eines der beiden oben beschriebenen Beispielprotokollformate verwendet wird. Das Lesen von einem oder von mehreren Registern in dem Konfigurationsblock 112 kann durch Setzen eines Adresszeigers auf ein Adressregister mit einer ersten „Dummy“-Schreibsequenz erfolgen. 2A zeigt eine Schreibübertragungssequenz, die das Beispielprotokollformat <Geräteadresse + Registerdaten (Schreiben)> verwendet, 2B zeigt eine Schreibübertragungssequenz unter Verwendung des Beispielprotokollformats εGeräteadresse + Registeradresse + Registerdaten (Schreiben)>, 2C zeigt eine Leseübertragungssequenz unter Verwendung des Beispielprotokollformats <Geräteadresse + Registerdaten (Lesen)> und 2D zeigt eine Leseübertragungssequenz unter Verwendung des Beispielprotokollformats <Geräteadresse + Registeradresse + Registerdaten (Lesen)>.
-
Die Schreibübertragungssequenz beginnt mit einem Geräteadressbyte, das durch ein Mastergerät auf die SDA-Leitung geschoben wird, gefolgt von einem START-Signal auf dem seriellen Bus, das durch das Mastergerät erzeugt wird. Das Geräteadressbyte beginnt mit den Bits <0110> (6h), gefolgt von drei Hardware-Adressbits <A2A1A0>, die mit den Werten des Zustands der A2-, A1-, A0-Anschlüsse des seriellen Speichergeräts 100 übereinstimmen, das in 1 dargestellt ist. Das niederwertigste Bit (LSB) ist ein Richtungsbit, das eine Lese- oder Schreibanforderung angibt. Jedes Bit in der Übertragungssequenz wird seriell auf der SDA-Leitung gesendet, ein Bit pro SCL-Impuls. Bei Geräten, bei denen manche der Hardware-Adressanschlüsse nicht vorhanden sind, werden die Hardware-Adressbits auf logisch „0“ in der Übertragungssequenz gesetzt. Logisch „0“ wird sowohl für die Leserichtung als auch die Schreibrichtung im Konfigurationsblock 112 verwendet. Im Falle eines Lesezugriffs kann logisch „0“ als Teil einer „Dummy“-Schreibübertragungssequenz verwendet werden, um den Adresszeiger im Adressregister 108 zu setzen.
-
Die nächsten n-Bytes in der Schreibübertragungssequenz werden durch das implementierte Protokollformat bestimmt. Wenn es eine große Zahl von Konfigurationsregistern gibt, die adressiert werden müssen, kann es wünschenswert sein, das im Zusammenhang mit den 2B und 2D beschriebene Protokoll zu implementieren. In diesem Fall sind, nachdem das Geräteadressbyte gesendet wurde, die nächsten n-Bytes in der Übertragungssequenz die n-Konfigurationsregisteradressbytes. Das letzte Byte ist schließlich das Datenwortbyte oder die Datenwortbytes, das/die ausgelesen werden soll(en), oder das/die Datenwortbyte oder -bytes, das/die geschrieben werden soll(en). Das Datenwortbyte oder die Datenwortbytes enthalten Konfigurationsdaten und können z.B. wie in Tabelle I beschrieben ist, definiert werden.
-
Wenn es eine kleine Zahl von zu adressierenden Konfigurationsregistern gibt (z.B. weniger als 3 Konfigurationsregister), kann es wünschenswert sein, das Beispielprotokoll zu implementieren, das im Zusammenhang mit den 2A und 2C beschrieben wurde. In diesem Fall sind, nachdem das Geräteadressbyte gesendet wurde, die nächsten n-Bytes in der Übertragungssequenz die zu lesenden oder zu schreibenden Datenwortbytes. Beim Lesen können die Register zusammenhängend gelesen werden, wobei ihre Zustände bei jedem Leseereignis aktualisiert werden.
-
Ein Beispiel für Konfigurationsdaten ist untenstehend in Tabelle I dargestellt. Tabelle I - Beispielkonfigurationsdaten
Registeradresse | Bit | Funktionsname | Beschreibung |
000h | 7 | RFU | reserviert | 0 | bit hat keine Funktion, wird stets als Null gelesen |
6 | ECS | Aktueller Zustand | 0 | VCC über der Schwelle |
| | Unterspannungsdetektor | 1 | VCC unter der Schwelle |
5 | ECS | Aktueller Zustand | 0 | Fehlerkorrektur nicht aktiv |
| | Fehlerkorrektur | 1 | Fehlerkorrektur aktiv |
4 | PRT | Schreibschutz- | 0 | Herkömmlicher Schutz |
| | verhalten | 1 | Verbesserter Schutz |
3 | DCFG | Konfigurations- | 0 | Gerät bestätigt 6h Byte |
| | modus gesperrt | 1 | Gerät bestätigt 6h Byte nicht |
2 | FRZR | Zonenregister gesperrt | 0 | Zonenregister kann geschrieben werden |
| | | 1 | Zonenregister kann nur gelesen werden |
1 | FRCR | Konfigurationsmodus gesperrt | 0 | Konfigurationsblock freiqeschaltet |
| | | 1 | Konfiqurationsblock gesperrt |
0 | DHA | Hardware-Adressierung | 0 | Decodiere HW Adressanschlüsse |
| | gesperrt | 1 | ACK für alle HW Slave-Adressen |
0001 h | 7:4 | UVLO | Unterspannungsabschaltung | Programmierbare Pegel für UVLO-Funktion. Kann 16 verschiedene Werte annehmen oder auf verschiedene Operationen aufgeteilt werden (z.B. 8 Pegel für Lese-Steuerung und 8 Pegel für Schreib-Steuerung) |
3:0 | RFU | reserviert | 0 - Bit hat keine Funktion; wird stets als Null gelesen |
0002h-0003h | 7:0 | ECC-Zähler | Monotoner Zählerwert | Zählt die Fehlerkorrekturereignisse der ECC-Engine; zählen mit 2 Bytes umfasst 65K Ereignisse, kann aber wachsen; 3 Bytes ergeben 16.7M Ereignisse |
0004h-max von 0204h | 7:0 | ZPR | Zonenschutzregister | 00h | Zonen, in die das Gerät logisch aufgeteilt ist |
F0h |
0Fh |
FFh |
-
In dieser Beispielkonfiguration entsprechen die an der Adresse 0004h beginnenden Daten den 16Kb-Speicherzonen, in die das Speicherfeld 101 logisch segmentiert ist. Die Speicherzonen können mit einem auf 1 basierenden Zähler aufgezählt werden. Ein 64Kb-Gerät hat z.B. 4 Speicherzonen und das Verhalten dieser Speicherzonen hängt ab von den Werten in den Adressen 0004h, 0005h, 0006h und 0007h, wenn der gesamte Inhalt der Tabelle I implementiert wird. Die untenstehende Tabelle II gibt die Zahl der Speicherzonen in jeder Dichte an. Tabelle II - Beispielzahlen der Speicherzonen in jeder Dichte (basierend auf 64Kb/Zone)
64Kb | 128Kb | 256Kb | 512Kb | 1Mb | 2Mb | 4Mb | 8Mb |
4 Zonen | 8 Zonen | 16 Zonen | 32 Zonen | 64 Zonen | 128 Zonen | 256 Zonen | 512 Zonen |
-
In der Beispielkonfiguration der Tabelle I haben die Zonenschutzregister vier mögliche Werte: 00h, F0h, 0Fh und FFh. Die Zonenschutzregister können programmiert werden, um das Verhalten einer entsprechenden Speicherzone zu modifizieren. Ein oder mehrere Schutzzonenregister können dazu vorgesehen sein, den Einfluss des WP-Anschlusses auf die zugehörige Zone zu beeinflussen, oder zu berichten, ob die entsprechende Speicherzone auf Nur-Lesen gesetzt ist, oder nicht. Um die Menge der Zonenschutzregister zu reduzieren, können ein oder mehrere Zonenschutzregister sowohl die WP-Eingabe und Nur-Lesesteuerwerte in dem gleichen Byte berichten. In manchen Implementierungen kann das obere Halbbyte des Zonenschutzregisters das Hardware-Schutzverhalten der entsprechenden Speicherzone steuern. Das untere Halbbyte des Zonenschutzregisters kann steuern, ob die entsprechende Speicherzone auf Nur-Lesen gesetzt wurde. Die untenstehende Tabelle III definiert das Verhalten der einzelnen Zonenschutzregister in einer Implementierung, in der der Einfluss der WP-Eingabe und die Nur-Lesezustände innerhalb des gleichen Bytes enthalten sind. Tabelle III - beispielhafte Zonenschutzregisterkonfigurationen
Registeradresse | Oberes Halbbyte | Unteres Halbbyte | Beschreibung des Verhaltens |
Alle Registeradressen | 0 | 0 | HW WP nicht gesetzt; Zone kann nur gelesen werden |
0 | F | HW WP nicht gesetzt; Zone kann nur gelesen werden |
F | 0 | HW WP gesetzt; Zone kann gelesen und geschrieben werden |
F | F | HW WP gesetzt; Zone kann gelesen und geschrieben werden |
-
Beispielhafter Konfigurationsmodusprozess
-
3 ist ein Flussdiagramm eines Beispielprozesses 300 zur Konfigurierung eines seriellen Geräts. In manchen Implementierungen kann der Prozess 300 durch Empfangen einer Anforderung von einem seriellen Bus beginnen (302). Das serielle Gerät kann z.B. ein serielles Speichergerät sein und der Bus kann ein I2C-Bus sein. Die Anforderung kann eine n-Byte (z.B. 4 Byte)-Übertragungssequenz enthalten, die durch ein Mastergerät auf dem seriellen Bus gesendet wird. Der Konfigurationsblock kann in einem Speicherfeld implementiert sein und kann ein oder mehrere Konfigurations-Lese/Schreibregister enthalten.
-
Der Prozess 300 kann fortgesetzt werden, indem festgestellt wird, dass die Anforderung eine Anforderung zum Lesen oder Schreiben des Konfigurationsblocks ist (304). Die durch das Mastergerät gesendete Übertragungssequenz kann z.B. ein Geräteadressbyte enthalten, das einen Satz von Bits enthält, die durch das serielle Gerät verwendet werden können, um ein Lesen oder Schreiben auf dem Konfigurationsblock zu identifizieren.
-
Der Prozess 300 kann fortgesetzt werden, indem der Konfigurationsblock mit Konfigurationsdaten programmiert wird (306). Das Geräteadressbyte kann z.B. von einem Zwei-Byte-Speicheradressbyte eines Konfigurationsregisters in dem Konfigurationsblock gefolgt werden. Das Speicheradressbyte kann von einem Datenbyte gefolgt werden, das die Konfigurationsdaten enthält.
-
Der Prozess 300 kann fortgesetzt werden, indem das Geräteverhalten gemäß den Konfigurationsdaten geändert wird (308). Eine Steuereinheit (Zustandsmaschine) kann z.B. die Konfigurationsdaten von dem Konfigurationsblock lesen und eine Aktion ausführen, die das Verhalten des seriellen Geräts gemäß den Konfigurationsdaten ändert. Beispiele für Verhaltensweisen des Geräts, die in dem Konfigurationsmodus geändert werden können, umfassen, sind aber nicht begrenzt auf: Speicherfeldschutz, Sperren der aktuellen Konfiguration, Sperren der Hardware-Adressanschlüsse, Sperren des Konfigurationsmodus, UVLO und Berichten des Gerätezustands (z.B. Schreiben oder Fehlerkorrektur in Gange).