I2C 24LC04 EEPROM 4kBit DIP8
Produktinformationen "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
#
# 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]))+"**")
Anmelden