Forum: Mikrocontroller und Digitale Elektronik RASPI mit RS484, CAN und UART erweitern


von Ingo F. (ingof)


Lesenswert?

Hallo,

ich möchte gerne einen Raspberry Pi 2 mit einem UART(TTL), RS485 und CAN 
erweitern.
Der verohandene UART wird auch benötigt.

Der Raspi kommt in ein Hutschienen-Modul und die USB-Port sind leider 
dann nicht mehr nutzbar.

Für RS485 würde ich wohl den MAX3140 (SPI) nehmen.
Der scheint es wohl Softwaremäßig vom RASPi unterstützt zu werden.

Was kann man für den UART nehmen? Einen MAX3107?
Vermutlich muss mann das dann ins Linux sofwaremäßig einbauen?
Oder kennt jemand irgendwelche Bibliotheken.

Beim CAN habe ich noch keinen Schimmer was ich da nehmen könnte.

Kann ich die SPI-Port verwenden wi ich will?
Oder sind die schon für das Displayinterface (DSI), SD-Kartenslot oder 
andere Hardware belegt?

Hoff mir kann jemand ein paar Tipss geben.

DANKE

Gruß
Ingo

von U. M. (oeletronika)


Lesenswert?

Hallo,
ich bin zwar kein Raspi Spezi, aber zufällig weiß ich ein paar Details.
> Ingo F. schrieb:
> ich möchte gerne einen Raspberry Pi 2 mit einem UART(TTL), RS485 und CAN
> erweitern. Der verohandene UART wird auch benötigt.
> Der Raspi kommt in ein Hutschienen-Modul und die USB-Port sind leider
> dann nicht mehr nutzbar.
Wieso nicht?
Du meinst sicher wohl nur, dass die aufgelöteten USB-Buchsen nicht mehr 
direkt nutzbar sind, oder? das heißt doch aber nicht, dass man die 
Leitungen nicht anders nutzen könnte.

> Für RS485 würde ich wohl den MAX3140 (SPI) nehmen.
> Der scheint es wohl Softwaremäßig vom RASPi unterstützt zu werden.
> Was kann man für den UART nehmen? Einen MAX3107?

Gibt sicher viele Varianten.
Man kann zumindest für RS485 auch einen USB-to-serial Umsetzer nehmen 
z.B. FT232R.
Auf dem Raspi ist auch ein LAN-Chip LAN951x.
Entweder ein LAN9512 oder sogar ein LAN9514, von dem aber nicht alle 4 
USB-Ports benutzt werden. Im Zweifelsfall kann man den auf einen 
vollfunktionsfähigen LAN9514 ändern.
Dann kann man an diese Ports direkt den FT232 anbinden und mit etwas 
Bastelei zusätzliche 4 UART .
RS485 ist ja eh nur ein passender Treiber-IC.

> Beim CAN habe ich noch keinen Schimmer was ich da nehmen könnte.
Hat der Raspi keinen CAN-Port?
> SD-Kartenslot oder andere Hardware belegt?
SD-Card wird normal eh anders angeschlossen mit einem 4 Bit-Port.
Schau doch in die Doku, was da ist und dann mußt du selbst wissen, wofür 
du die Ressourcen verwendest.
Gruß Öletronika

von (prx) A. K. (prx)


Lesenswert?

CAN geht auch über SPI, Support vom MCP2515 ist offenbar schon drin. Nur 
werden dann die SPIs knapp, wenn alles darüber soll.

: Bearbeitet durch User
von Ingo F. (ingof)


Lesenswert?

Über USB funktioniert das alles Problemlos.

Das Problem ist nur dass ich die Himbeere in ein Hutschienen Modul 
einbauen möchte/muss und keinen Platz für USB-Adpater habe.
Sicher könnte ich am USB-Adapter den USB-stecker ablöten und mit einem 
Kabel an die Lötpunkte von den USB-Steckern anlöten kann.
Das ist mir aber zuviel gefrickel.

Da ich sowieso noch eine Platine für Erweiterungen erstellen muss wollte 
ich gleich die UARTS mit auf diese Platine setzen.

von Marc S. (marc_s86)


Lesenswert?

hab mal irgendwo gelesen, dass man am raspi mit einem usb-can adapter 
besser bedient ist als mit einem mcp2515

von (prx) A. K. (prx)


Lesenswert?

Mag sein, aber sein K(r)ampf ist ja grad mit USB...

von Gerd B. (bertr2d2) Benutzerseite


