PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : I2C wirte Failed



ArmLinux
19.09.16, 18:03
Hi Leute,

ich hoffe das Thema ist hier nicht falsch.

Ich verwende einen ARM Controller (AM3517 von TI) und wollte hier den I2C Bus verwenden. Das hatte auch schon mal vor 6 Monaten funktioniert. Nun wenn ich das selbe wieder mache geht es nicht mehr. Ich habe die Treiber aus der Blacklist genommen und habe diese geladen und auch in der "modules" Datei eingefügt.

Wenn ich jetzt den Befehl i2cset -y 1 0x20 0x13 0xff ausführe wird Error: wirte failed zurück gegeben. Nun weis ich nicht mehr weiter was ich noch Configurieren muss / soll.
wenn ich es mittels Pascal versuche kommt beim schreiben ein Returnwert -1 zurück. Ich habe auch schon versucht auf eine anderes I2C interface zuschreiben, was auch nicht funktioniert hat.

Als Slave ist gerade ein MCP23017 dran.

Wenn ich den Befehl i2cdetect -y 1 ausführen lasse kommt: Error: Can't use SMBus Quick Write command on this bus (ISA bus? ) damit kann ich nichts anfangen.

Wäre super wenn jemand von euch weiß was der Fehler ist und wie ich das zum laufen bekomme.

Danke schon mal!!

derguteweka
19.09.16, 19:17
Moin,

Naja, wenns schonmal funktioniert hat, machste diesesmal wohl irgendwas anders.
I2C-Bus "funktioniert" dann, wenn vom angeschlossen slave auch die ACKs zurueckkommen. d.h. einfach mal so in's Nichts quaken, fuehrt zu Fehlern.
Wenn du ein Oszilloskop hast, kannste dir ja mal SDA und SCL angucken, ob da was kommt - sprich: ob du den richtigen I2C-Bus nimmst und ob das angeschlossene Device auch (zumindest mit ACK) anwortet.


Gruss
WK

florian0285
19.09.16, 20:15
möglicherweise ist es ein berechtigungsproblem? Ich kenn das Board nicht, aber wenn du nicht als root arbeitest musst du deinen user der i2c group o. ä. hinzufügen.

ArmLinux
20.09.16, 09:03
Ok schon mal vielen Dank.

Wenn ich das Oszilloskop dran hänge, dann sehe ich nichts. Egal auf welcher i2c Schnittstelle ich versuche was zu senden oder lesen. Ich habe extra einen I2C Baustein auf der anderen Seite, dass ich ausschließen kann das es am anderen Teilnehmer liegt.

root@dheva01:~# i2cset 1 0x21 0x13 0xaa
WARNING! This program can confuse your I2C bus, cause data loss and worse!
I will write to device file /dev/i2c-1, chip address 0x21, data address
0x13, data 0xaa, mode byte.
Continue? [Y/n] y
Error: Write failed

Als root bin ich angemeldet und normal müsste ich auch genug schreibrecht haben.

Hierbei handelt es sich um das /dev/ Verzeichnis.:
crw-rw---- 1 root i2c 89, 1 Jan 1 01:00 i2c-1
crw-rw---- 1 root i2c 89, 2 Jan 1 01:00 i2c-2
crw-rw---- 1 root i2c 89, 3 Jan 1 01:00 i2c-3

florian0285
20.09.16, 12:42
geht

i2cdetect -y -r 1

? und was spuckt es aus?

derguteweka
20.09.16, 13:09
Moin,


Wenn ich das Oszilloskop dran hänge, dann sehe ich nichts.

Glaub' ich nicht. Vielleicht wackelt nichts, wenn du das Kommando absetzt. Aber wie sind denn die Pegel von SDA und SCL? Wie sieht's mit den Pull-Ups aus - Gibts welche; wenn ja wie gross sind die? Treibt irgendwer die Busleitungen, d.h. kannst du die z.b. mittels 100 Ohm Pulldown richtung Low ziehen?
Bei den TI SoCs gibts ja immer ca. 3429334833 verschiedene Arten, irgendwelche IO-Signale auf irgendwelche GPIO Leitungen zu multiplexen. Sind da die richtigen Leitungen auf die richtigen Pins gelegt?

Sonst faellt mir grad nix ein.

Gruss
WK

ArmLinux
20.09.16, 18:44
Hi Danke,

@ derguteweka: Du hast recht, das war unprizise von mir. Es waren im Ruhepegel Pull-ups, also beide Leitungen waren high. Nun ich glaube es lag schlicht und ergreifend an der Schnittstelle. Ich habe die andere heute versucht und nun geht es.

für mich ist noch nicht ganz verständlich warum es auf der einen nicht geht aber vielleicht hat sie auch einen macken!

root@dheva01:/home# i2cdetect -y -r 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- UU -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- 48 -- -- UU -- -- -- --
50: -- -- -- -- -- -- -- 57 -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- UU
70: -- -- -- -- -- -- -- --
root@dheva01:/home# i2cdetect -y -r 2
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: 20 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --


also noch mal vielen dank für die schnellen Antworten !!

florian0285
20.09.16, 19:19
So wie ich das sehe war das in deinen ersten beiden Posts wirklich nur die falsche Schnittstelle und dann die falsche Adresse.
An 1 gibt es nichts an der Adresse 20 und 21.