STM32F103 "Blue Pill" als preiswertes CAN-Interface

OP Persönliche Seite #4743364
Lesenswert?

Gerd E. schrieb:
> Der STM32F103 ist für ein PC-CAN-Interface keine gute Wahl weil
> man CAN
> und USB nicht gleichzeitig nutzen kann.
>
> Ich würde eher den STM32F072 vorschlagen, dort gibt es diese
> Einschränkung nicht.

Stimmt, der STM32F072 wäre besser geeignet. Aber das Blue Pill Board 
gibt es schon für 1,40 incl. Versand (!) zu kaufen. Ein USB2Serail gibt 
es ab 1 Euro, auch incl. Versand. Den Preis kriegst Du mit einem 
STM32F072 Fertig-Board nicht hin.

Zudem brauchst Du Dich nicht mit USB-Programmierung rumschlagen. 
Weiterhin existiert ein SLCAN Trainer für Linux bzw. Windows - dadurch 
wird alles sehr einfach und schnell umsetzbar.

Gruß

Gerd
Gast #4743370
Lesenswert?

Gerd B. schrieb:
> Aber das Blue Pill Board
> gibt es schon für 1,40 incl. Versand (!) zu kaufen. Ein USB2Serail gibt
> es ab 1 Euro, auch incl. Versand. Den Preis kriegst Du mit einem
> STM32F072 Fertig-Board nicht hin.
Ganz ehrlich... Den Preis bekommt man so auch nicht hin. Selbst bei 
extrem großen Stückzahlen, WIE soll das gehen?
OP Persönliche Seite #4743374
Lesenswert?

Dennis X. schrieb:
> Gerd B. schrieb:
>> Aber das Blue Pill Board
>> gibt es schon für 1,40 incl. Versand (!) zu kaufen. Ein USB2Serail gibt
>> es ab 1 Euro, auch incl. Versand. Den Preis kriegst Du mit einem
>> STM32F072 Fertig-Board nicht hin.
> Ganz ehrlich... Den Preis bekommt man so auch nicht hin. Selbst bei
> extrem großen Stückzahlen, WIE soll das gehen?

Wir nicht - aber die Chinesen:
https://de.aliexpress.com/item/Free-Shipping-1pcs-lot-STM32F103C8T6-ARM-STM32-Minimum-System-Development-Board-Module-For-Arduin0/32498344057.html
Gast #4743376
Lesenswert?

Hat sich denn noch keiner erbarmt ein Wochenende zu investieren und auf 
einem STM32 einen USB<->CAN Adapter mit echtem USB Interface 
implementiert, das dann auch mit einem voll ausgelasteten CAN Bus klar 
kommt (im Gegensatz zu Seriell Interface)? Diese Frickelei ist ja 
traurig!
OP Persönliche Seite #4743494
Lesenswert?

Dr. Sommer schrieb:
> Hat sich denn noch keiner erbarmt ein Wochenende zu investieren
> und auf
> einem STM32 einen USB<->CAN Adapter mit echtem USB Interface
> implementiert, das dann auch mit einem voll ausgelasteten CAN Bus klar
> kommt (im Gegensatz zu Seriell Interface)? Diese Frickelei ist ja
> traurig!

Die "Frickelei" sprich Umweg über Seriell ist sogar der Garant für die 
Performance. Bei einem binären Format muss Du Dir Gedanken über das 
Timing und Zusammenpacken der Frames machen (USB-Frames 8000 Sekunde bei 
max. 22.000 CAN Frames die Sekunde). Bei Seriell (auch über USB) ist das 
nur "write and forget". Einzig der USB2Serial Wandler muss ca. 2,5 mal 
höhere serielle Baudrate machen können.

Frech behaupte ich mal das ich mit diesem Ansatz (CAN<->Serial<->USB) 
jeden kommerziellen CAN-USB Adapter in der Performance (sprich 
CAN-Pakete pro Sekunde ohne Vertauschungen und Drops) schlage ;-)

Gruß

Gerd

P.S.: Das Gleiche mit PIC (8Bit CPU @ 16MHz by Darron Broad)
https://github.com/GBert/misc/tree/master/can-can-test
Gast #4743511
Lesenswert?

Gerd B. schrieb:
> Bei Seriell (auch über USB) ist das
> nur "write and forget".
Ja schön, weil der Wandler einen Puffer hat. Überraschung, man kann auch 
auf einem Mikrocontroller puffern.

