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


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von CanCan (Gast)


Bewertung
0 lesenswert
nicht 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)


Bewertung
1 lesenswert
nicht 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)


Bewertung
-1 lesenswert
nicht 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)


Bewertung
1 lesenswert
nicht lesenswert
Dann eben das gleiche Spiel mit einem Raspberry-PI o.ä.

von CanCan (Gast)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


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

von CanCan (Gast)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
-1 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
1 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht lesenswert
Dr. Sommer schrieb:
> Ja. Wie gesagt, kein Plug and Play

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.