Forum: Mikrocontroller und Digitale Elektronik CAN over USB


von Tikonteroga (Gast)


Lesenswert?

Hallo,

ich möchte gerne folgende Platine erstellen.

- Das Board soll über 2x High Speed CAN verfügen.
- Das Board soll über 1x High Speed USB verfügen, mit dem es an einen 
Windows-PC angeschlossen werden kann.
- Es soll ein USB Treiber und eine Bibliotheke für Windows verfügbar 
sin.
- Die Flash Programmierung soll über USB durchgeführt werden. Dabei soll 
das Kommunikationsprotokol über USB von mir bestimmt und implementiert 
werden. Meine implementierung gibt die Übertragenden Daten dann weiter 
an die Routinen, die die Flash Programmierung durchführen.
- Das Board soll für einen Temperaturbereich von -40° C .. 105° C 
ausgelegt sein.
- Das Board soll über Hardware-Timer verfügen.
- Das Board soll über USB mit Strom versorgt werden.
- Das Board soll über einen niedrigen Energieverbrauch verfügen.

Hierfür bin ich gerade auf der Suche nach Bauteilen. Ich habe jedoch 
keine Erfahrung und kenne mich nicht aus.

Hättet ihr vielleicht vorschläge für Bauteile wie etwa den 
Micocontroller oder ggfs. externe Chips für USB und CAN?

Ich hätte eine weitere Frage. Gibt es elegante und effiziente 
Möglichkeiten um vor der Kompilierung der Software einen Filter auf 
bestimmte IDs festzulegen (White List), die ich empfangen und 
verarbeiten möchte?

von Markus_AC (Gast)


Lesenswert?

Was willst Du denn mit dem Board machen?
Wenn Du von Windows aus auf zwei CAN-Busse zugreifen willst, nimm Dir 
doch was fertiges: http://www.peak-system.com/PCAN-USB-Pro.200.0.html
Dazu gibt es auch genügend Treiber und Software - auch freie Software 
ist verfügbar.

von Christian R. (supachris)


Lesenswert?

Kannst ja 2 SJA1000 an einen Cypress FX2 anschließen dann hast du alles 
zusammen.

von Tikonteroga (Gast)


Lesenswert?

Markus_AC schrieb:
> Was willst Du denn mit dem Board machen?
> Wenn Du von Windows aus auf zwei CAN-Busse zugreifen willst, nimm Dir
> doch was fertiges: http://www.peak-system.com/PCAN-USB-Pro.200.0.html
> Dazu gibt es auch genügend Treiber und Software - auch freie Software
> ist verfügbar.

Hallo,

also ich würde gerne folgendes machen.

- Ich möchte den Source Code für jeden Anwendungsfall neu kompilieren 
und den Flash neu programmieren. Bei der Flash Programmierung über USB 
möchte ich ein bestimmtes Protokoll verwenden.
- Ein Anwendungsfall ist, dass bestimmte Signale aus dem Frame 
extrahiert und unter einer bestimmten Addresse im Ram abgelegt werden. 
Wenn das gleiche Frame wieder empfangen wird, wird das vorhandene Signal 
bzw. die vorhandenen Signale  überschrieben. Es wird also immer das 
aktuellste Signal gespeichert. Parallel wird über mehrere Timer (z. B. 
10, 20, 50, 100, 500 und 1000 ms) das aktuellste Signal über USB 
übertragen. Dabei kann ein Signal einen Timer haben und ein Timer 
mehrere Signale. Die Sgnale, mit dem gleichen Timer liegen im Speicher 
in einem fortlaufendem Bereich.
- Ein weiterer Anwendungsfall wäre quasi das gleiche Prinzip, nur dass 
ich von bestimmten Frames das 8-Byte Datenfeld und nicht nur einzelne 
Signale speichere und zyklisch per USB übertrage.
- Der letzte Anwendungsfall ist, dass ich von bestimmten Frames das 
komplette Frame sofort über USB weiterleite ohne es zu speichern.

von Klaus D. (Firma: MHS-Elektronik GmbH & Co. KG) (mhs-elektronik)


Lesenswert?

Die Tiny-CAN API hat Funktionen zum filtern von CAN Nachrichten.
Gefilterte Nachrichten werden in einen Puffer abgelegt der mit jeder 
neuen
Nachricht überschrieben wird.

http://www.mhs-elektronik.de/index.php?module=download&action=list

Eine extra Firmware für jeden Anwendungsfall zu erstellen macht
keinen Sinn, der PC kann ja ohne Probleme alles machen.

Oder hast Du noch einen PC mit 8 Bit Prozessor :-)

Gruß
Klaus

von Tikonteroga (Gast)


Lesenswert?

Doch, gerade das Erstellen einer neuen Firmware für jeden Anwendungsfall 
ist der Sinn und Kern der Sache. Es wird eine 
Pre-Compiler-Time-Configuration vorgenommen.

von Tikonteroga (Gast)


Lesenswert?

Ich frage jetzt mal, etwas konkreter. Wäre ein Cortex M3 für mich 
geeignet?

von Uwe Bonnes (Gast)


Lesenswert?

STM32 kann entweder 2*Can + 1* USB FS oder 1*Can + 1* USB HS. Eine ULPI 
Pin, der fuer HS benotigt wir, kollodiert mit dem zweiten CAN Kanal.

von Martin M. (capiman)


Lesenswert?

Kannst Du ein bisschen mehr Details nennen,
was Du unter "Pre-Compiler-Time-Configuration" verstehst
und was der Vorteil des ganzen ist?

Ist das ein Hobby-Projekt oder was kommerzielles?
Soll nur 1 Stück entstehen oder mehrere davon?
Wo/mit was/in was soll das ganze eingesetzt werden?

von Tikonteroga (Gast)


Lesenswert?

Es gibt mehrere formale Beschreibungsdateien, wie etwa DBC, Fibex oder 
A2L. Aus diesen Dateien wird Code generiert (Pre-Prozessor Konstanten, 
initialisierte Arrays und Strukturen). Dieser Konfigurations-Code wird 
von fertigen Modulen (.h + .c) importiert. Dann wird der kompiliert und 
die Zielplattform wird geflashed.

von Tikonteroga (Gast)


Lesenswert?

Was haltet ihr denn von folgenden Microcontrollern für meinen 
Anwendungsfall? Falls dieser Controller geeignet ist, würde ich ihn auch 
mal mit den Modellen von Texas Instruments und Freescale vergleichen...

Type number
Flash total
Flash bank A
Flash bank B
Total SRAM
LCD
Ethernet
USB0 (Host, Device, OTG)
USB1 (Host, Device)/ULPI interface
PWM
QEI
ADC channels
Temperature range[1]
GPIO

LPC4327JET100 1 MB 512 kB 512 kB 136 kB no no yes no/no no no 4 J 49
LPC4325JET100 768 kB 384 kB 384 kB 136 kB no no yes no/no no no 4 J 49
LPC4323JET100 512 kB 256 kB 256 kB 104 kB no no yes no/no no no 4 J 49

Unterschiede gibt es beim Flash- und beim RAM-Speicher. Hier weiss ich 
noch nicht wieviel ich benötige.

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.