Two Wire Interface: Projekt-2

Aus Wikibooks
WTFPL-2
Hinweis: Wenn du diese Seite bearbeitest, stimmst du zu, dass deine Bearbeitungen zusätzlich unter den Bedingungen der WTF Public License veröffentlicht werden.
WTFPL-2

< Projekt-1 | Inhalt | TODO >


Worum geht's?[Bearbeiten]

In diesem Kapitel soll ein Microchip 24AA1025 EEPROM über den TWI Bus mit dem Microcontroller verbunden und in Betrieb genommen werden.

Für die Ansteuerung des TWI Bus kann wahlweise die TWI Funktionseinheit des Microcontrollers oder die Software-Lösung aus dem Kapitel ... verwendet werden.

Um den Schritten folgen zu können, ist es gut das zugehörige Datenblatt [24AA1025] zur Hand zu haben.

Das EEPROM kann mit 100 kHz und mit 400 kHz betrieben werden.

Speicher[Bearbeiten]

Das EEPROM enthält zwei Speicherblöcke, die über den TWI Bus angesprochen werden können.

Jeder Speicherblock hat eine Größe von 64K Bytes.

Jeder der beiden Speicherblöcke ist in 512 Seiten der Größe 128 Bytes unterteilt. Jede dieser Seiten beginnt an einer durch 128 teilbaren Adresse.

Die typische Schreibzeit für eine Page beträgt 3 ms. [1]

Die maximale Schreibzeit ist mit 5 ms angegeben. [2]

Slave Adresse[Bearbeiten]

Jeder der beiden Speicherblöcke ist ein eigener Slave mit eigener Slave Adresse.

Die beiden Slave Adressen folgen dem Muster 1 0 1 0 x A0 A1 .

Das Bit x nimmt je nach Slave den Wert 0 bzw. 1 an.

Die Bits A0 A1 können durch die Verkabelung des EEPROM Chips festgelegt werden. Es können somit bis zu vier EEPROMS dieses Typs am gleichen TWI Bus betrieben werden

Verkabelung[Bearbeiten]

Schaltplan

Die Pinbelegung kann dem Datenblatt entnommen werden. [3]

A0 U
24AA1025
Vcc
A1 WP
A2 SCL
Vss SDA
Pin Funktion
A0 Slave Adresse (konfigurierbar)
A1 Slave Adresse (konfigurierbar)
A2 Slave Adresse (nicht konfigurierbar)
Vss ground
SDA SDA Leitung
SCL SCL Leitung
WP Schreibschutz
Vcc +1.7 to 5.5V

Die Versorgungsspannung wird über die Pins Vcc und Vss zur Verfügung gestellt.

Die Pins SDA und SCL sind Daten- bzw. Taktleitung und werden später entsprechend dem Microcontroller verbunden.

Mit den Pins Die A0 und A1 kann, wie bereits beschrieben, das Muster für die beiden Slave Adressen des EEPROMS festgelegt werden. In unserem Fall werden A0 und A1 mit Masse verbunden. Die beiden Speicherblöcke erhalten somit die folgenden beiden Slave Adressen.

Speicherblock 0 0b101 0000 0x50
Speicherblock 1 0b101 0100 0x54

Der Pin A2 ist nicht konfigurierbar und muss laut Datenblatt auf Vcc gelegt werden.

Achtung! Im Internet finden sich Bastelanleitungen, die ihn auf Masse legen, tatsächlich muss er laut Datenblatt aber mit Vcc verbunden werden. Wer es nicht glaubt schaut in Sektion 2.2 A2 Chip Address Input nach und liest:

This pin must be tied to VCC in order for this device to operate. If left floating or tied to VSS, device operation will be undefined

Man scheint das EEPROM auch auch im undefined operation Modus ganz gut betreiben zu können, sicherheitshalber sollte der Pin A2 trotzdem lieber mit Vcc verbunden werden.

Über den Pin WP (write protect) kann der Schreibschutz aktiviert bzw. deaktiviert werden. Je nachdem, ob er auf Vcc, oder auf Vss gelegt wird, kann in das EEPROM geschrieben werden, oder nicht. Weil er auch beschreibbar sein soll, werden wir den Pin WP mit Vss verbinden.

Das Datenblatt enthält die Angabe [4]

It is an open-drain terminal, therefore, the SDA bus requires a pull-up resistor to VCC (typical 10 kΩ for 100 kHz, 2k Ω for 400 kHz and 1 MHz).

Bereitschaft Prüfen[Bearbeiten]

Um die Bereitschaft zu prüfen kann ein SLA+W mit der Slave Adresse des EEPROM versendet werden. Wenn das EEPROM noch mit dem Schreiben beschäftigt ist, wird es nicht mit ACK antworten.

Schreiben[Bearbeiten]

Es können bis zu 128 Bytes am Stück geschrieben werden.

Alle Bytes, die am Stück geschrieben werden müssen in einer physikalischen Seite liegen.

Physikalische Seiten beginnen an Adressen die ganzzahlige Vielfache der Page Buffer Size sind.

Vorsicht!! Nachdem das Ende Erreicht ist wrapped der Adresszähler around und überschreibt am Anfang.

Daten werden zunächst in einem Puffer gespeichert. Erst nach der Stop Condition werden sie tatsächlich übertragen.

Die ersten beiden Bytes geben die Speicheradresse an, an der geschrieben werden soll. Es folgen die Bytes, die in das EEPROM geschrieben werden sollen.

Lesen[Bearbeiten]

Es kann immer nur von der aktuellen Adresse gelesen werden.

Um die aktuelle Adresse zu setzen muss die aktuelle Adresse erst mit einer Schreiboperation gesetzt werden.

Fußnoten[Bearbeiten]

  1. (siehe [24AA1025]: Features, S.1)
  2. (siehe [24AA1025]: TABLE 1-2: AC CHARACTERISTICS, S.4)
  3. (siehe [24AA1025]: TABLE 2-1: PIN FUNCTION TABLE, S. 5)
  4. (siehe [24AA1025]: TODO)

< Projekt-1 | Inhalt | TODO >

WTFPL-2
Du hast das Recht unter den Bedingungen der WTF Public License mit diesem Dokument anzustellen was zum Teufel auch immer Du willst.