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