Forum: Mikrocontroller und Digitale Elektronik Frage zu USB Daten über CAN senden


von CanCan (Gast)


Lesenswert?

Hallo allerseits,

kennt jemand eine Möglichkeit USB HID Daten an den CAN Bus zu senden?

Hintergrund:
Von einem Gerät werden Daten gesendet. Das Gerät erscheint im PC als USB 
HID
 device.

Das funktioniert auch ganz prima (Windows). Nun möchte ich einige Daten 
aber auf dem CAN Bus senden.

Leider hab ich von Can wenig Ahnung und es gibt wohl auch nichts 
fertiges.

Wie würdet ihr da heran gehen?

von Dr. Sommer (Gast)


Lesenswert?

Schließe einen USB-CAN-Adapter an den PC an (z.B. von Vector oder 
PeakCan) und schreibe eine Software welche die Daten vom HID-Gerät zum 
CAN umleitet.

von CanCan (Gast)


Lesenswert?

Dr. Sommer schrieb:
> Schließe einen USB-CAN-Adapter an den PC an (z.B. von Vector oder
> PeakCan) und schreibe eine Software welche die Daten vom HID-Gerät zum
> CAN umleitet.

Danke für die Antwort, es soll aber ohne PC funzen.

Sorry das hab ich vergessen zu schreiben.

von Dr. Sommer (Gast)


Lesenswert?

Dann eben das gleiche Spiel mit einem Raspberry-PI o.ä.

von CanCan (Gast)


Lesenswert?

Dr. Sommer schrieb:
> Dann eben das gleiche Spiel mit einem Raspberry-PI o.ä.

Guter Tip, hab aber mit dem Raspi noch nie was gemacht. Gibt es da USB 
HID (host) und CAN?

von Dr. Sommer (Gast)


Lesenswert?

CanCan schrieb:
> Guter Tip, hab aber mit dem Raspi noch nie was gemacht. Gibt es da USB
> HID (host) und

Ja.

CanCan schrieb:
> und CAN?
Nicht direkt. Du brauchst immer noch einen CAN-Adapter. Es gibt aber 
bestimmt ähnliche Boards welche CAN eingebaut haben, da darfst du selber 
mal nach suchen. Die TI Sitara Prozessoren haben CAN und USB-Host 
integriert, bei Boards die das nutzen (z.B. Beaglebone Black) könnte das 
gehen.

von Herby (Gast)


Lesenswert?

Suche dir einen STM32F-Controller auf einem EVA-Board mit USB & CAN 
heraus.

von CanCan (Gast)


Lesenswert?

Dr. Sommer schrieb:
> Nicht direkt. Du brauchst immer noch einen CAN-Adapter. Es gibt aber
> bestimmt ähnliche Boards welche CAN eingebaut haben, da darfst du selber
> mal nach suchen.

Suche ich gern, noch eine Frage:

Wie sieht es mit der CAN Software aus. Bei USB gibt es ja libs (und es 
ist wohl sehr komplex).

Gibt es das auch für CAN oder kann man das selbst machen?

von CanCan (Gast)


Lesenswert?

Herby schrieb:
> Suche dir einen STM32F-Controller auf einem EVA-Board mit USB & CAN
> heraus.

Warum gerade den und nicht den Raspi?

von Dr. Sommer (Gast)


Lesenswert?

Herby schrieb:
> Suche dir einen STM32F-Controller auf einem EVA-Board mit USB & CAN
> heraus.

Aber aufpassen dass USB und CAN bei dem Controller gleichzeitig nutzbar 
sind. Die benötigte USB-Host-Implementation ist sehr komplex.

CanCan schrieb:
> Gibt es das auch für CAN oder kann man das selbst machen?

Es sollte Linux-Treiber dafür geben, kann man aber auch selbst machen; 
hängt vom verwendeten Prozessor ab. CAN ist ja nicht so kompliziert.

von CanCan (Gast)


Lesenswert?

Dr. Sommer schrieb:
> CAN ist ja nicht so kompliziert.

Danke nochmal für die Antworten.

Wie läuft das bei CAN in der Praxis. Es gibt ja jede Menge Geräte.
Wie "verstehen" die was ich ihnen sende?

von Dr. Sommer (Gast)


Lesenswert?

CanCan schrieb:
> Wie läuft das bei CAN in der Praxis. Es gibt ja jede Menge Geräte.
> Wie "verstehen" die was ich ihnen sende?

