C Control PRO Unit Mega 128 198219 User Manual
Product codes
198219
282
Bibliotheken
© 2013 Conrad Electronic
Sub I2C_Write(addr As Byte, hdr As ULong, hdr_len As Byte,
ByRef mem_addr As Byte, length As Word) As Byte
Beschreibung
Zuerst werden an das I2C device mit Adresse addr (I2C 7-bit Adresse) bis zu 4 Bytes header Daten
geschrieben. Die Daten werden in hdr übergeben, die Anzahl der Bytes in hdr_len. Dabei darf
hdr_len Null sein, d.h. es wird kein header übertragen. Es werden immer zuerst die höherwertigen
Bytes des header übertragen. Anschließend werden length bytes aus array mem_addr auf das I2C
device geschrieben.
geschrieben. Die Daten werden in hdr übergeben, die Anzahl der Bytes in hdr_len. Dabei darf
hdr_len Null sein, d.h. es wird kein header übertragen. Es werden immer zuerst die höherwertigen
Bytes des header übertragen. Anschließend werden length bytes aus array mem_addr auf das I2C
device geschrieben.
Der Begriff header steht hier nicht für einen spezifischen I2C Term, sondern für bis zu 4 Bytes
die an das I2C device übertragen werden. Viele I2C Geräte benutzen einen solchen header um z.B.
ein Register zu indizieren.
ein Register zu indizieren.
Parameter
addr
Adresse des I2C Gerätes
hdr
Bis zu 4 byte header Daten
hdr_len
Länge des headers
mem_addr Array aus dem die I2C Daten geschrieben werden
length
length
Anzahl der Daten die geschrieben werden
Rückgabewert
-1 = Übertragungsfehler
0 = erfolgreich
0 = erfolgreich
5.12.2.5
I2C Beispiel
Beispiel: EEPROM 24C64 lesen und schreiben
// I2C Geräte Adresse = 0x50, Bit Rate 100kHz
// EEPROM hat 16bit Speicher adresse
byte
data[
10
];
void main(void)
{
// Lese 10 bytes von Speicheradresse 0x20 in array data[]
I2C_Read(0x50,
0x20,
2
,
data,
10
);
// Schreibe 10 bytes aus array data[] nach EEPROM Speicheradresse 0x20
I2C_Write(0x50,
0x20,
2
,
data,
10
);
}