Hallo Leute, ich suche ein uC o.ä. mit eingebauter USB Schnittstelle und folgenden Kriterien: - DLL vom Hersteller, dass man mit Win10 etc. keine Probleme hat - IO Toggling möglichst bis 4 MHz - Bulk USB Transfer, wenig Verzögerung zw. den einzelnen Datenpaketen. - I2C Schnittstelle - Kein BGA package Bin bei der Suche auf die PSOC's gestoßen, nun welcher ist dafür eher geeignet bzw. gibt es noch tolle Alternativen?
Hallo, Und wieder eine der nicht ganz verstanden hat wie USB funktioniert, ... (sorry den konnte ich mir nicht verkneifen) USB teilt sich bekantlich in mehrere Schichten auf. - HW Layer (Physik), - Endnpoints - irgendwo kommem dann mal die Bulk interrupt ... endpoints - USB Klassen Wie HID , Maass Storage, ... Bitte entschuldigt die Unschärfe bei den Schichten. Ein wie auch immer gearteter MC stellt die HW für USB zur Verfügung (bis leven Endpints. Was der Endpoint jetzt genau ist ob balk interrupt ... entscheidet die FW des MC. und was jetzt über den Bulk / interrupt enspoint geht wieder um die USB Klasse Windows selber braucht für jedes USB Device einen Treiber. Windows kann zwar mit allen Endpoint typen umgehen, ... Stellt selber aber nur Standardtreiber für einige USB Klassen zur Verfügung. Alles andere sind dann Treiber der einzelnen Hersteller. Windows 10 braucht dummerweise Signierte Treiber (ja man kann das auch zur Entwicklung aus knipsen) ggf hilft die USB Lib. die ermöglicht direkten zugriff auf endpoint ebene. https://libusb.info/ ggf gibt es von FTDI einen Baustein der das gewünschte erfüllt. Gab hier vor kurzen jemanden der was ähnliches gesucht hat und das Datenblatt von FTDI nicht ganz verstanden hatte (RS232 SPI I2C / ... geht nicht gleichzeitig) Aber ein 2 Port / 4 port baustein muss nicht auf allen ports das gleiche machen. ggf ein IO-Warrior? Grüsse aus dem Süden der Republick.
123 schrieb: > Und wieder eine der nicht ganz verstanden hat wie USB funktioniert, ... > (sorry den konnte ich mir nicht verkneifen) Gebe zu, kenne mich mit dem Gebiet nicht wirklich gut aus. 123 schrieb: > ggf gibt es von FTDI einen Baustein der das gewünschte erfüllt. Es ist kein Mikrocontroller, ich suche einen uC, und nicht einen einfachen Schnitstellenkonverter. Nebenbei soll der uC auch andere Sachen erledigen können. 123 schrieb: > ggf ein IO-Warrior? Nein, ich suche ein uS und keine fertige Lösungen.
A. F. schrieb: > - DLL vom Hersteller, dass man mit Win10 etc. keine Probleme hat Eine solche DLL würde mit einem dazu passenden Treiber kommunizieren, welcher wiederum ein bestimmtes USB-Protokoll spricht welches zu einem bestimmten USB-Baustein gehört (wie eben z.B. FTDI). Da du aber wahrscheinlich dein eigenes Protokoll bauen möchtest, gibt es keine solche DLL dafür vom uC-Hersteller. Windows liefert aber einen eigenen Treiber namens WinUSB mit, welcher allgemein mit allen USB-Geräten reden kann, und welchen man aus eigenen Programmen verwenden kann. Damit kannst du dann auch ohne Treiber/Signatur-Problematik mit deinem eigenen Gerät und deinem eigenen Protokoll kommunizieren. Das ist soweit für alle USB-fähigen Controller gleich. USB-fähige Controller gibt es viele, z.B. die meisten STM32. In meinem USB-Tutorial mit STM32 wird die USB-Programmierung bei den STM32F103-Controllern erläutert. Im Abschnitt https://www.mikrocontroller.net/articles/USB-Tutorial_mit_STM32#Eigene_Anwendung_f.C3.BCr_PC-Seite ist gezeigt wie man ohne eigenen Treiber/Signatur von eigenen Windows-Programmen (auch unter Windows 10) mit dem Gerät kommuniziert.
A. F. schrieb: > Hallo Leute, > > ich suche ein uC o.ä. mit eingebauter USB Schnittstelle und folgenden > Kriterien: > - DLL vom Hersteller, dass man mit Win10 etc. keine Probleme hat > - IO Toggling möglichst bis 4 MHz > - Bulk USB Transfer, wenig Verzögerung zw. den einzelnen Datenpaketen. > - I2C Schnittstelle > - Kein BGA package Also jede moderne µC-Familie.... Jeder USB-µC ist tauglich, solange er genug Endpoints und I2C hat. Das sind alle modernen. Welche DLL du in Windows benötigst, hängt davon ab, welches USB-Device du im Controller umsetzt. Also brauchst du ein anderes Kriterium. Das Beste wird sein, du besorgst dir ein paar Demoboards, wie die hier: https://www.st.com/en/evaluation-tools/stm32f4discovery.html https://www.microchip.com/Developmenttools/ProductDetails/DM320104 https://www.nxp.com/support/developer-resources/evaluation-and-development-boards/freedom-development-boards/wireless-connectivy/freedom-development-board-for-kinetis-kw0x:FRDM-KW019032 Und kuckst dir an, mit welchem davon du am Besten die Demos zum Laufen bekommst. Wichtig ist ja auch, ob dir die IDE und die mitgelieferten Libraries taugen. Der schönste µC nützt dir nichts, wenn du mit ihm auf Kriegsfuß stehst. Zum Glück kostet das Zeug nicht so viel :-)
jemand schrieb: > Das Beste wird sein, du besorgst dir ein paar Demoboards, wie die hier: Bisher sind die Spezifikationen ja noch nicht soooo besonders detailliert. Vielleicht tut es ja auch was einfacheres: https://hackaday.io/project/6258/gallery#ce5db455c4aad2b6bf7d99e26a6976f4 Ja, ich weiß, den muss man ja noch irgendwie programmieren ;-) Ginge evtl. mit dem Curiosity DM164137 oder dem MPLAB SNAP PG164100
Niklas G. schrieb: > Das ist soweit für alle USB-fähigen Controller gleich. > USB-fähige Controller gibt es viele, z.B. die meisten STM32. Danke dir, hilfreich deine Infos. Auch wenn ich ein Fan von STM32 bin, finde ich die USB Geschichten zu dem STM sehr unüberschaubar. Aber vielleicht hilft mir dein Tutorial weiter. Danke
A. F. schrieb: > Danke dir, hilfreich deine Infos. Auch wenn ich ein Fan von STM32 bin, > finde ich die USB Geschichten zu dem STM sehr unüberschaubar. Ich glaub das wird bei anderen Controllern nicht viel anders sein. USB ist nunmal recht komplex... Die STM32 gibt es mit 3 unterschiedlichen USB-Modulen: - Das einfach nur USB genannte Modul der kleineren Controller unterstützt nur den Device-Modus und nur FullSpeed. - Das OTG_FS-Modul unterstützt OTG und kann somit auch als Host agieren und ist komplizierter zu programmieren. - Das OTG_HS-Modul unterstützt zusätzlich USB High Speed (480 MBit/Sec). Die "OTG"-Peripherie ist ohne die Hersteller-Library kaum zu nutzen, die "USB" Peripherie schon eher (und natürlich auch mit). Je nach Anforderung würde ich daher zu einem Controller mit der "USB"-Peripherie raten, wie STM32F103, und nicht den von "jemand" genannten STM32F407, welcher gleich 2 "OTG"-Module hat.
A. F. schrieb: > Bin bei der Suche auf die PSOC's gestoßen, nun welcher ist dafür eher > geeignet Bin selber sehr zufrieden mit Cypress PSOC5lp. Anfangen mit CY8CKIT-059 der fuer $10 alles gibt was benoetigt is. Incl programmer Von Cypress aus gute unterstuetzung (ich spreche ueber die neuen PSOC3/4/5lp/6, nicht die alte PSOC1) und viele beispiele. So wird, neben anlieferung vieler Libraries mit IDE auch automatisch der USB driver fuer windows gemacht. Ich benutze virtual comm-port (CDC), aber ansteuerung via andere Wegen so wie HID, Mass Storage Device oder direct via endpoints sind aus moeglich. Und man bekommt einfach eine eigene VID/PID combination. Mit die neue 6 series habe ich keine erfahrung. Gute documentation, zB https://www.cypress.com/documentation/component-datasheets/full-speed-usb-usbfs Grusze Patrick
Ich habe gute Erfahrungen mit dem NXP LPC11U68 gemacht. Der hat eine Rom-Api für USB, und die Programmierung damit war ein Kinderspiel. https://www.nxp.com/support/developer-resources/evaluation-and-development-boards/lpcxpresso-boards/lpcxpresso-board-for-lpc11u68:OM13058
Ganz neu: EFM8UB3 im QSOP24 Hier das Eval Board mit J-Link Debugger für 20 EUR https://www.silabs.com/products/development-tools/thunderboard/thunderboard-ub3-kit https://www.silabs.com/products/mcu/8-bit/efm8-universal-bee/device.efm8ub31f40g-qsop24
A. F. schrieb: > - DLL vom Hersteller, dass man mit Win10 etc. keine Probleme hat Implementiere eine der USB-Standardklassen, dann brauchst Du das nicht. > - IO Toggling möglichst bis 4 MHz aber nicht während der Prozessor Dein USB-Paket verarbeitet. Sofern Du kein Multicore-System hast, kann der Prozessor immer nur eine Sache zur Zeit machen. Es sei denn, Du hast zusätzliche Hardware. > - Bulk USB Transfer, wenig Verzögerung zw. den einzelnen Datenpaketen. Das kannst Du nicht steuern, da hast Du keinen Einfluß drauf. Das Timing wird vom Host gesteuert. USB ist NICHT echtzeitfähig, erst recht nicht bei BULK Transfers. Wenn Du ein bestimmtes Zeitverhalten brauchst, bist Du bei USB und Bulk Transfers falsch. > - I2C Schnittstelle unkritisch. > - Kein BGA package Aha. Ein Selberätzer. So. Bevor Du jetzt weitere Salamischeiben rauslässt, sag erstmal, was Du genau machen willst. Was ist Deiner Anwendung? Warum sind IO Toggles wichtig? Vielleicht hast Du ja schon den komplett falschen Ansatz. Und sage, ob Du Full (12), High (480) oder Super Speed (5000Mbps) brauchst. fchk
Kleine USB-Bibliothek für ATMEL®-USB-AVRs® (|||) http://www.weigu.lu/microcontroller/avr_usb_libs/index.html
Hallo, schau Dir den Arduino DU an. Hat hardwareseitig 2 USB (eine an der RS232), ist leicht zu bedienen und , das wichtigste, es gibt viele Libs. https://forum.arduino.cc/index.php?board=87.0
Frank K. schrieb: > ber nicht während der Prozessor Dein USB-Paket verarbeitet. Sofern Du > kein Multicore-System hast, kann der Prozessor immer nur eine Sache zur > Zeit machen. Es sei denn, Du hast zusätzliche Hardware. Das ist schon klar! Frank K. schrieb: > Das kannst Du nicht steuern, da hast Du keinen Einfluß drauf. Das Timing > wird vom Host gesteuert. USB ist NICHT echtzeitfähig, erst recht nicht > bei BULK Transfers. Wenn Du ein bestimmtes Zeitverhalten brauchst, bist > Du bei USB und Bulk Transfers falsch. Das ist mir ebenfalls bewusst, aber bei der HID Klasse z.B. sind die Pausen extrem lang! Frank K. schrieb: > So. Bevor Du jetzt weitere Salamischeiben rauslässt, sag erstmal, was Du > genau machen willst. Was ist Deiner Anwendung? Warum sind IO Toggles > wichtig? Vielleicht hast Du ja schon den komplett falschen Ansatz. > > Und sage, ob Du Full (12), High (480) oder Super Speed (5000Mbps) > brauchst. USB sollte idealerweise HS und die toggling Frequenzt brauche ich um die MDIO Schnittstelle einer PHY zu füttern. Ist zwar keine synchrone Schnittstelle, aber je schneller, desto besser ist es. max123 schrieb: > Hallo, > schau Dir den Arduino DU an. Hat hardwareseitig 2 USB (eine an der > RS232), > ist leicht zu bedienen und , das wichtigste, es gibt viele Libs. Nein Danke, es muss kompliziert zu bedienen sein :) Alexander S. schrieb: > Kleine USB-Bibliothek für ATMEL®-USB-AVRs® (|||) > > http://www.weigu.lu/microcontroller/avr_usb_libs/index.html Es handelt sich um die HID Schnittstelle, sehr ungeeignet in meinem Fall. Frank K. schrieb: >> - Kein BGA package > > Aha. Ein Selberätzer. Nö, aber die ersten Prototypen löte ich gerne, bevor ich den Bestücker bauftrage.
A. F. schrieb: > USB sollte idealerweise HS und die toggling Frequenzt brauche ich um die > MDIO Schnittstelle einer PHY zu füttern. Ist das Ethernet Phy? Denn es gibt µC mit Ethernet und USB. USB HS stellt schon "interessante" Anforderungen ans Platinen Layout. A. F. schrieb: > - Bulk USB Transfer, wenig Verzögerung zw. den einzelnen Datenpaketen. Dann wirst Du selber mit WinUSB hantieren müssen. Übrigens kann man Windows (IIRC ab Win7) vom USB Gerät selbst aus anweisen den WinUSB.sys Treiber zu laden, ohne das der $User ein .inf File installieren muss. Suche mal nach "MicroSoft OS Descriptors".
Moin, A. F. schrieb: > die toggling Frequenzt brauche ich um die > MDIO Schnittstelle einer PHY zu füttern. Ist zwar keine synchrone > Schnittstelle, aber je schneller, desto besser ist es. Hm. Also das MDI das ich kenne, arbeitet schon synchron und braucht auch keine 4MHz Takt. Wenn da nicht gerade ein kompletter Ethernetswitch-IC mit zig Phys dranhaengt, tun's da durchaus auch z.B. 4kHz Takt. Da geht doch kaum was rueber; vielleicht alle par zig Millisekunden mal nachgucken, ob sich der Linkstatus geaendert hat... Gruss WK
A. F. schrieb: >> So. Bevor Du jetzt weitere Salamischeiben rauslässt, sag erstmal, was Du >> genau machen willst. Was ist Deiner Anwendung? Warum sind IO Toggles >> wichtig? Vielleicht hast Du ja schon den komplett falschen Ansatz. >> >> Und sage, ob Du Full (12), High (480) oder Super Speed (5000Mbps) >> brauchst. > USB sollte idealerweise HS und die toggling Frequenzt brauche ich um die > MDIO Schnittstelle einer PHY zu füttern. Ist zwar keine synchrone > Schnittstelle, aber je schneller, desto besser ist es. Es gibt genug Prozessoren, die das in Hardware können. Der hier z.B. https://www.microchip.com/wwwproducts/en/PIC32MZ1024EFH100 Der hat HS USB Host/Device/OTG und Ethernet MAC mit MII/RMII und MDC/MDIO. TQFP100, Software gibt bei Microchip. Ich werde aber das Gefühl nicht los, dass Du uns hier noch nicht die volle Wahrheit gesagt hast. Also nächste Salamischeibe, bitte. fchk
Jim M. schrieb: > Ist das Ethernet Phy? Denn es gibt µC mit Ethernet und USB. Es handelt sich um MDIO 45 (https://en.wikipedia.org/wiki/Management_Data_Input/Output) es geht darum die HW zu testen. Ich habe was da, aber neue Tester sind nicht mehr verfügbar. > USB HS stellt schon "interessante" Anforderungen ans Platinen Layout. Für eine differentielle Übertragung, bei 1.5cm Abstand von der USB Buchse bis zur CPU wohl kaum. Die Paar Platinen mit HS USB, die ich in Eagle erstellt habe, waren ohne Impendanzanpassung etc. auch ok. Jim M. schrieb: > Dann wirst Du selber mit WinUSB hantieren müssen. Wenn es nötig ist, ist es in Ordnung. Jim M. schrieb: > Übrigens kann man Windows (IIRC ab Win7) vom USB Gerät selbst aus > anweisen den WinUSB.sys Treiber zu lade Interessant, ich werde mich da noch einlesen. Danke. Dergute W. schrieb: > Hm. Also das MDI das ich kenne, arbeitet schon synchron und braucht auch > keine 4MHz Takt. Wenn da nicht gerade ein kompletter Ethernetswitch-IC > mit zig Phys dranhaengt, tun's da durchaus auch z.B. 4kHz Takt. > Da geht doch kaum was rueber; vielleicht alle par zig Millisekunden mal > nachgucken, ob sich der Linkstatus geaendert hat... Ja synchron zum Master Takt, aber nicht zu eigenem Systemtakt wie bei UART, deshalb ist es ähnlich easy, wie SPI. MDIO45 läuft mit bis zu 2.5Mhz. Möchte es gerne aber schneller testen, als an der spec. Grenze. Und eigentlich geht es mir darum, einen passenden UC rauszusuchen, als über die Anforderungsdetails zu sprechen. Diese habe ich grob geäußert. Ich werde mir den PSOC5 näher anschauen. LPC scheint auch nicht die gute Wahl zu sein.
A. F. schrieb: > Es handelt sich um die HID Schnittstelle, sehr ungeeignet in meinem > Fall. Wieso? Du wolltest doch kurze Paketabstände? Es gibt sowohl Interrupt-In- als auch Interrupt-Out-Endpoints, damit schafft man Daten in beide Richtungen in festen Intervallen und da der Interrupt-Transfer höher priorisiert ist, stören auch andere Vorgänge (Dateioperationen auf externen Festplatten usw.) nicht! Wir nutzen HID für das Programmiergerät unserer Steuerungssysteme, die Firmware (16 Megabytes) laden wir in knapp zehn Minuten in das Gerät, einfacher geht es praktisch nicht - beim Kunden reicht jedes beliebige Notebook/PC und ein USB-Stick mit dem Flash-Tool drauf.
A. F. schrieb: > Interessant, ich werde mich da noch einlesen. Danke. Ist auch im genannten Tutorial erläutert, Abschnitt "Windows: Laden von WinUSB". A. F. schrieb: > Für eine differentielle Übertragung, bei 1.5cm Abstand von der USB > Buchse bis zur CPU wohl kaum. Und für das parallele ULPI zwischen µC und USB-HS-PHY (nur wenige µC haben den integriert)? Michael schrieb: > einfacher geht es praktisch nicht - beim Kunden reicht jedes beliebige > Notebook/PC und ein USB-Stick mit dem Flash-Tool drauf. Mit WinUSB Devices geht es wie erwähnt auch ohne HID oder andere Standardklassen genauso einfach, und man kann USB voll ausnutzen, insb. alle Transfer-Typen. Michael schrieb: > (16 Megabytes) laden wir in knapp zehn Minuten Also 28 KiB/s, ein Fünzigstel der Brutto-Datenrate von USB-FS?
:
Bearbeitet durch User
Niklas G. schrieb: > Also 28 KiB/s, ein Fünzigstel der Brutto-Datenrate von USB-FS? Schneller ist halt der Bootloader in der Steuerung nicht (wird über eine SPI-Verbindung bedient.) Wenn es nur um die USB-Übertragung ginge, wäre auch knapp das 2,5-fache noch drin.
A. F. schrieb: > Und eigentlich geht es mir darum, einen passenden UC rauszusuchen, als > über die Anforderungsdetails zu sprechen. Diese habe ich grob geäußert. Ohne genau Kenntnis der Applikation sind die Vorschläge eben nicht sehr passend. > Ich werde mir den PSOC5 näher anschauen. LPC scheint auch nicht die gute > Wahl zu sein. PSOC5 ist durch 5LP ersetzt. Hat kein USB HS. PSOC6 hat kein USB HS. Die ideale Plattform für Deinen Tester wäre ein Xilinx Zynx Board, wo die Testsoftware auf dem ARM läuft und das Interface im FPGA in Hardware implementiert wird. So teuer sind diese Boards auch nicht. Ich gehe davon aus, dass die Stückzahlen sich sehr in Grenzen halten. fchk
A. F. schrieb: > Gebe zu, kenne mich mit dem Gebiet nicht wirklich gut aus. Ja, das merkt man. Hinzu kommt auch noch Ignoranz, denn: > 123 schrieb: >> ggf gibt es von FTDI einen Baustein der das gewünschte erfüllt. > Es ist kein Mikrocontroller, ich suche einen uC, und nicht einen > einfachen Schnitstellenkonverter. Nebenbei soll der uC auch andere > Sachen erledigen können. Du hast es also trotz oder wegen Deiner Ahnungslosigkeit oder Engstirnigkeit nicht nötig, Dir die Produkte von FTDI anzuschauen. Für Dein Spatzenhirn ist also jedes Produkt von FTDI ein einfacher Schnittstellenkoverter? Da Du so beratungsresistent bist und Dein Weltbild zusammenbräche, wenn Du einmal selbst auf deren Webseiten schauen würdest, bringt es wohl auch nichts, Die die entsprechenden Microcontrollerfamilien zu nennen.
Andreas S. schrieb: > Du hast es also trotz oder wegen Deiner Ahnungslosigkeit oder > Engstirnigkeit nicht nötig, Dir die Produkte von FTDI anzuschauen. Für > Dein Spatzenhirn ist also jedes Produkt von FTDI ein einfacher > Schnittstellenkoverter? Da Du so beratungsresistent bist und Dein > Weltbild zusammenbräche, wenn Du einmal selbst auf deren Webseiten > schauen würdest, bringt es wohl auch nichts, Die die entsprechenden > Microcontrollerfamilien zu nennen. FTDI kenne ich und es ist nicht das, was ich suche. Oder habe ich etwa einen FTDI mit MDIO45 übersehen? Bitbanging wäre das zu langsam. Also lass Mal deine Beleidigungen sein und deine Frust wo anders raus! Deine "Expertenmeinung" hilft hier auch nicht weiter.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.