Gerd B. schrieb:
> Frech behaupte ich mal das ich mit diesem Ansatz (CAN<->Serial<->USB)
> jeden kommerziellen CAN-USB Adapter in der Performance (sprich
> CAN-Pakete pro Sekunde ohne Vertauschungen und Drops) schlage ;-)
Weil du glaubst dass kommerzielle Hersteller nicht in der Lage sind 
Puffer zu implementieren, und deswegen immer bei hohen CAN-Datenraten 
Paketverlust haben? Ob die professionellen Adapter von z.B. Vector die 
ca. 1k€ kosten wirklich so schlecht sind?

Die Daten vom USB-Seriell Wandler müssen aber auch durch den USB Port. 
Der Wandler kann also die Performance vom USB Port nicht erhöhen. Und 
selbst Full Speed USB hat nunmal schon eine viel höhere Datenrate als 
Seriell...
#4743582
Lesenswert?

Gerd B. schrieb:
> Stimmt, der STM32F072 wäre besser geeignet. Aber das Blue Pill Board
> gibt es schon für 1,40 incl. Versand (!) zu kaufen. Ein USB2Serail gibt
> es ab 1 Euro, auch incl. Versand. Den Preis kriegst Du mit einem
> STM32F072 Fertig-Board nicht hin.

Die STM32F072 gibts für ca. 1,36 EUR in China:
https://www.aliexpress.com/item//32467632421.html

Ist vielleicht kein Fertig-Board, aber Du brauchst ja eh noch eine 
Platine für den CAN-TRX und um die ganzen Breakout-Boards zu verbinden. 
Da kannst Du auch gleich eine nehmen auf der der µC auch mit drauf ist. 
So ein kleiner STM32 ist ja jetzt kein BGA-Hexenwerk oder ähnliches.
#4743585
Lesenswert?

Dr. Sommer schrieb:
> Hat sich denn noch keiner erbarmt ein Wochenende zu investieren und auf
> einem STM32 einen USB<->CAN Adapter mit echtem USB Interface
> implementiert

neben dem von Stefan genannten gäbe es z.B. noch dieses hier:
http://www.elektronik-keller.de/index.php/projekte/stm32/stm32-can

Dort kommt ein STM32F105 zum Einsatz um das Problem mit dem 
gleichzeitigen USB und CAN beim STM32F103 zu umgehen.
OP Persönliche Seite #4743589
Lesenswert?

Gerd E. schrieb:
> Dr. Sommer schrieb:
>> Hat sich denn noch keiner erbarmt ein Wochenende zu investieren und auf
>> einem STM32 einen USB<->CAN Adapter mit echtem USB Interface
>> implementiert
>
> neben dem von Stefan genannten gäbe es z.B. noch dieses hier:
> http://www.elektronik-keller.de/index.php/projekte/stm32/stm32-can
>
> Dort kommt ein STM32F105 zum Einsatz um das Problem mit dem
> gleichzeitigen USB und CAN beim STM32F103 zu umgehen.

stimmt - gibt es auch und - verwendet SLCAN API (serielles Protokoll) 
;-)
OP Persönliche Seite #4743597
Lesenswert?

Stefan O. schrieb:
> Ich werfe mal das in die Runde: http://canable.io/
>
> STM32F042C6
>
> Open Source Software, Firmware und Hardware.
> Firmware:
> 
https://github.com/normaldotcom/cantact-fw/archive/fb0f55fd3beb5c66446def5f60fd6e1adcc1178b.zip
> Hardware: http://hg.protofusion.org/canable/archive/tip.zip
>
>
> LG Stefan

verwendet auch SLCAN API ;-)
OP Persönliche Seite #4743627
Lesenswert?

Dr. Sommer schrieb:
> Gerd B. schrieb:
>> Bei Seriell (auch über USB) ist das
>> nur "write and forget".
> Ja schön, weil der Wandler einen Puffer hat. Überraschung, man kann auch
> auf einem Mikrocontroller puffern.
>
> Gerd B. schrieb:
>> Frech behaupte ich mal das ich mit diesem Ansatz (CAN<->Serial<->USB)
>> jeden kommerziellen CAN-USB Adapter in der Performance (sprich
>> CAN-Pakete pro Sekunde ohne Vertauschungen und Drops) schlage ;-)
> Weil du glaubst dass kommerzielle Hersteller nicht in der Lage sind
> Puffer zu implementieren, und deswegen immer bei hohen CAN-Datenraten
> Paketverlust haben? Ob die professionellen Adapter von z.B. Vector die
> ca. 1k€ kosten wirklich so schlecht sind?