Lesenswert?

... oder man wählt ein SBC, der alles on Board hat. Das wäre z.B. ein 
BeagleBone Black/Green oder Banana Pi ...

von Harry L. (mysth)


Lesenswert?

Da ist alles drauf, was du dir wünscht, und der ist für 
Hutschienen-Montage.
http://www.pixtend.de/

von ingof (Gast)


Lesenswert?

Gerd B. schrieb:
> Banana Pi

Hört sich schon mal ganz

Harry L. schrieb:
> Da ist alles drauf, was du dir wünscht, und der ist für
> Hutschienen-Montage.
> http://www.pixtend.de/

Sorry, da ist zuviel drauf.
Ich benötige noch Platz für meine Erweiterungsplatine und die 
Schraubklemmen sollten von meiner Platine versorgt werden.

Gerd B. schrieb:
> Banana Pi

Das sieht doch schon mal gut aus. Würde dann die Pro-Version vorziehen.
Drei UARTS und CAN. Wenn ich die noch in Hutschienengehäuse bekomme 
klingt das schon mal gut.

Beagleobone habe ich noch nichts zu gefunden.... werde ich mir mogrgen 
noch mal ansehen.

Aber wenn noch jemand Idden zur SPI-UART-Schaltung hat wäre ich immer 
noch daran interessiert..

von Ingo F. (ingof)


Lesenswert?

> Beagleobone habe ich noch nichts zu gefunden.... werde ich mir morgen
> noch mal ansehen.

Also der Beagle-Bone hat 4 UARTs aber kein CAN
Der Banana Pi hat alle Schnittstellen.

Allerdings benötige ich noch eine CPU für eine bestimmte serielle 
Schnittstelle. Die Bytes müssen alle einzeln abgeholt werden. Das wird 
wohl bei allen nicht so einfach möglich sein..

Denke ich werde bei der Erweiterung des Raspberry PI landen...

Entweder über UART Erweiterungen über SPI/I2C oder vielleicht besser 
über eine andere CPU die die 4 UARTS besitzt/steuert und über einen 
8Bit-Port mit der dem RASPI verbunden ist.

Wer hat schon mal einen Raspi um einen UART erweitert oder kann mir 
sagen welchen Chip ich am besten nehmen kann.

: Bearbeitet durch User
von H.Joachim S. (crazyhorse)


Lesenswert?

SC16IS762 bastel ich gerade dran. Sieht gut aus bis jetzt, aber noch 
nicht endgültig fertig.

von Daniel S. (daniel_s390)


Lesenswert?

