die I2C Hardware fuktioniert auf beiden Seiten. (Slaveadr. 9, 100 KHz)
Eine eigene Softwareapplikation unter C# bekommt keine Verbindung zum Slave
(die Applikation wurde schon mal mit SPI eingesetzt, funktioniert unter sich auch).
Meine Aufrufe haben also einen Fehler,
leider finde ich kein Beispielprogramm I2C-C#.
Code: Select all
// Initialisiere
[i]report[0] = 0x01; //I2C Mode initialisiere I2C Mode
report[1] = 0x01; //Enable I2C-Mode
report[2] = 0x00; // 100 KHz
status=IowKitWrite(ioHandle, IOW_PIPE_SPECIAL_MODE, report, SPECIAL_REPORT_SIZE);[/i]
//status == 64
// Write Aufruf
[i]report[0] = 0x02; //I2C write mode
report[1] = 0xC3; //Start + Stop + count==3
report[2] = 0x09; // Wo steht das Addressbyte?? Adresse des slave ist 9
report[3] = 0x09; //[/i]
[i]//report[4...] = 0x00;
IowKitWrite(ioHandle, IOW_PIPE_SPECIAL_MODE, report, SPECIAL_REPORT_SIZE);
//zur Kontrolle
IowKitRead(ioHandle, IOW_PIPE_SPECIAL_MODE, returnReport, SPECIAL_REPORT_SIZE);
//returnReport[0]==0x02 returnReport[1]==0x80[/i]
//auf Slave blinken LEDs in Datenleitung, es wird aber nichts empfangen
// Read Aufruf
[i]report[0] = 0x03; //I2C read mode
report[1] = 0x03; //count
report[2] = 0x00;[/i]
//Frage: Wohin kommt das Addressbyte ???
//versetze warrior in read mode
[i]IowKitWrite(ioHandle, IOW_PIPE_SPECIAL_MODE, report, SPECIAL_REPORT_SIZE);[/i]
//lese Daten
[i]IowKitRead(ioHandle, IOW_PIPE_SPECIAL_MODE, returnReport, SPECIAL_REPORT_SIZE);[/i]
//returnReport[0]==0x03 returnReport[1]==0x88
//auf Slave blinken LEDs in Datenleitung, es wird aber nichts empfangen