Die Adapter sind galv. getrennt entsprechen div. Standards. Sehr gut - 
keine Frage - aber nicht so schnell. Hast Du schon mal mit so einen 
USB-Adapter mit max. Geschwindigkeit mit SFF und DLC0 bearbeitet ?

Richtige CAN-Adapter werden aus gutem Grund nicht per USB angebunden 
sondern via PCI&PCIe bzw sind Teil des verwendeten SoCs. Das Delay ist 
zudem wesentlich geringer.

>
> Die Daten vom USB-Seriell Wandler müssen aber auch durch den USB Port.
> Der Wandler kann also die Performance vom USB Port nicht erhöhen. Und
> selbst Full Speed USB hat nunmal schon eine viel höhere Datenrate als
> Seriell...

Das Problem beim binären Format ist das Framing. Halt kurz inne und denk 
drüber nach ;-) Skizziere mal, wie so ein Puffer aussehen muss und wie 
Du Ihn mit dem USB Timing synchronisierst. Bedenke bitte, das Du auch 
mal 3 CAN Frames in einem USB Frame übertragen musst.

Beim seriellen Format: Schreibe/Lese was Du hast. Ein \r ist das Zeichen 
für einen neuen Frame. Der USB-Adapter überträgt was er gerade hat.
Die USB-Geschwindigkeit ist hier nicht das begrenzende Merkmal.


Gruß

Gerd

PS: Herrliche Diskussion :-)
Gast #4743706
Lesenswert?

Gerd B. schrieb:
> Die Adapter sind galv. getrennt entsprechen div. Standards.
Auch die nichtisolierenden sind so teuer. Bestimmt nicht weil die Frames 
verlieren.
> Sehr gut -
> keine Frage - aber nicht so schnell. Hast Du schon mal mit so einen
> USB-Adapter mit max. Geschwindigkeit mit SFF und DLC0 bearbeitet ?
Nein, was ist das? Small Form Factor, was hat das damit zu tun? Ich 
hatte nur mal einen fast vollen CAN Bus, war natürlich kein Problem.
>
> Richtige CAN-Adapter werden aus gutem Grund nicht per USB angebunden
> sondern via PCI&PCIe bzw sind Teil des verwendeten SoCs. Das Delay ist
> zudem wesentlich geringer.
USB HS kann 480 MBit/s, und das soll nicht für einen popeligen CAN mit 1 
MBit/s reichen?! Nur das Delay ist hier ein Argument.
>
>>
>> Die Daten vom USB-Seriell Wandler müssen aber auch durch den USB Port.
>> Der Wandler kann also die Performance vom USB Port nicht erhöhen. Und
>> selbst Full Speed USB hat nunmal schon eine viel höhere Datenrate als
>> Seriell...
>
> Das Problem beim binären Format ist das Framing. Halt kurz inne und denk
> drüber nach ;-)
Denkst du überhaupt nach?
> Skizziere mal, wie so ein Puffer aussehen muss
4 Bytes für ID und Flag, 8 Bytes für Daten, wo ist das Problem? Könnte 
man z.B. 1:1 so machen wie in der CAN-Peripherie vom STM32.
> und wie
> Du Ihn mit dem USB Timing synchronisierst. Bedenke bitte, das Du auch
> mal 3 CAN Frames in einem USB Frame übertragen musst.
Gar nichts muss ich. Ein Ring-Puffer ist jetzt keine grandiose neue 
Erfindung. Damit kriegt man vieles synchronisiert. Nichts anderes 
arbeitet auch in deinen hochgelobten USB-Serial-Adaptern. Ein USB End 
Point ist letztendlich nur ein serieller Bytestrom, wie beim UART. Da 
kann man auch beliebig Puffer binär oder ascii übertragen.
>
> Beim seriellen Format: Schreibe/Lese was Du hast. Ein \r ist das Zeichen
> für einen neuen Frame.
Oder man lässt das Frame nach DLC+4 Bytes enden, dann spart man das \r 
und vereinfacht das Parsen.
Was hat überhaupt ASCII vs. binär mit Serial vs. USB zu tun?! Man kann 
binäre und ASCII Daten beliebig über Serial oder USB übertragen. 
Effizienter ist es natürlich in beiden Fällen, die Daten direkt binär 
zu übertragen.

