Software I2C auf ARM7 LPC2106

OP #1349971
Lesenswert?

Hallo an alle,

mitlerweile habe ich den I2C verstanden. Nur mein Quellcode dazu passt 
garnicht. Ich benutze den LPC2106 auf der CMUCam3. Aus was für Gründen 
auch immer wird nicht der hardware I2C sondern die Pins 32 und 33 
benuzt.

Das sind normale GPIOs mit internal Pull-up.

im mitgelieferten code ist die schreibfunktion des I2C implementiert. 
Jetzt mag ich aber auch lesen und muss dazu erstmal den vorhandenen code 
verstehen.


Ich fang mal mit der Startcondition an
Theorie: CLK ist High und eine fallende Flanke wird auf SDA generiert

Praktisch:
1
REG (GPIO_IOCLR) = 0x00800000; // setzt SDA auf LOW
2
REG (GPIO_IODIR) = 0x00BEBDC9; // setzt SDA output und SCL input
3
_cc3_delay_sccb ();
4
REG (GPIO_IOCLR) = 0x00400000; // setzt SCL auf LOW
5
REG (GPIO_IODIR) = 0x00FEBDC9; // SDA und SCL output
6
_cc3_delay_sccb ();

Das funktioniert aber ich verstehe es nicht. Ist da irgendetwas 
besonders an den Pins oder bin ich blind?

Wenn noch mehr code benötigt wird poste ich den noch nach.

Vielen Dank im Vorraus

Gruß Daniel
OP #1350159
Lesenswert?

ich verstehe nicht wie die codezeilen die ich oben eingefügt haben die 
startcondition realisieren

für mich sieht es so aus als wird SDA LOW und dann kommt eine fallende 
flanke auf SCL und das macht ja nun mal gar keinen Sinn

frage ist also warum diese zeilen trotzdem funktionieren und was ich 
daran nicht verstehe oder falsch auslege

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