Das PICAN CAN-Bus Board 
(http://skpang.co.uk/catalog/pican2-canbus-board-for-raspberry-pi-2-p-1475.html) 
funktioniert prima mit dem Raspberry Pi2.
Ist auch ein MCP2515, also über SPI angebunden.

: Bearbeitet durch User
von Frank K. (fchk)


Lesenswert?

Ich empfehle einen BeagleBone. Der ist von der Peripherie her deutlich 
besser ausgestattet, und Du musst wesentlich weniger Klimmzüge machen. 
Ein CAN-COntroller ist schon im Prozessor drin, Du brauchst da nur einen 
PHY. UARTs gibts auch mehrere.

Hutschienengehäuse:
http://www.pollin.de/shop/dt/NTI3NzkyOTk-/Bausaetze_Module/Entwicklerboards/Beaglebone/Hutschienen_Gehaeuse_fuer_BeagleBone_Black.html

fchk

von Gerd B. (bertr2d2) Benutzerseite


Lesenswert?

Ingo F. schrieb:
>> Beagleobone habe ich noch nichts zu gefunden.... werde ich mir morgen
>> noch mal ansehen.
>
> Also der Beagle-Bone hat 4 UARTs aber kein CAN
> Der Banana Pi hat alle Schnittstellen.
>
Der BeagleBone hat sogar 2 CAN Controller. Ansonsten ist es auch ein 
Monster an Schnittstellen. Und wenn diese nicht reichen sollten, dann 
kannst Du auch noch zusätzliche über die zwei PRUSS (Programmable 
Realiter Sub System) in Software (2x 200MHz MCUs) abbilden. Wenn es um 
Schnistellen geht ist der BeagleBone unschlagbar.

Der BananaPi bietet auch reichlich Schnittstellen. Dieser ist preislich 
interessant.  Wenn die Schnittstellen ausreichen dann ist es eine 
interessante Alternative.

> Allerdings benötige ich noch eine CPU für eine bestimmte serielle
> Schnittstelle. Die Bytes müssen alle einzeln abgeholt werden. Das wird
> wohl bei allen nicht so einfach möglich sein..

Warum ? Das hängt vom Code ab ...

>
> Denke ich werde bei der Erweiterung des Raspberry PI landen...

Der Raspberry Pi ist sehr interessant. Aber wenn es um Schnittstellen 
geht ist er denkbar ungeeignet.
>
> Entweder über UART Erweiterungen über SPI/I2C oder vielleicht besser
> über eine andere CPU die die 4 UARTS besitzt/steuert und über einen
> 8Bit-Port mit der dem RASPI verbunden ist.

Warum so etwas machen, wenn andere Lösungen einfacher sind.

>
> Wer hat schon mal einen Raspi um einen UART erweitert oder kann mir
> sagen welchen Chip ich am besten nehmen kann.

Ich rate davon ab.

von Ingo F. (ingof)


Lesenswert?

Gerd B. schrieb:
> Der BeagleBone hat sogar 2 CAN Controller. Ansonsten ist es auch ein
> Monster an Schnittstellen.

Habe keine Anschlüsse an den beiden 46-Poligen Anschlüssen gefunden (P8 
und P9). Oder wo finde ich die CAN-Anschlüsse?

Wie funktioniert dass denn mit der ganzen Schnittstellen.
Wie wählt mann den den Mode aus?
Es gibt z.B. einen Mode in dem die 4,5 UARTS verfügbar sind. alle 
anderen Pins sind dann leer. Haben die dann keine Funktion mehr?

Die I2C und SPI und ein UART liegen in verschiedenen Modes. Kann man die 
nicht gleichzeitig nutzen? Ich benötige als Mode 6. Dort gibt es dann 
wohl kein SPI und I2C. Würde aber gerne noch ein Display ansteuern.
http://www.embedded-things.com/bbb/beaglebone-black-pin-mux-spreadsheet/

Gerd B. schrieb:
> Warum ? Das hängt vom Code ab ...

Naja bei 9600 Bit/s muss jedes Byte einzeln abegholt werden. Dort wird 
ein Break Als Frameende benutzt.

Unter Windows und Linux auf dem PC klappt es schon wegen dem UART-Buffer 
nicht. Selbst wenn ich in einer Dauerschleife oder über Interrupt sofort 
alle Bytes auslese bekomme ich oft mehrere Bytes gleichzeitig. Oft nur 
im Abstand von 16ms.

Einige Ports können auch kein Break erkennen. können das die UARTS im 
BeagleBone?

AUf dem Raspberry und Beaglebone läut doch auch nur ein "Linux". Ist das 
dort anders?

Wenn ich dann die Realtime-Erweiterung auch noch kaufen muss wird das im 
Gesamtsystem natürlich noch teurer.

: Bearbeitet durch User
von Frank K. (fchk)


Lesenswert?

Ingo F. schrieb:
> Gerd B. schrieb:
>> Der BeagleBone hat sogar 2 CAN Controller. Ansonsten ist es auch ein
>> Monster an Schnittstellen.
>
> Habe keine Anschlüsse an den beiden 46-Poligen Anschlüssen gefunden (P8
> und P9). Oder wo finde ich die CAN-Anschlüsse?

DCAN0 liegt auf P9 Pin 19/20 (Mode 3), DCAN1 auf 24/26 (Mode 3)

> Die I2C und SPI und ein UART liegen in verschiedenen Modes. Kann man die
> nicht gleichzeitig nutzen? Ich benötige als Mode 6. Dort gibt es dann
> wohl kein SPI und I2C. Würde aber gerne noch ein Display ansteuern.

Jeder Pin hat ein Register, wo Du Dinge wie den Mode einstellen kannst, 
und jeder Pin ist unabhängig vom nächsten. Wie das im Linux konkret 
gehandhabt wird, müsstest DU dann selber nachlesen. Da gibt es 
jedenfalls eine Infrastruktur für sowas.


> AUf dem Raspberry und Beaglebone läut doch auch nur ein "Linux". Ist das
> dort anders?

Ja, andere Treiber, und der Prozessor auf dem Pi kann eben andere 
Sachen, weil er für Tablets vorgesehen ist und nicht für 
Industriesteuerungen.

von Gerd B. (bertr2d2) Benutzerseite


Lesenswert?

Ingo F. schrieb:
> Gerd B. schrieb:
>> Der BeagleBone hat sogar 2 CAN Controller. Ansonsten ist es auch ein
>> Monster an Schnittstellen.
>
> Habe keine Anschlüsse an den beiden 46-Poligen Anschlüssen gefunden (P8
> und P9). Oder wo finde ich die CAN-Anschlüsse?
>
> Wie funktioniert dass denn mit der ganzen Schnittstellen.
> Wie wählt mann den den Mode aus?
> Es gibt z.B. einen Mode in dem die 4,5 UARTS verfügbar sind. alle
> anderen Pins sind dann leer. Haben die dann keine Funktion mehr?
>

Die Pins können einzeln mit alternativen Modi betrieben werden, z.B. Pin 
X im Mode 4, Pin Y in Mode 2 usw.

Die Einstellung erfolgt über Device Tree bzw. Device Tree Overlay - das 
gibt es auch schon beim RPi.

> Die I2C und SPI und ein UART liegen in verschiedenen Modes. Kann man die
> nicht gleichzeitig nutzen? Ich benötige als Mode 6. Dort gibt es dann
> wohl kein SPI und I2C.

doch schon - siehe oben. Aber Du kannst ggf. nicht alle Schnittstellen 
nutzen. Mach Dir eine Checkliste welche Du brauchst und dann kannst Du 
schauen, wie Du das umsetzt.

> Würde aber gerne noch ein Display ansteuern.
> http://www.embedded-things.com/bbb/beaglebone-black-pin-mux-spreadsheet/

geht auch - notfalls auch über SPI.

>
> Gerd B. schrieb:
>> Warum ? Das hängt vom Code ab ...
>
> Naja bei 9600 Bit/s muss jedes Byte einzeln abegholt werden. Dort wird
> ein Break Als Frameende benutzt.

Scheint was Antikes zu sein ...

>
> Unter Windows und Linux auf dem PC klappt es schon wegen dem UART-Buffer
> nicht. Selbst wenn ich in einer Dauerschleife oder über Interrupt sofort
> alle Bytes auslese bekomme ich oft mehrere Bytes gleichzeitig. Oft nur
> im Abstand von 16ms.

Ja geht. Du kannst entweder die Fifo auf 0 schrauben oder nach jedem 
Break ein Interrupt auslösen lassen und dann reagieren.

Wenn alle Stricke reißen nimmste eine PRU; die hat auch Zugriff auf UART 
und pollt zur Not, ohne das das Linux System permanent nachschauen muß.

>
> Einige Ports können auch kein Break erkennen. können das die UARTS im
> BeagleBone?

Ja, natürlich erkennen diese Breaks auch: Wenn Du willst schauste mal 
ins Prozessor Handbuch:
http://www.ti.com/lit/ug/spruh73m/spruh73m.pdf
Knappe 5000(!) Seiten und im Gegensatz auch lesbar und nicht wie beim 
RPi nicht einsehbar. Keine Angst: Viele Kluge Leute haben die Doku 
gelesen und die Treiber schon geschrieben. TI war mal ein schwarzes 
Schaf was Doku betrifft. Mittlerweile habe sie sich vom Saulus zum 
Paulus entwickelt ...

>
> AUf dem Raspberry und Beaglebone läut doch auch nur ein "Linux". Ist das
> dort anders?

Jepp

>
> Wenn ich dann die Realtime-Erweiterung auch noch kaufen muss wird das im
> Gesamtsystem natürlich noch teurer.

Nein musste nicht. Die PRUSS sind über C bzw Assembler programmierbar. 
Das ist die Allzweckwaffe, wenn Du wirklich eine harte Echtzeit 
Anwendung hast.

Aber sage mal: Was hast Du eigentlich vor ?

: Bearbeitet durch User
von Ingo F. (ingof)


Lesenswert?

Gerd B. schrieb:
> Aber sage mal: Was hast Du eigentlich vor ?

Ursprünglich eine Steuerung für die Rolladen (SMI). Wegen 17 Motoren 
also schon zwei UARTS(TTL). Das Interface dafür kommt dann mit auf die 
Erweiterungsplatine. Dann für die Schalter einen RS485. Und dann hatte 
ich vor die Heizung (die "antike" Sache) damit dann auch noch 
anzuschließen.
Dann brauch ich noch einen CAN-Port für mein "Hausbus". Und wenn ich 
schon dabei bin dann noch für den Stromzähler 1 Eingang (S0).

: Bearbeitet durch User
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.