> Der USB-Adapter überträgt was er gerade hat.
Ja und? Der USB-Controller nicht? Erkläre mal bitte, wieso ein 
USB-Serial-Adapter die Qualität/Geschiwndigkeit des USB (FS)-Busses 
magisch erhöhen soll, und dann auch noch schneller als USB HS? Was 
passiert deiner Logik nach, wenn man den UART einspart und den 
virtuellen Serial Port direkt auf dem Mikrocontroller implementiert? 
Wird es dann auch magisch schneller als wie wenn ich die CAN Daten 
"direkt" übertrage?
> Die USB-Geschwindigkeit ist hier nicht das begrenzende Merkmal.
Sondern, das Karma?
> PS: Herrliche Diskussion :-)
In der Tat! Trollst du nur oder glaubst du wirklich was du hier 
verzapfst?
Gast #4743718
Lesenswert?

Gerd B. schrieb:
> Sehr gut -
> keine Frage - aber nicht so schnell.
PS:
Hier das Manual der Vector VN16 Reihe:
http://vector.com/portal/medien/cmc/factsheets/VN16xx_FactSheet_EN.pdf
"Flexible FPGA-based CAN and LIN implementation allows 100% bus load on 
all channels"
"Fast baudrates: CAN (max.  2 Mbit/s), CAN FD  (max. 8 Mbit/s) and LIN 
(max. 330 kbit/s)"
"USB 2.0 High-speed"

Spricht für sich denke ich. Als Marktführer wird Vector da kaum lügen.
#4743765
Lesenswert?

Gerd B. schrieb:
> Das Problem beim binären Format ist das Framing. Halt kurz inne und denk
> drüber nach ;-) Skizziere mal, wie so ein Puffer aussehen muss und wie
> Du Ihn mit dem USB Timing synchronisierst. Bedenke bitte, das Du auch
> mal 3 CAN Frames in einem USB Frame übertragen musst.

Ich vermute Dir fehlt hier ein wenig die programmiertechnische Fantasie.

Die CAN-Hardware und die USB-Hardware im STM32 haben jeweils eigene, 
voneinander unabhängige Puffer. Die bedienst Du am besten per DMA, geht 
aber auch ohne.

Damit laufen CAN und USB asynchron zueinander. Der Core kümmert sich nur 
drum die jeweiligen Frames zu analysieren, die Daten umzupacken und 
wieder auf die Reise zu schicken. Währenddessen laufen die beiden 
Hardware-Einheiten unabhängig voneinander weiter.

Händisch irgendwelche CAN-Frames mit USB-Frames synchronisieren zu 
wollen ist dagegen kein geeigneter Ansatz.

Das einzige Thema ist die Latenz die bedingt durch das USB dazukommt. 
Dagegen braucht man vielleicht in ganz wenigen Ausnahmefällen so eine 
PCIe-Karte. Diese Latenz betrifft Deinen USB/Seriell-Wandler aber ganz 
genauso wie einen µC der das USB selbst bedient.
OP Persönliche Seite #4743786
Lesenswert?

Gerd E. schrieb:
> Gerd B. schrieb:
>> Das Problem beim binären Format ist das Framing. Halt kurz inne und denk
>> drüber nach ;-) Skizziere mal, wie so ein Puffer aussehen muss und wie
>> Du Ihn mit dem USB Timing synchronisierst. Bedenke bitte, das Du auch
>> mal 3 CAN Frames in einem USB Frame übertragen musst.
>
> Ich vermute Dir fehlt hier ein wenig die programmiertechnische Fantasie.
>
> Die CAN-Hardware und die USB-Hardware im STM32 haben jeweils eigene,
> voneinander unabhängige Puffer. Die bedienst Du am besten per DMA, geht
> aber auch ohne.
>
> Damit laufen CAN und USB asynchron zueinander. Der Core kümmert sich nur
> drum die jeweiligen Frames zu analysieren, die Daten umzupacken und
> wieder auf die Reise zu schicken. Währenddessen laufen die beiden
> Hardware-Einheiten unabhängig voneinander weiter.

Wahrscheinlich fehlt mir dazu die Fantasie ;-) Gerne würde ich so eine 
Implementierung mal sehen. Also: Wer schreibt das mal schnell an einem 
Wochenende ?

