I2C will net beim LPC2138

OP #568280
Lesenswert?

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
Gast #568285
Lesenswert?

> Der LPC gibt aber max. 3.3V aus

Der gibt garnix aus, der zieht nur runter. I2C-üblich sind die 
Anschlüssen Open Collector und es werden externe Pullup-Widerstände 
benötigt. Und wenn die an 5V geht, sind auch die Pegel entsprechend.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren