Home > Technologie > ESP8266 - Externer I2C EEPROM Datenlogger - AT24C32 / 64 Treiber

ESP8266 - Externer I2C EEPROM Datenlogger - AT24C32 / 64 Treiber

0
Advertisement

ESP8266 - Externer I2C EEPROM Datenlogger - AT24C32 / 64 Treiber

Wie Sie in unserem vorherigen Artikel über gesehen vielleicht schon DS3231 RTC - Modul haben wir an Bord eines EEPROM - Chip, ein 32k AT24C32 identifiziert. Es ist unabhängig von der RTC-Schaltung und konzipiert auf dem I2C-Bus, ein perfekter Begleiter für ein WIFI Data Logger System.

Die AT24C32 liefert 32.768 Bits von seriellen elektrisch löschbaren und programmierbaren Nurlesespeicher (EEPROM) organisiert als 4096 Wörter von jeweils 8 Bits. Möglicherweise nicht zu viel klingen, aber glauben Sie es oder nicht können Sie 6 Monate von Daten oder sogar mehr auf sie je nach Ihren Antragsanforderungen und wie Sie Ihre Datenprotokollierung zu organisieren.

Zum Beispiel, wenn Sie Ihre Daten in 1Byte speichern, haben Sie genug für ca. 170 Tage oder 24 Wochen! Mit einem zusätzlichen 16 zusätzlichen Ort für bulding Daten-Header / Datum / Uhrzeit / CRC / was auch immer Sie brauchen. Und wenn Sie es noch klein fühlen, können Sie jederzeit AT24C64, 64k Größe (8192 x 8), direkte Drop-in Ersatz!

Schritt 1: Eigenschaften

ESP8266 - Externer I2C EEPROM Datenlogger - AT24C32 / 64 Treiber

EIGENSCHAFTEN:

• Niederspannungs- und Standardspannungsbetrieb

- 2,7 (VCC = 2,7 V bis 5,5 V)

- 1,8 (VCC = 1,8 V bis 5,5 V)

• Niederspannungsgeräte (ISB = 2μA bei 5,5V) Verfügbar

• Intern organisiert 4096 x 8

• 2-adrige serielle Schnittstelle

• Schmitt-Trigger, Gefilterte Eingänge zur Geräuschunterdrückung

• Bidirektionales Datenübertragungsprotokoll

• 100 kHz (1,8 V, 2,5 V, 2,7 V) und 400 kHz (5 V) Taktfrequenz

• Schreibschutz für Hardware-Schutz

• 32-Byte-Seite Schreibmodus (Teilweise Schreibzugriffe erlaubt)

• Selbsttaktiger Schreibzyklus (max. 10 ms)

• Hohe Zuverlässigkeit

- Ausdauer: 1 Million Schreibzyklen

- Datenerhalt: 100 Jahre

• Automotive Grade und erweiterte Temperatur-Geräte zur Verfügung

• 8-polige JEDEC PDIP, 8-polige JEDEC SOIC, 8-polige EIAJ-SOIC und 8-polige TSSOP-Pakete

Die kaskadierbare Funktion des Geräts ermöglicht bis zu 8 Geräten, einen gemeinsamen I2C-Bus zu teilen. Das Gerät ist optimiert für den Einsatz in vielen industriellen und kommerziellen Anwendungen, in denen Niederspannungs-und Niederspannungsbetrieb sind unerlässlich. Darüber hinaus ist die gesamte Familie erhältlich in 2,7 V (2,7 V bis 5,5 V) und 1,8 V (1,8 V bis 5,5 V) Versionen.

Weitere Einzelheiten finden Sie in AT24C32 Datenblatt

Schritt 2: Was wir brauchen werden

Was wir brauchen:

  • CBDB Brett oder jedes andere ESP8266 Modul
  • USB - Adapter (werfen Sie einen Blick auf Teil 1 für Details , wie sie miteinander zu verbinden)
  • DS3231 - Modul aus früheren Artikel
  • Für die Programmierung verwenden wir NodeMCU , eine Sprache LUA - Interpreter - Implementierung für ESP8266 und zum Hochladen der Treiber und die Software , die wir das verwenden LuaUploader .

Schritt 3: Treiberimplementierung

ESP8266 - Externer I2C EEPROM Datenlogger - AT24C32 / 64 Treiber

Treiberimplementierung

Um auf jede Art von Speichergeräten zugreifen und diese richtig bedienen zu können, benötigen wir mindestens 3 Grundfunktionen: Adressieren, Lesen und Schreiben. Plus die richtige I2C-Buskommunikation Initialisierung, ofcourse.

1. Init I2C - Bus / Schnittstelle:

          (Self.id, sda, scl, i2c.SLOW) -Ende (0, 0, 0, 0)