Gruß

Gerd
OP Persönliche Seite #4743787
Lesenswert?

Dr. Sommer schrieb:
> Gerd B. schrieb:
>> Sehr gut -
>> keine Frage - aber nicht so schnell.
> PS:
> Hier das Manual der Vector VN16 Reihe:
> http://vector.com/portal/medien/cmc/factsheets/VN16xx_FactSheet_EN.pdf
> "Flexible FPGA-based CAN and LIN implementation allows 100% bus load on
> all channels"
> "Fast baudrates: CAN (max.  2 Mbit/s), CAN FD  (max. 8 Mbit/s) and LIN
> (max. 330 kbit/s)"
> "USB 2.0 High-speed"
>
> Spricht für sich denke ich. Als Marktführer wird Vector da kaum lügen.

OK. Die sind schnell genug.

Gruß

Gerd
Gast #4743800
Lesenswert?

Gerd B. schrieb:
> Gerne würde ich so eine Implementierung mal sehen

In erster Näherung genau wie beim Serial Port. Die Ausgabe schickst du 
aber nicht direkt in die Peripherie Register, sondern in einen 
Ringpuffer. Der wird dann asynchron per USB verschickt. Die 
Implementierung von Ringpuffern gibt's im Internet zuhauf.

Gerd E. schrieb:
> Händisch irgendwelche CAN-Frames mit USB-Frames synchronisieren zu
> wollen ist dagegen kein geeigneter Ansatz.

Danke für diesen Beitrag, so meinte ich das und mit fehlten die Worte...
#4743825
Lesenswert?

Schöne Diskussion, aber hat von euch schon mal wer in die von mir 
verlinkten git sources geschaut? Dort wird meiner Meinung nach genau das 
gemacht wovon ihr hier schreibt. CAN und USB Peripherie initialisieren. 
Pakete annehmen, umpacken weiterschicken und das in beide Richtungen. 
Ein paar Zeilen Code (abgesehen von dem ganzen Elend der für USB 
Descriptoren und Co notwendig ist)

LG
#4743852
Lesenswert?

Dr. Sommer schrieb:
>> Richtige CAN-Adapter werden aus gutem Grund nicht per USB angebunden
>> sondern via PCI&PCIe bzw sind Teil des verwendeten SoCs. Das Delay ist
>> zudem wesentlich geringer.
> USB HS kann 480 MBit/s, und das soll nicht für einen popeligen CAN mit 1
> MBit/s reichen?! Nur das Delay ist hier ein Argument.

Bis vor einiger Zeit waren USB CAN Interfaces, welche USB-HS nutzen noch 
Mangelware. Aber so langsam wird es besser und entschärft so das 
Problem. dass USB der Flaschenhals ist. Und auch das Delay-Problem 
entschärft sich etwas.
OP Persönliche Seite #4743858
Lesenswert?

Dr. Sommer schrieb:
> Gerd B. schrieb:
>> Gerne würde ich so eine Implementierung mal sehen
>
> In erster Näherung genau wie beim Serial Port. Die Ausgabe schickst du
> aber nicht direkt in die Peripherie Register, sondern in einen
> Ringpuffer. Der wird dann asynchron per USB verschickt. Die
> Implementierung von Ringpuffern gibt's im Internet zuhauf.

Ringbuffer ist mir ein Begriff. Verwendet auch der verlinkte Code.

>
> Gerd E. schrieb:
>> Händisch irgendwelche CAN-Frames mit USB-Frames synchronisieren zu
>> wollen ist dagegen kein geeigneter Ansatz.
>
> Danke für diesen Beitrag, so meinte ich das und mit fehlten die Worte...

Keine Frage - eine reine USB Implementierung mit STM32F105 oder 
STM32F0x2 sind sicherlich eine reizvolle Aufgabe. Ein Lösung mit SLCAN 
hätte den Vorteil, da es fertige Treiber bzw. Software bereits zuhauf 
existieren.

Ein Protokoll auf binärer Basis (ohne den Umweg über ASCII) ist der 
Königsweg. Für Linux ist es aber nicht trivial, einen Treiber dafür zu 
bauen und in den offiziellen Kernel zu bekommen.

Aber zurück zum eigentlichen Thema: Preiswerter CAN-Adadpter mit Blue 
Pill sprich billigst Board. Alle Schmähungen und Buhrufen zum Trotz:
Diese 5€ Lösung kann es mit gekauften Adapter aufnehmen und sticht diese 
teilweise aus (abgemilderte Provokation ;-) !

