Hallo,
seit Tagen versuche ich schon eine I2C-Verbindung zwischen einem EEPROM
und einem LPC2138 aufzubauen, was aber nicht klappen will. Ich benutze
die lib von Beitrag "I2C Lib für LPC2000 Controller (ARM)" . Ich habe
das I2C zuvor mit einem AtMega32 an der Stelle 257(0x0101) mit dem
Zeichen '5' beschrieben. Immer wenn ich versuche das EEPROM zu
adressieren reagiert es nicht(kein ACK). Hier ist der relevante Teil des
Codes:
1 | i2c_init();
|
2 | while(1)
|
3 | {
|
4 | cout<<"warte auf tastendruck..."<<endl;
|
5 | uart0Getch();
|
6 | cout<<"Start="<<i2c_start(0xA0)<<endl;
|
7 |
|
8 | cout<<"Write(1,1)="<<i2c_write(addr,2)<<endl;//schreibt die leseadresse
|
9 | i2c_stop();
|
10 | cout<<"Start="<<i2c_start(0xA1)<<endl;//start zum lesen
|
11 | cout<<"lese:"<<i2c_readlast()<<endl;
|
12 | i2c_stop();
|
13 | }
|
Für alle nicht C++ler: alles, was mit '<<' an 'cout' angehängt wird,
wird entsprechend dem Datentyp formatiert und über sie Standardausgebe
(bei mir UART0) ausgegeben. Ist also eine Art Gegenstück zu printf.
Das EEPROM wird übrigens mit 5V betrieben, laut Datenblatt werden
0.7Vcc, also 3.5V als high erkannt. Der LPC gibt aber max. 3.3V aus.
Kann das der Fehler sein?
MfG Mark