STM8S DISCOVERY I2C Prob

Gast #2533795
Lesenswert?

Hat von Euch einer einen funktionierenden STM8S DISCOVERY Codeschipsel 
für ein I2C 24C16 EEprom oder irgendwas anderes?

Ich bekomme seit 2 Tagen die I2C Schnittstelle mit der ST-Library nicht 
zum laufen...Hardware ist richtig angeschlossen.

Bei jedem Lesevorgang wird mir die Adresse vom Chip zurückgegeben.

Einfach einen funktionierenden Code posten, dann wäre mir schon sehr 
geholfen.
Gast #2536120
Lesenswert?

Hier ist mal das einfachste, das geht.
Den Wert vom 24c16 an der aktuellen Adresse lesen, wie es im Datenblatt 
steht.
1
#define I2C_DIRECTION_RX 1
2

3
uint8_t temp;
4

5
// Hardware I2C konfig.
6
I2C_DeInit();
7
I2C_Init(100000, 0xFF, I2C_DUTYCYCLE_2, I2C_ACK_CURR, I2C_ADDMODE_7BIT, 16);
8
I2C_Cmd  (ENABLE);
9

10
//Lesevorgang Byte von aktueller Adresse
11
  I2C_GenerateSTART(ENABLE);
12

13
  I2C_Send7bitAddress(0xa0, I2C_DIRECTION_RX);
14

15
  I2C_GenerateSTOP(ENABLE);
16
  
17
  temp = I2C_ReceiveData();

In 'temp' steht anschließend die Adresse (0xa0 + 0x01 =) 0xa1 und nicht 
der Wert vom Eeprom. Verzögerungen zwischen den einzelnen Befehlen oder 
ein 'temp = I2C_ReceiveData();' vor dem STOP ändern auch nichts.
Gast #2536231
Lesenswert?

Danke, das habe ich schon gemacht, hört sich ja auch logisch an.

"I2C_ReceiveData()" ließt den Buffer aus, sollte also egal sein.

Dein Tipp hat auch keine Auswirkungen, es kommt wieder die Adresse 
zurück. :-(

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