Gruß

Gerd
#5876264
Lesenswert?

Billige UART-USB-Wandler haben kein Flowcontrol und sind weniger 
zuverlässig bei hohen Baudraten. Mit 1MBit CAN und SLCAN ist 3 MBit 
Datenrate erforderlich.

Bei einem klassischen USB-Device ist der Treiber ein Thema.

Ideal wäre also eine direkte USB-Verbindung, bei der sich das USB-Gerät 
trotzdem als virtueller COM/tty beim USB-Host meldet und SLCAN spricht.
Gast #5876429
Lesenswert?

Martin B. schrieb:
> Habe es nicht ausprobiert, aber wenn ich CubeMX bemühe geht es mit dem
> 103er doch. Erst USB aktivieren, dann CAN.

Nur weil sich die Pins nicht überschneiden, heißt das nicht dass es 
geht! Zitat RefMan:

In low, medium-, high- and XL-density devices the USB and CAN share a 
dedicated 512-byte SRAM memory for data transmission and reception, and 
so they cannot be used concurrently (the shared SRAM is accessed through 
CAN and USB exclusively). The USB and CAN can be used in the same 
application but not at the same time.

Also ziemlich nutzlos als USB-CAN-Adapter.
Gast #5876431
Lesenswert?

Martin B. schrieb:
> Habe es nicht ausprobiert, aber wenn ich CubeMX bemühe geht es mit dem
> 103er doch. Erst USB aktivieren, dann CAN. In dem Fall wird CAN auf
> PB8/PB9 gemappt.

Das funktioniert aber nicht, weil beide Schnittstellen sich den selben 
Pufferspeicher teilen. Wenn man mit dem Referenzhandbuch arbeiten würde, 
anstatt mit Cube MX spielen würde, wüsste man das.
#5876473
Lesenswert?

Stefanus F. schrieb:
> Wie wäre dieses STM32F303 Board?:
> http://stefanfrings.de/stm32/stm32f3.html#stm32f3mini
> Das kann auch USB und CAN gleichzeitig.
>
> Das Programm muss natürlich an den Mikrocontroller angepasst werden.

Es mangelt nicht an Boards, die CAN und USB gleichzeitig können, sondern 
an einer SW-Implemtierung für selbige, bei der auf PC-Seite keine 
(sonstigen) Treiber erforderlich sind (virtuelles serial).

Und im Falle von Gerds Ansatz wäre ein Board mit integriertem USB-UART 
sinnvoll, bei dem hardware flow control enthalten ist.
Ein Vorteil von CAN ist ja gerade die hohe Zuverlässigkeit. Da wäre es 
ungeschickt, dann die Pakete im Adapter zu verlieren.
Gast #5876490
Lesenswert?

Lars R. schrieb:
> Es mangelt nicht an Boards, die CAN und USB gleichzeitig können, sondern
> an einer SW-Implemtierung für selbige, bei der auf PC-Seite keine
> (sonstigen) Treiber erforderlich sind (virtuelles serial).

Was den USB Teil angeht, habe ich auf der selben Webseite weiter unten 
die USB CDC Implementierung von W.S. in angepasster Form veröffentlicht.

Flow Control (im Sinne der virtuellen seriellen) ist da nicht mit drin.
Gast #5876522
Lesenswert?

Lars R. schrieb:
> Es mangelt nicht an Boards, die CAN und USB gleichzeitig können, sondern
> an einer SW-Implemtierung für selbige, bei der auf PC-Seite keine
> (sonstigen) Treiber erforderlich sind (virtuelles serial).

Virtuelle Serial-Ports sind eine Krücke. Die machen nur alles 
komplizierter und fehleranfälliger. Dank WinUSB und libusb braucht man 
auch für eigene USB-Geräte mit "richtigem" USB-Protokoll keine Treiber.
#5876532
Lesenswert?

Ich denke, bei USB CDC braucht es kein flow control, wenn die Buffer 
groß genug sind. Physikalisch gibt es ja keine limitierende Baudrate 
mehr für diese Anwendung.