ADRESSIERUNG:

Das 32K-EEPROM benötigt ein 8-Bit-Geräteadresswort nach einer Startbedingung, um den Chip für eine Lese- oder Schreiboperation zu ermöglichen. Er verwendet die drei Geräteadressbits A2, A1, A0, um bis zu acht Geräte auf demselben Bus zu ermöglichen. Diese Bits müssen mit ihren entsprechenden fest verdrahteten Eingangspins verglichen werden. Die A2-, A1- und A0-Pins verwenden einen internen proprietären Schaltkreis, der sie auf einen logisch niedrigen Zustand vorspannt, wenn die Stifte schwimmen dürfen.

Das achte Bit der Geräteadresse ist das Lese- / Schreiboperations-Auswahlbit. Eine Leseoperation wird initiiert, wenn dieses Bit hoch ist und eine Schreiboperation initiiert wird, wenn dieses Bit niedrig ist.

2. LESEN Funktion

Ein zufälliges Lesen erfordert eine "Dummy" -Byte-Schreibsequenz zum Laden in die Datenwortadresse. Sobald das Geräteadresswort und die Datenwortadresse getaktet und vom EEPROM quittiert werden, muss der Mikrocontroller eine weitere Startbedingung erzeugen.

Der Mikrocontroller initiiert nun eine aktuelle Adresse, die durch Senden einer Geräteadresse mit der

Lese / Schreib-Auswahlbit hoch. Das EEPROM quittiert die Geräteadresse und seriell taktet

Aus dem Datenwort. Der Mikrocontroller reagiert nicht mit einer Null, sondern erzeugt eine Folge

Stopp-Bedingung

         Read_EEPROM = Funktion (selbst, devadr, memadr, Länge) adrh = bit.rshift (memadr, 8) adrl = bit.band (memadr, 0xff) i2c.start (self.id) i2c.address (self.id, self. Adresse, i2c.TRANSMITTER) i2c.write (self.id, adrh) i2c.write (self.id, adrl) i2c.stop (self.id) i2c.start (self.id) i2c.address (self.id, Selbstadresse, i2c.RECEIVER) c = i2c.read (self.id, Länge) i2c.stop (self.id) print (c) return c end

3. WRITE-Funktion

Eine Schreiboperation erfordert zwei 8-Bit-Datenwortadressen nach dem Geräteadresswort und einer Bestätigung. Nach Empfang dieser Adresse antwortet das EEPROM erneut mit einer Null und dann Takt im ersten 8-Bit-Datenwort. Nach dem Empfang des 8-Bit-Datenwortes gibt das EEPROM eine Null aus und die Adressiereinrichtung, wie z. B. ein Mikrocontroller, muss die Schreibsequenz mit einer Stoppbedingung beenden.

Zu diesem Zeitpunkt gibt das EEPROM einen intern-zeitgesteuerten Schreibzyklus tWR in den nichtflüchtigen Speicher ein. Alle Eingänge werden während dieses Schreibzyklus deaktiviert, und das EEPROM reagiert nicht, bis der Schreibvorgang abgeschlossen ist

     Write_EEPROM = Funktion (self, devadr, memadr, edata) i = 1 Länge = Zeichenfolge.len (edata) adrh = bit.rshift (memadr, 8) adrl = bit.band (memadr, 0xff) i2c.start (self.id ) I2c.Adresse (self.id, Selbstadresse, i2c.TRANSMITTER) i2c.write (self.id, adrh) i2c.write (self.id, adrl) --print (edata) --debug only --print (String.Byte (edata, 1)) --debug nur während i <= Länge do tmr.wdclr () i2c.write (self.id, string.byte (edata, i)) i = i + 1 Ende i2c. Stop (self.id) beenden

Schritt 4: Testen

Für die Prüfung, packen Sie es zusammen und den Code auf ESP speichern als 'eeprom.lua', starten Sie ESP und auszuführen:

    ( 'Eeprom') - Aufruf des neu erstellten Modultreibers AT24C32 memadr = 0x00 - abzulesen aus dem Anfang sda, scl = 2, 1 - I2C Pins setup edata = "4.321 - Daten aus dem EEPROM" - Daten an Schreiben Sie in EEPROM
    Eeprom: init (sda, scl) - Init I2C eeprom: write_EEPROM (0x50,0, edata) - Dateneingabe an EEPROM beginnend mit Adresse = 0 eeprom: read_EEPROM (0x50,0,28) - Daten aus EEPROM lesen , Adresse = 0, Länge = 28

Projekt Webseite:

http://www.esp8266-projects.com/2015/04/at24c32-i2c-external-eprom-data-looger.html

Related Reading