Du musst in deren Datasheet nachlesen, was du ihnen senden musst. Ggf. 
wird ein High-Level-Protokoll wie CANopen benutzt. Lies dich erstmal zu 
CAN ein, die Grundlagen sind nicht schwierig. Aber so Plug&Play wie USB 
ist das nicht, man muss schon wissen was man tut.

von CanCan (Gast)


Lesenswert?

Dr. Sommer schrieb:
> Lies dich erstmal zu  CAN ein, die Grundlagen sind nicht schwierig.

Hab ich schon gemacht, ist mir auch klar wie es von der Hardware funzt.
Auf der Datenebene steht da aber immer ID / Daten

Wenn ich das richtig verstehe bekommt der Empfänger Daten und weiß über 
die ID was gemeint ist (z.B. Drehzahl, Reifendruck Innenbeleuchtung an).

Was und wie es da steht ist völlig frei (auch die ID) und man muss 
selber sehen wie das im aktuellen Umfeld konfiguriert ist.

Z.b. weiß man nicht welche ID's bereits vergeben sind. Das kann man auch 
nicht herausfinden weil ja nicht immer alle "online" sind, man muss 
schlicht vorher wissen.

Stimmt das so?

von Rolf M. (rmagnus)


Lesenswert?

CanCan schrieb:
> Dr. Sommer schrieb:
>> Nicht direkt. Du brauchst immer noch einen CAN-Adapter. Es gibt aber
>> bestimmt ähnliche Boards welche CAN eingebaut haben, da darfst du selber
>> mal nach suchen.
>
> Suche ich gern, noch eine Frage:
>
> Wie sieht es mit der CAN Software aus. Bei USB gibt es ja libs (und es
> ist wohl sehr komplex).
>
> Gibt es das auch für CAN oder kann man das selbst machen?

Es gibt keinen HID-over-CAN-Standard oder so. Du musst dir also selber 
überlegen, wie du die Informationen auf den CAN legst. Das kommt 
letztenlich ja auch darauf an, was die Gegenstelle erwartet.

CanCan schrieb:
> Herby schrieb:
>> Suche dir einen STM32F-Controller auf einem EVA-Board mit USB & CAN
>> heraus.
>
> Warum gerade den und nicht den Raspi?

Ohne Betriebssystem, muss daher nicht booten und nicht heruntergefahren 
werden.

von Dr. Sommer (Gast)


Lesenswert?

Ja so ist es. Du musst wissen welche Geräte am CAN-Bus hängen, welche 
ID's die senden/empfangen und wie die Formate sind. Eine entsprechende 
Übersicht über alle Nachrichten eines Netzes nennt sich 
Kommunikations-Matrix oder CAN-Matrix. Ein übliches Format dafür ist 
Vector DBC. Ohne die Matrix musst du die Format erst aufwendig 
erraten/reverse engineeren.

von CanCan (Gast)


Lesenswert?

Dr. Sommer schrieb:
> Du musst wissen welche Geräte am CAN-Bus hängen, welche
> ID's die senden/empfangen und wie die Formate sind.
Danke für die Antwort, ist also so wie bei TCP/IP mit festen IP adressen 
(ohne DHCP).

> Eine entsprechende
> Übersicht über alle Nachrichten eines Netzes nennt sich
> Kommunikations-Matrix oder CAN-Matrix.

Wird das händisch erzeugt bzw. "by human definition"?

> Ein übliches Format dafür ist
> Vector DBC. Ohne die Matrix musst du die Format erst aufwendig
> erraten/reverse engineeren.

Wenn ich das richtig lese ist das eine Datenbank die zwischen den 
Entwicklern ausgetauscht wird, nicht zwischen den Geräten.


Rolf M. schrieb:
> Ohne Betriebssystem, muss daher nicht booten und nicht heruntergefahren
> werden.

Danke für die Info.

von Dr. Sommer (Gast)


Lesenswert?

CanCan schrieb:
> Wird das händisch erzeugt bzw. "by human definition"?

Ja. Höchstens automatisch kombiniert.

CanCan schrieb:
> Wenn ich das richtig lese ist das eine Datenbank die zwischen den
> Entwicklern ausgetauscht wird, nicht zwischen den Geräten.

Ja. Wie gesagt, kein Plug and Play

von CanCan (Gast)


Lesenswert?

Dr. Sommer schrieb:
> Ja. Wie gesagt, kein Plug and Play

Jetzt kapier ich's, vielen Dank für die Info

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.