Dr. Sommer schrieb:
> Lars R. schrieb:
>> Es mangelt nicht an Boards, die CAN und USB gleichzeitig können, sondern
>> an einer SW-Implemtierung für selbige, bei der auf PC-Seite keine
>> (sonstigen) Treiber erforderlich sind (virtuelles serial).
>
> Virtuelle Serial-Ports sind eine Krücke. Die machen nur alles
> komplizierter und fehleranfälliger.

In welcher Hinsicht? Der Ansatz von Stefanus/W.S. sieht doch gut aus.
Gast #5876534
Lesenswert?

Dr. Sommer schrieb:
> Dank WinUSB und libusb braucht man
> auch für eigene USB-Geräte mit "richtigem" USB-Protokoll keine Treiber.

Ein Tutorial dazu wäre mal was feines, und zwar eins für Leute, die mit 
dem USB Protokoll an sich noch nicht vertraut sind.

Ich jedenfalls weiß über USB nicht viel mehr, als wie herum man den 
Stecker einstecken muss. Diese Technik ist für Hobbyelektroniker schwer 
zugänglich. Ethernet kommt mir da viel zugänglicher vor.,
Gast #5876539
Lesenswert?

Lars R. schrieb:
> In welcher Hinsicht? Der Ansatz von Stefanus/W.S. sieht doch gut aus.

Man wirft die von USB gratis gebotene Fluss Kontrolle und Paketierung 
weg. Auf PC Seite muss man sicher stellen den richtigen COM Port zu 
öffnen. Man muss sich mit FIFO-puffern im Treiber rumschlagen. Man hat 
nur einen "Endpoint". Man muss sich was ausdenken um den Anfang einer 
Kommunikation/Paket zu finden. usw usf.

Stefanus F. schrieb:
> Ein Tutorial dazu wäre mal was feines, und zwar eins für Leute, die mit
> dem USB Protokoll an sich noch nicht vertraut sind.

Äh... Du kennst doch das Tutorial im Wiki?
Gast #5876543
Lesenswert?

Stefanus F. schrieb:
> Diese Technik ist für Hobbyelektroniker schwer zugänglich

Weil alle USB-Spezifikationen offen runterzuladen sind? Weil zumindest 
USB-LS/FS kaum Hardware braucht (übertrager usw)? Weil man nicht ein 
Dutzend Protokolle beherrschen muss (Ethernet, ARP, IP, DHCP, AUTOIP, 
DNS, TCP, UDP, ICMP...)? Weil man sich nicht den Kopf über einen 
Konfigurations/Discovery Mechanismus zerbrechen muss? Weil man sich 
nicht mit Firewalls rumschlagen muss?
OP Persönliche Seite #5876578
Lesenswert?

Lars R. schrieb:
> Gerd, wo genau kann ich alle erforderlichen Bauteile (inkl. PCB, falls
> ich selbst aufbauen soll) kaufen?

BluePill bekommst Du über ebay oder Aliexpress. Die restlichen Bauteile 
über Reichelt z.B. .

>
> Nutzt Du Deinen Lösungsvorschlag noch selbst, nun nach 2,5 Jahren?
> Bis zu welcher Bus-Geschwindigkeit gibt es bei 100% Buslast keinen
> Verlust?

ich nutze den Lösungsvorschlag nicht mehr. Ich nehme entweder:
http://lnxpps.de/bpi/
https://github.com/GBert/misc/blob/master/RPi-MCP2515/README.md
zusehends auch:
https://github.com/GBert/misc/blob/master/RPi-MCP2517/README.md

bzw. PIC18F25K80 in Verbindung mit Linux-Mini Rechnern wie Omega2+:
http://lnxpps.de/can2udp/srseII/pictures/omega2-first-board-01.jpg

Ein Vorteil des PICs ist, das dieser in der Schaltung einfach und 
schnell upgedated werden kann. Aufgrund der überschaubare Auslastung 
übernimmt der PIC auch noch andere Aufgaben.
OP Persönliche Seite #5876585
Lesenswert?

Stefanus F. schrieb:
> Wie wäre dieses STM32F303 Board?:
> http://stefanfrings.de/stm32/stm32f3.html#stm32f3mini
> Das kann auch USB und CAN gleichzeitig.
>
> Das Programm muss natürlich an den Mikrocontroller angepasst werden.
könnte klappen.

Alternativ gibt es noch dieses:
https://www.electrodragon.com/product/can-usb-debugger-board/
Mit integrierter SLCAN Firmware.

Ich habe das Board zwar, aber habe es bisher nicht ausführlich getestet.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren