Zum Hauptinhalt springen

I2C 24LC04 EEPROM 4kBit DIP8

Produktinformationen "I2C 24LC04 EEPROM 4kBit DIP8"

I2C 24LC04 EEPROM 4kBit DIP8

Modell: 24LC04
Hersteller: China
Kategorie: I2C
Anwendung: Speicher nicht flüchtig 
Gehäuse: DIP8
Schnittstelle: I2C 5V/3.3V
Betriebsspannung: 3.3/5.0V (2.5-5.5V)
Technologie: CMOS
Geschwindigkeit: bis 0.4MHz
Schreibgeschwindigkeit: 5mSek
Zyklen-Festigkeit: > 1Mio (Schreiben/Lesen)
Datenaufbewahrung >200 Jahre
Gewicht: 0.008kg


Beispielprogramm in Python für RaspBerry PI PICO: #####################################################################
#
#    E P R O M  -  I 2 C  -  2 4 L C 0 X   -  nicht flüchtiger Speicher
#
#    Hardware:    EEPROM 24LC0X, 24C0X, 240X, usw...
#
#    Betriebssp:  RaspBerry PICO: +5.0V USB, IR Sensor +3.3V
#    Version:     V0.00      04.12.2022 /MM
#    Change:      04.12.2022 Erstellung Grundprogramm
#
#    Funktion:    EEPROM zum speichern von Daten die nach einem
#                 Geräteneustart noch verfügbar sein sollen
#                 Speichern von Zeichenketten, inkl. Binärdaten in Zeichenketten
#
#    Beschaltung: 24CXX-Pin-8  (VCC)  **3.3V**   <->   Raspberry-PICO-Pin-36  **3.3V**
#                 24CXX-Pin-4  (GND)  **GND**    <->   Raspberry-PICO-Pin-38  **GND**
#                 24CXX-Pin-5  (SDA)  **I2C**    <->   Raspberry-PICO-Pin-02  **GP01**
#                 24CXX-Pin-5  (SDA)  **I2C**    <->   Widerstand 4.7kR       -> +3.3V
#                 24CXX-Pin-6  (SCL)  **I2C**    <->   Raspberry-PICO-Pin-01  **GP00**
#                 24CXX-Pin-6  (SCL)  **I2C**    <->   Widerstand 4.7kR       -> +3.3V
#                 24CXX-Pin-1  (A-0)  **A-0**    <->   24CXX-Pin-4            **GND**
#                 24CXX-Pin-2  (A-1)  **A-1**    <->   24CXX-Pin-4            **GND**
#                 24CXX-Pin-3  (A-2)  **A-2**    <->   24CXX-Pin-4            **GND**
#                 24CXX-Pin-7  (WP)   **WP**     <->   24CXX-Pin-4            **GND**
#    INFO:        Die beiden Widerstände vom I2C sind bei kurzen Leitungen nicht zwingend
#
#    EEPROMs:     24C01  - DIL08  -  1kBit  -   128Bytes
#                 24C02  - DIL08  -  2kBit  -   256Bytes
#                 24C04  - DIL08  -  4kBit  -   512Bytes
#                 24C08  - DIL08  -  8kBit  -  1024Bytes
#                 Schreiben:         5mSek.
#                 Lesen:             5mSek.
#                 Schreibzyklen:     mid. 4 Mio.
#
#    I2C:         24CXX  Bus-Speed 100kHz / 400kHz,
#

from machine import Pin                              # importing classes
from time import sleep                               # Import sleep
from time class import time                                          # importing classes
import utime

Version    = "V0.00"                                 # Software Version
OnBoardLED = machine.Pin(25, machine.Pin.OUT) OnBoardLED.toggle()                                  # LED OnBord Toggle - Init Blink
sleep(0.1)                                           # Delay Init Blink
OnBoardLED.toggle()                                  # LED OnBord Toggle - Init Blink
sleep(0.1)

def eepromstrwrite(adr,stwrite):                     # Write String to Eprom
    global I2C_EEPROM_Addr
    i=0
    bstwrite = bytearray(len(stwrite))               # Byte Array mit der String grösse erstellen
    #bstwrite = bytearray(stwrite)                   # in ByteArray umwandeln, keine Binärdaten
    while i<len(stwrite):                             
        bstwrite[i] = ord(stwrite[i:i+1])
        i=i+1
    i2c.writeto_mem(I2C_EEPROM_Addr, adr, bstwrite)  # Write ByteArray to EEPROM
    sleep(0.005)                                     # 5mSek, Pause nach Zugriff
#EndDef

def eepromstrread(adr,size):
                         # Read String from Eprom
    global I2C_EEPROM_Addr
    i=0
    stread = ""
    bbytearray=i2c.readfrom_mem(I2C_EEPROM_Addr, adr, size )  # 8-Bit Data frame, Werte lesen
    # Konvertieren ByteArray zu String               # Python konveriert keine Binär Daten x=str(bbytearray,'UTF-8')
    while i<len(bbytearray):                             
        stread = stread + chr(bbytearray[i])         # Zeichen an String anfügen
        i=i+1
    sleep(0.005)                                     # 5mSek, Pause nach Zugriff
    return(stread)
#EndDef



# ****** MAIN PROGRAMM ******

print("EEprom 24C1X Demo zum schreiben und lesen von Daten")
print("")

# Initialize I2C with pins SDA=GP0 (Pico-Pin1), SDL=GP1 (Pico-Pin2) :: LCD VCC=+5V SDA/SDL 3.3V Logic
i2c=machine.I2C(0, sda=machine.Pin(0), scl=machine.Pin(1), freq=100000)

# Scan I2C BUS to Display correct wired I2C devices
devices = i2c.scan()
print('I2C Device found at Address: ',end="")
for d in devices:
  print(hex(d)+" ",end="")
print("")
print("")
sleep(0.1)                                           # Nach dem Scann brauchts eine Pause

I2C_EEPROM_Addr = 0x50
                               # Must bee one of the scanned I2C Adresses!       
I2C_EEPROM_Addr = d                                  # letzte gescanntes I2C Adresse verwenden       

# Daten ins EEprom Schreiben
stwrite = "Hallo Welt"                               # Zeichenkette zum speichern
print("Zeichenkette schreiben !"+stwrite+"! plus Binär Wert=222 ein Byte")
stwrite = stwrite + chr(222)                         # Einen Binär Wert anhängen
eepromstrwrite(0,stwrite)
 
# Daten aus EEprom lesen
print("Zeichenkette lesen 10 Zeichen plus Binär Wert 1 Byte")
stread = eepromstrread(0,11)
print("**"+stread[0:10]+"** **"+str(ord(stread[10:11]))+"**")
 

0 von 0 Bewertungen

Durchschnittliche Bewertung von 0 von 5 Sternen

Bewerten Sie dieses Produkt!

Teilen Sie Ihre Erfahrungen mit anderen Kunden.