Forum: Mikrocontroller und Digitale Elektronik SPI oder I2C COM als Slave am embedded Linux System für µC Kommunikation


von Mike (Gast)


Lesenswert?

Guten Morgen,

wir müssen auf der Uni ein Projekt starten, es geht um den 
Datenaustausch eines embedded Linux Board (imx6UL) mit einem µC 
Controller. Das System ist schon vorgegeben, µC muss Master sein imx6 
Slave. An sich habe I2C und SPI zur Verfügung.

Bin noch nicht ganz eingetaucht in die Materie aber soweit ich gegoogelt 
habe müsste die SPI Unit vom imx6 schon hardwäre-mässig SPI Slave 
unterstützen ist das richtig? I2C Slave geht am imx6 immer? Könnten man 
bei beiden Varianten einen Speicherbereich von der Hauptapplikation 
befüllen und eine COM Applikation arbeitet selbstständig und 
versenden/empfängt Daten als eigener Prozess und kommuniziert intern nur 
über den Speicher?

Die Kommunikation soll nicht GBs übertragen aber Pin-Toggeln kann ich 
auch nicht.
Hat da jemand Erfahrung und kann mir ein paar Tipps geben?

Vielen Dank

Mike

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Guck', was die Treiber auf dem imx Board koennen/unterstuetzen. Selbst 
wenn's die Hardware kann, willst du nicht noch extra einen Kerneltreiber 
dafuer schreiben im Rahmen so einer Aufgabe.

Mike schrieb:
> Könnten man
> bei beiden Varianten einen Speicherbereich von der Hauptapplikation
> befüllen und eine COM Applikation arbeitet selbstständig und
> versenden/empfängt Daten als eigener Prozess und kommuniziert intern nur
> über den Speicher?

Ja, das waere wohl nicht der unvernuenftigste Weg.

Gruss
WK

von Purzel H. (hacky)


Lesenswert?

Nimm Serial, dh RS232, allenfalls USB-to-Serial

von Mike (Gast)


Lesenswert?

Dergute W. schrieb:
> Ja, das waere wohl nicht der unvernuenftigste Weg.

Danke

Name H. schrieb:
> Nimm Serial, dh RS232, allenfalls USB-to-Serial

Das geht leider nicht, wir haben ein Board mit den Schnittstellen 
bekommen, auf beiden läuft auch schon was anderes I2C IO Expander und 
SPI ein Display also dürfen wir uns da nur ranhängen.

von Peter D. (peda)


Lesenswert?

Mike schrieb:
> Das geht leider nicht, wir haben ein Board mit den Schnittstellen
> bekommen, auf beiden läuft auch schon was anderes I2C IO Expander und
> SPI ein Display also dürfen wir uns da nur ranhängen.

Das klingt ziemlich unmöglich.
In der Regel kann nur eine Applikation ein Interface öffnen (fopen, 
fclose).
Unter einem OS wird es nicht möglich sein, daß mehrere Applikation sich 
ein Interface teilen.
Und das ein Linux überhaut I2C-, SPI-Slave-Treiber implementiert hat, 
klingt auch sehr unwahrscheinlich.

Generell ist SPI-Slave auf einer CPU sehr störanfällig, da SPI keinerlei 
Flußkontrolle hat. Der Master weiß also nie, ob der Slave überhaupt 
empfangsbereit ist bzw. ob er seinen Sendepuffer mit sinnvollen Daten 
gefüllt hat.

von Mike (Gast)


Lesenswert?

Peter D. schrieb:
> Mike schrieb:
>> Das geht leider nicht, wir haben ein Board mit den Schnittstellen
>> bekommen, auf beiden läuft auch schon was anderes I2C IO Expander und
>> SPI ein Display also dürfen wir uns da nur ranhängen.
>
> Das klingt ziemlich unmöglich.
> In der Regel kann nur eine Applikation ein Interface öffnen (fopen,
> fclose).

Im linux sind die Interfaces noch nicht verwendet, nur an den HW 
Schnittstellen selbst hängen schon andere Teilnehmer.

von NichtWichtig (Gast)


Lesenswert?

Peter D. schrieb:
> Mike schrieb:
>> Das geht leider nicht, wir haben ein Board mit den Schnittstellen
>> bekommen, auf beiden läuft auch schon was anderes I2C IO Expander und
>> SPI ein Display also dürfen wir uns da nur ranhängen.
>
> Das klingt ziemlich unmöglich.
> In der Regel kann nur eine Applikation ein Interface öffnen (fopen,
> fclose).
> Unter einem OS wird es nicht möglich sein, daß mehrere Applikation sich
> ein Interface teilen.
> Und das ein Linux überhaut I2C-, SPI-Slave-Treiber implementiert hat,
> klingt auch sehr unwahrscheinlich.
>
> Generell ist SPI-Slave auf einer CPU sehr störanfällig, da SPI keinerlei
> Flußkontrolle hat. Der Master weiß also nie, ob der Slave überhaupt
> empfangsbereit ist bzw. ob er seinen Sendepuffer mit sinnvollen Daten
> gefüllt hat.

Also /dev/i2c-X läßt sich problemlos von mehr als einem Prozess 
gleichzeitig bedienen.

Der Master liest doch bei SPI ein Datenwort ein, ober der Slave will 
oder nicht.
Steht da nüscht drin hatte der Slave noch keine Wort bereit gestellt, 
wird aber über das Eintreffen eines Wortes informiert und kann 
entsprechend handeln.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.