PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : I2C Geschwindigkeit verändern



ArmLinux
23.09.16, 16:41
Hi Leute,

ich hab mal eine Frage bezüglich I2C Übertragungsgeschwindigkeit. Es ist ja möglich bei I2C auf 100 Kbit/s bis 400Kbit/s zu betreiben. Nun wollte ich bei meine AM3517 mit einem Debian Linux die Geschwindigkeit von I2C bus hochstellen. Ich finde aber die Einstellmöglichkeit nicht. Selbst nach vielem Googlen nicht. So wie die Leute es bei Raspberry Pi machen geht es hier nicht.

Bei SPI kann man es einstellen und auch wenn man ein C Programm schreibt kann man es bei IOCTL mit übergeben, das geht aber so bei I2C nicht. Also zumindest hab ich noch nicht errausgefunden wie es gehen sollte.

Was auch toll wäre, wenn man abfragen könnte, oder in einer Datei sehen könnte wie die Hardware eingestellt/Konfiguriert ist.

Danke schon mal!!!

florian0285
23.09.16, 20:15
Du kannst die baudrate i. R. dem entsprechendem kernel modul übergeben. Was kennst du denn beim Pi für Möglichkeiten?

modprobe i2c_xyz123 baudrate=350000

um das modul zu finden:
lsmod | grep i2c

Um die Optionen (parm:) anzuzeigen:
modinfo i2c_xyz123

Welche baud raten du dort angeben kannst solltest du im manual zu deinem Board nachlesen können.

ArmLinux
26.09.16, 08:48
Super Vielen Danke!!

für die gute Antwort!

wie bekomme ich raus wie meine i2c modul genau heißt, da bin ich mir noch nicht ganz sicher, dass ich den richten namen. Wenn ich den Befehl "lsmode | grep i2c " ausführe kommt nichts dabei raus.

Bei dem Befehlt "lsmod"
root@dheva01:/home# lsmod
Module Size Used by
omaplfb 8742 0
pvrsrvkm 157024 1 omaplfb


Aber i2c funktioniert! Also muss das Modul doch vorhanden sein. Um es anzusprechen verwende ich ein kleines C Programm, dass auf dei Datei im Verzeichnis /dev/i2c-2 zurgreift.

florian0285
26.09.16, 11:47
Das ist wenig Output [emoji38]

Probier mal




cat /proc/modules | grep i2c



oder mal ohne grep.

Es kann natürlich sein, dass das Modul fest in den Kernel kompiliert wurde.

ArmLinux
26.09.16, 14:09
Hi florian0285 da hast du recht :D

so wie es aussieht ist wohl im Kernel kompiliert, da bei

root@dheva01:/home# cat /proc/modules | grep i2c

und bei cat /proc/modules nur das herraus kommt.
root@dheva01:/home# cat /proc/modules
omaplfb 8742 0 - Live 0xbf034000 (C)
pvrsrvkm 157024 1 omaplfb, Live 0xbf000000 (C)


nun die frage wie kann ich dann die Werte setzen wen

BetterWorld
26.09.16, 14:35
Mit i2c-tools ?

florian0285
26.09.16, 15:55
mit den i2c-tools kann man meines Wissens nach nur "auf den Bus" schreiben (i2cset)

Je nachdem wie das bei dir mit dem Bootvorgang funktioniert hast du in /boot eine cmdline.txt oder sowas.
Dort kannst du die Bootparameter für den Kernel angeben.



i2c_bus= [HW] Override the default board specific I2C bus speed
or register an additional I2C bus that is not
registered from board initialization code.
Format:
,


Nachtrag:

Evtl gehts auch in der config.txt mit i2c_baudrate/i2c_arm_baudrate. Wie beim Pi z. B.

https://github.com/raspberrypi/firmware/blob/master/boot/overlays/README

Dafür solltest du aber mal bei der Quelle deiner Distri nachschlagen.

nopes
26.09.16, 19:20
Am einfachsten dürfte es sein, die Kernel Config zu prüfen, dann ggf. auf ein Modul umstellen, oder halte da direkt die gewünschte Geschwindigkeit einstellen - https://www.raspberrypi.org/documentation/linux/kernel/building.md und https://www.raspberrypi.org/documentation/linux/kernel/configuring.md

ArmLinux
27.09.16, 14:30
Am einfachsten dürfte es sein, die Kernel Config zu prüfen, dann ggf. auf ein Modul umstellen, oder halte da direkt die gewünschte Geschwindigkeit einstellen - https://www.raspberrypi.org/documentation/linux/kernel/building.md und https://www.raspberrypi.org/documentation/linux/kernel/configuring.md


Genau so sieht es aus, ich habe den hersteller endlich erreicht und der hat gesagt es muss im Kernel geändert werden und der Kernel muss neu Kompiliert werden.

Vielen dank für eure hilfreichen Antworten.

MFG

florian0285
27.09.16, 17:22
dann ggf. auf ein Modul umstellen

Dann beachte das bitte, dann kannst du die Geschwindigkeit immer variabel umstellen.