4xCDC+HID per STM32?

OP #6166564
Hallo Leute,

ich habe den Auftrag ein existierendes Design zu erneuern.
Gebraucht werden 4 serielle Schnittstellen und eine Möglichkeit zum 
Ansteuern von GPIO Ein/Ausgängen.
Bisher wurde ein FTDI4232 und ein UHID Baustein mit einem USB Hub 
verbunden.

Das soll per STM32 ersetzt werden. Ich nehme statndardmäßig den 
STM32F437.
Der hat 8 Endpoints.
irgendwo wurde hier mal diskutiert; für ein CDC braucht man 3Endpoints.
Damit reichen aber die 8 Endpoints nicht aus ....

Gibt es eventuell ein STM32-Derivat, was das kann oder
Habt Ihr andere Empfehlungen?

Danke und Grüße,

Adib.
--
Moderator Persönliche Seite #6166583
The A. schrieb:
> irgendwo wurde hier mal diskutiert; für ein CDC braucht man 3Endpoints.

So ist es.  In und Out für die Daten, Interrupt aus eher historischen 
Gründen. Wenn der aber fehlt, lehnen die meisten Betriebssysteme das 
Teil als ungültiges CDC ab.

Schätzungsweise wird bei den 8 Endpoints auch der obligatorische control 
endpoint noch mit gezählt werden müssen, also stehen nur 7 Stück für die 
eigentlichen Devices zur Verfügung.

Habe hier gerade einen SAME70 in der Mache, der hat 10 Endpoints, damit 
könnte man zumindest 3 CDCs aufsetzen. Du bräuchtest dagegen mindestens 
13.
#6166589
ohne Gewähr da ich deinen Chip nicht kenne und keine Lust habe mich 
durchs Datenblatt zu wühlen:

Folgendes könnte funktionieren falls dein Chip das kann.
VCP braucht 2 Bulk eps (1 in 1 out) + 1(fast immer) unbenutzter 
Interrupt EP um spec konform zu sein.

Man könnte das Bulkpaar mit einer EP Nummer machen wenn dieser EP für In 
und Out funktioniert.
Für den Interrupt EP benutzt man 4 mal den gleichen EP für alle 4 Eps. 
macht insgesammt 5 EPs.
Ob sowas funktioniert must du wohl ausprobieren, ich sehe da aber erst 
mal keinen Grund warum das nicht gehen sollte.

Thomas
Gast #6166630
The A. schrieb:
> Gebraucht werden 4 serielle Schnittstellen und eine Möglichkeit zum
> Ansteuern von GPIO Ein/Ausgängen

Der STM hat doch 4 UARTS und etliche GPIOs. Warum das ganze USB-Zeug?
Du brauchst doch nur 2*MAX3232 o.Ä. und irgendwelche 
Schutzschaltungen/Transistoren/Relais für die GPIOs.

Grüße, Brt
Gast #6166640
Jörg W. schrieb:
> brt schrieb:
>> Warum das ganze USB-Zeug?
>
> Vielleicht, weil der Host, an den das Ganze dran soll, eben keine vier
> RS-232-Schnittstellen bietet, an die man deine UARTs hängen könnte?

Sorry, ich wusste von keinem Host. Ich habe das für ein Gerät mit 4 
RS232 und GPIOs gehalten was neu gebaut werden soll.
OP #6166646
brt schrieb:
> The A. schrieb:
>> Gebraucht werden 4 serielle Schnittstellen und eine Möglichkeit zum
>> Ansteuern von GPIO Ein/Ausgängen
>
> Der STM hat doch 4 UARTS und etliche GPIOs. Warum das ganze USB-Zeug?
> Du brauchst doch nur 2*MAX3232 o.Ä. und irgendwelche
> Schutzschaltungen/Transistoren/Relais für die GPIOs.
>
> Grüße, Brt

Ja das Ganze soll an einem PC hängen.
Ein Prozess beschäftigt sich mit den GPIOs, der andere mit den 
Schnittstellen.

Der Controller sollte jetzt eventuell mehrere Komponenten zusammenfassen 
zu einem Chip.
also FTDI + HID + USBHub.

HTH, Adib.
---
OP #6166662
Dann hab ich ja immernoch  den HUB zusätzlich.
WEnn, dann sollte es eine Ein-Chip-Lösung sein.

Ansonsen, muss ich mir halt was anderes überlegen. ...
oder wieder sie alten Module.
Schade, dass es vom FT4232 keinen FTX-Nachfolger gibt.

Adib.
#6166674
The A. schrieb:
> Ja das Ganze soll an einem PC hängen.
> Ein Prozess beschäftigt sich mit den GPIOs, der andere mit den
> Schnittstellen.

Also wenns nur ein Prozess ist der mit den 4 Stück CDC's hantiert, dann 
reichts doch wenn Du nur einen CDC verwendest und die Daten 
zusammengefasst überträgst und dann auf dem Computer wieder 
auseinandernimmst.
#6166881
ich hab das gerade mal mit dem 3 fach VCP von Niklas
https://www.mikrocontroller.net/articles/USB-Tutorial_mit_STM32
auf einem bluepill getestet. Man kann den Interrupt EP problemlos 
mehrfach verwenden.
1
static constexpr auto confDescriptor = EncodeDescriptors::USB20::configuration (
2
      6,      // bNumInterfaces
3
      1,      // bConfigurationValue
4
      0,      // iConfiguration
5
      0x80,    // bmAttributes
6
      250,    // bMaxPower (500mA)
7

8
      // Füge die Deskriptoren für die VCPs hinzu
9
      //vcpDescriptor (0, 1, 2),
10
      //vcpDescriptor (2, 3, 4),
11
      //vcpDescriptor (4, 5, 6)
12
      vcpDescriptor (0, 1, 2),//interface,intEp,bulkEp
13
      vcpDescriptor (2, 1, 3),
14
      vcpDescriptor (4, 1, 4)

Ein 4. VCP sollte also möglich sein

Thomas
#6167178
The A. schrieb:

> Ja das Ganze soll an einem PC hängen.
> Ein Prozess beschäftigt sich mit den GPIOs, der andere mit den
> Schnittstellen.
>
> Der Controller sollte jetzt eventuell mehrere Komponenten zusammenfassen
> zu einem Chip.
> also FTDI + HID + USBHub.

Dann mache das ganze doch über Ethernet und mehrere TCP oder 
UDP-Verbindungen. Die Möglichkeit, viele von einander unabhängige 
Verbindungen über eine Leitung zu multiplexen, ist da ja seit Anfang an 
eingebaut.

fchk

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 6 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.