Hi Forum, Ich suche jetzt schon eine Weile nach einer Loesung fuer ein schnelles uC/USB Interface. Bisher habe ich den FT232 mit AVRs benutzt, allerdings wuerde ich jetzt gerne etwas schneller Daten zum PC uebertragen (Full speed sollte vorerst genug sein). Da USB PICs das an sich ja koennen sollen, habe ich es mit 18F14k20 und 18F14K50 probiert. Meine Erfahrung mit PICs war allerdings nicht besonders gut. Nach mehreren Monaten rumprobieren habe ich noch keinen Erfolg gehabt. Unter anderem fand ich es sehr nervig dass sich Bootloader Code von Microchip nicht fuer den 18F14k50 kompilieren laesst ohne dass man den teuren C18 compiler kauft und dass es sehr schwer ist Dokumentation fuer USB Beispiele zu finden. PIC daher eher nicht... Hat jemand schnelle USB Uebertragungen mit Papilio FPGA boards hinbekommen? Bisher finde ich den Papilio gut und es ist einfach nen Einstieg zu finden. Das Problem ist aber das gleich wie bei AVRs - wie bekommt man USB mit 12 Mbit/s hin? Hier in dem USB Artikel steht der USB960x als Full speed controller mit 8-bit Interface gelistet - allerdings als Obsolete markiert. Gibt es da vielleicht eine neuere Version mit 8-bit Interface, die es einem erlaubt schneller zu sein als virtuelle COM ports mit dem FT232? Bitte postet wie ihr schnelle USB Verbindungen verwirklicht habt. Ideal waeren Loesungen, wo man einfach evaluation boards bekommt, gute Dokumentation und Beispiele vorhanden sind (die sich auch compilieren lassen). Der Preis (sollte <100 Eur sein) und ob es eine 8-bit, 16-bit, 32-bit oder FPGA Platform ist macht hier wenig Unterschied. Vielen Dank an alle, die sich die Muehe machen und Antworten! Felix
Hi http://www.ftdichip.com/Products/ICs/FT240X.html Viel mehr als 1MByte/s wirds nicht werden bei Full-Speed USB. Mit den Vorgängern hab ich gearbeitet und kann die Datenrate bestätigen. Matthias
Wir verwenden die PSoCs, ich habe aber im Augenblick keine Bandbreitenangaben. Die Dokumentation und die Tools sind jedenfalls sehr gut, und man bekommt schnell was zum Laufen. Andreas
Ein Board mit Atmega32U4 (ist z.B. auf vielen Arduino-Boards als USB-Seriell-Wandler verbaut). Aus dem Datenblatt des 32U4: • USB 2.0 Full-speed/Low Speed Device Module with Interrupt on Transfer Completion – Complies fully with Universal Serial Bus Specification Rev 2.0 – Supports data transfer rates up to 12 Mbit/s and 1.5 Mbit/s – Endpoint 0 for Control Transfers: up to 64-bytes – 6 Programmable Endpoints with IN or Out Directions and with Bulk, Interrupt or Isochronous Transfers – Configurable Endpoints size up to 256 bytes in double bank mode – Fully independent 832 bytes USB DPRAM for endpoint memory allocation Oder aber du nimmst dir ein STM32F4-Discovery-Board (je nach Version 11 bis 30 Euro), da ist der Debugger auch gleich mit auf dem Board. Das kann auch Full-/High-Speed USB. Und fuer STM32 gibt es auch viele Beispiele, z.B. wie man das Discovery Board als Maus nutzen kann.
Da wären noch die Chips von NXP wie z.B. der LPC1768/69. Dafür gibt es ein sehr praktisches EVAL-Board mit angeflanschtem Debugger/Programmer für wenig Geld: http://www.embeddedartists.com/products/lpcxpresso/lpc1769_xpr.php und die IDE gibt es mit Debug Fähigkeiten bis zu 256 MB Code für lau von NXP selbst: http://www.lpcware.com/lpcxpresso/home
Hallo. Wie waere es mit AVR XMega (-U Versionen)? Diesen kann mit LUFA bequem USB "begebracht" werden. Z.B. zum testen: http://matrixstorm.com/avr/avrstick/. Hierfuer gibt es online modifizierbare USB-Bsp: http://matrixstorm.com/avr/avrstick/#bideavr MfG
Danke fuer die Antworten! @ Andreas D: Die sehen in der Tat sehr interessant aus. Ist der USB Stack frei verfuegbar und einfach zu benutzen? Der PSoC5 mit Cortex-M3 sieht interessant aus und ist als development board erhaeltlich (~25 Euro). Hast du zufaellig einen Link zu nem USB Beispiel welches du benutzt hast? @Kaj: Ich bestelle mir mal nen Atmega32u4 board und gucke wie das so funktioniert. Benutzt du LibUSBdotnet fuer die Transfers? Es scheint als wuerden virtuelle COM ports auf jeden Fall nicht schnell genug sein. @Kaj: Fuer das STM32F4 konnte ich keine Full Speed oder High Speed Beispiele finden. Kann es sein, dass da normalerweise ein virtual COM port benutzt wird? In dem STM Forum klingt es eher so als waere es schwierig das zum Laufen zu kriegen. Daher vermute ich mal, dass es keine fertigen Beispiele gibt (korrekt?). @Carsten Wille: Ich habe ein LPC1769 board, allerdings habe ich da keine Beispiele fuer gefunden und die Idee verworfen. Es scheint als wuerden die mbed Beispiele auch alle den (scheinbar) langsamen virtuellen COM port benutzen. Hast du vielleicht ein Beispielprojekt fuer schnelleren USB Datentransfer? @ Stephan B.: Tolles Projekt! Gibt es in dem AVRStick Projekt schon fertige Beispiele fuer schnellen USB Datentransfer? Ich bin interessiert daran Beispielprojekte zu entwickeln, allerdings kenne ich mich mit USB Stacks nicht besonders gut aus. Ich vermute allerdings, dass es schon eine fertige Loesung geben muss (die ich nur noch nicht gefunden habe). Wie weit ist das AVRStick Projekt im Bezug auf USB? Gibt es jemanden der ein fertiges Beispielprojekt hat und Willens ist den Code und die Hardwarekonfiguration zur Verfuegung zu stellen? Falls sich jemand meldet koennte ich es hier als Artikel einstellen, so dass es von anderen als Referenz genutzt werden kann. Felix
F. V. schrieb: > Es scheint als > wuerden virtuelle COM ports auf jeden Fall nicht schnell genug sein. Das ist doch Blödsinn. Virtuelle COM-Ports benutzen Bulk-Transfers (jedenfalls wenn des Device mindestens mit FullSpeed angebunden ist). Damit erreicht man theoretisch maximal (und bei fehlerfreier Hardware und Programmierung auch praktisch) ca. 1MByte/s Nettodatendurchsatz. Mehr geht einfach nicht mit USB1.1. > allerdings kenne ich mich mit USB > Stacks nicht besonders gut aus. Das merkt man. Ändere das! > Gibt es jemanden der ein fertiges Beispielprojekt hat Alles klar. Hauptsache nicht selbst denken oder gar lernen müssen. Generation Fratzenbuch. Alles wollen und zwar sofort, aber dafür arbeiten, ...nö. Das wäre ja viel zu anstrengend.
F. V. schrieb: > Da USB PICs das an sich ja koennen sollen, habe ich es mit 18F14k20 und > 18F14K50 probiert. Meine Erfahrung mit PICs war allerdings nicht > besonders gut. Nach mehreren Monaten rumprobieren habe ich noch keinen > Erfolg gehabt. Unter anderem fand ich es sehr nervig dass sich > Bootloader Code von Microchip nicht fuer den 18F14k50 kompilieren laesst > ohne dass man den teuren C18 compiler kauft und dass es sehr schwer ist > Dokumentation fuer USB Beispiele zu finden. PIC daher eher nicht... Du hast Dir gerade den zweitkleinstmöglichen PIC18F ausgesucht. Für eine Produktentwicklung ist das ok, zum Lernen eher ungünstig. Das Ding hat relativ wenig Flash, so dass ich ich gut nachvollziehen kannst, dass Du mit den Bootloader Probleme hattest. Normalerweise ist macht man das bei den Ding eben nicht, dieser PIC ist nicht für Anwendungen vorgesehen, wo man einen Bootloader braucht. Oder hast Du schon mal eine normale USB-Maus oder USB-Tastatur geupdated? Dann zur Wahl des Compilers: Der C18 wird nicht mehr gepflegt, Microchip empfiehlt den XC8 (was früher der Hitech war). Der erzeugt in der freien Version nicht besonders guten Code, d.h. ein zu kleiner PIC ist erst recht tödlich. Ich rate Dir zu einem PIC32MX250F128B. 28 Pins, gibts als lochrastergeeignetes DIL, einfach zu beschalten (wie der 18F14K50, den Du kennst), ABER: völlig anderer Prozessorkern. Das Teil läuft mit 50 MHz, hat 128k Flash und 32k RAM und einen 32 Bit MIPS-Prozessorkern. Die direkten Vorläufer dieses Prozessorkerns liefen Anfang der 90'er Jahre in den dicken, fetten DEC Ultrix UNIX Workstations, dort aber nur mit 16 bis 25 MHz. Dann nimmst Du MPALABX, wenn Du noch das alte MPLAB8 hast, den aktuellen XC32 Compiler (ist ein gcc) und die aktuellen Application Libraries, die den Codenamen Harmony tragen. So, damit solltest Du zum Ziel kommen. Wenn Du Fragen hast, frage nicht hier, sondern in den Foren auf microchip.com. Das ist zielführender, weil dort die Leute mit Ahnung sitzen. Wie gesagt, Du warst nicht einfach zu blöd, sondern Du hast ganz am Anfang nur einige schlechte Entscheidungen getroffen, die Dir anschließend das Leben schwer gemacht haben. > Hier in dem USB Artikel steht der USB960x als Full speed controller mit > 8-bit Interface gelistet - allerdings als Obsolete markiert. Gibt es da > vielleicht eine neuere Version mit 8-bit Interface, die es einem erlaubt > schneller zu sein als virtuelle COM ports mit dem FT232? Wenn es keine integrierte Lösung sein muss, dann kannst Du auch einen FT2232H verwenden. Das ist (a) ein High Speed Device, d.h. Du kannst damit >20 MByte/s übers USB blasen, und (b) es stellt nicht nur serielle Schnittstellen zur Verfügung, sondern hat auch parallele Modi mit 8 Datenbits und Handshakeleitungen und einiges mehr. Vielleicht ist das einfacher für Dich. fchk PS: http://www.tme.eu/de/details/32mx250f128b-i_sp/mikrocontroller-microchip-32-bit/microchip-technology/pic32mx250f128b-isp/ PPS: Es gibt auch noch den PIC32MX270F256B mit doppeltem Flash+RAM, aber der ist bei den Händlern noch nicht so gängig. http://www.digikey.de/product-detail/de/PIC32MX270F256B-I%2FSP/PIC32MX270F256B-I%2FSP-ND/4902630 PPPS: plus extra Boot Flash
:
Bearbeitet durch User
> Ist der USB > Stack frei verfuegbar und einfach zu benutzen? Ja, wenn Du im PSoC Creator ein Projekt mit USB-FS anlegst, und die Komponente mit allen Angaben (von der Vendor-ID bis zur Maximum Packet Size jeden Enpoints) konfigurierst, wird der entsprechende Source code generiert. Die Benutzung ist recht einfach. > Der PSoC5 mit Cortex-M3 > sieht interessant aus und ist als development board erhaeltlich (~25 > Euro). Du kannst neben dem Schmartboard auch das PSoC 4 Pioneer Kit fuer den Anfang nehmen, da ist auch ein PSoC 5LP (als "programmer") drauf, den Du aber ueber den Bootloader mit eigenem Code programmieren kannst. > Hast du zufaellig einen Link zu nem USB Beispiel welches du > benutzt hast? Installier den PSoC Creator und erzeuge dann einen Workspace fuer USBFS mit Wrapback. Damit haben wir angefangen. Andreas
@F.V.: > Der PSoC5 mit Cortex-M3 sieht interessant aus und ist als development > board erhaeltlich (~25 Euro). Kurze Frage, welches Board meinst du? Ralf
@Frank K.: Danke fuer die Erklaerung was mit dem PIC schiefgegangen ist. Die Wahl hatte ich getroffen, da ich den 18F14K50 in USB Beispielen gesehen hatte und er USB ohne externen Oszillator koennen soll. Dass der grade mal genug Speicher fuer den Bootloader hat war mir zu dem Zeitpunkt nicht klar. Bestelle mir jetzt mal ein Paar von den PIC32MX270F256 mit und probiere das mit MPLABX und dem XC8 compiler. Vielen Dank fuer den Hinweis! Hole mir auch mal das VA800A-SPI (Digikey 768-1211-ND). Das ist ein FT232H Modul welches USB ueber eine SPI Schnittstelle und 30Mbps koennen soll und daher ideal ist fuer eines meiner FPGA Projekte. @Andreas D.: Das Schmartboard ist dieses hier (oder?): http://www.schmartboard.com/index.asp?page=products_dev&id=652 Ist im Moment als Backorder gelistet und generell teurer als die Evaluierungskarte bei Digikey (CY8CKIT-010A-ND). Denke ich probiere es erstmal mit dem CY8CKIT010A und hole mir dann das Schmartboard wenn es wieder verfuegbar ist. Danke fuer den Tip, diese Loesung hoert sich auch vielversprechend an! @Ralf: Siehe links in der Antwort an Andreas. Falls du dir was bestellst und Erfahrungen austauschen willst, schick mir einfach ne PM. Ich hab das CY8CKIT010A auf meiner Digikey Bestellung mit drauf. Vielen Dank soweit, ich glaube ich habe jetzt erstmal einiges zu verarbeiten. Bei all den verschiedenen Vorschlaegen hier wird bestimmt was dabei sein. Felix
F. V. schrieb: > @Frank K.: > Danke fuer die Erklaerung was mit dem PIC schiefgegangen ist. Die Wahl > hatte ich getroffen, da ich den 18F14K50 in USB Beispielen gesehen hatte > und er USB ohne externen Oszillator koennen soll. Dass der grade mal > genug Speicher fuer den Bootloader hat war mir zu dem Zeitpunkt nicht > klar. > > Bestelle mir jetzt mal ein Paar von den PIC32MX270F256 mit und probiere > das mit MPLABX und dem XC8 compiler. Vielen Dank fuer den Hinweis! XC32, nicht XC8! > Hole mir auch mal das VA800A-SPI (Digikey 768-1211-ND). Das ist ein > FT232H Modul welches USB ueber eine SPI Schnittstelle und 30Mbps koennen > soll und daher ideal ist fuer eines meiner FPGA Projekte. Nimm das hier: http://www.digikey.de/product-detail/de/FT2232H%20MINI%20MODULE/768-1030-ND/2027252 Das ist kein FT232H, sondern ein FT2232H (eine 2 mehr!) Der kann alles, was der FT232H kann, plus JTAG (FPGA programmieren!), Parallel FIFO, CPU Bus Emulation und einiges mehr. fchk
Der stm32f4 kann nachweislich 7MBit/s über USB CDC. Fertiges Beispiel unter: http://mikrocontroller.bplaced.net
Gerald G. schrieb: > Der stm32f4 kann nachweislich 7MBit/s über USB CDC. Das ist aber eigentlich eine eher schwache Leistung. Das sind nur etwa 90% dessen, was für ein CDC-Device über USB1.1 möglich ist.
c-hater schrieb: > Gerald G. schrieb: > >> Der stm32f4 kann nachweislich 7MBit/s über USB CDC. > > Das ist aber eigentlich eine eher schwache Leistung. Das sind nur etwa > 90% dessen, was für ein CDC-Device über USB1.1 möglich ist. Soweit ich weiß ist Full Speed USB- Versionsunabhängig mit 12 MBit/s spezifiziert. Egal ob 1.1 oder 2.0
Zu dem CY8CKIT-010 steht auf der Cypress-Seite: " The CY8CKIT-010 PSoC® CY8C58LP Family Processor Module is designed to evaluate and experiment with Cypress's PSoC 5 programmable system-on-chip design methodology and architecture. This processor module must be used in conjunction with the PSoC Development Kit (CY8CKIT-001) to create designs utilizing on-board DVK resources or compatible expansion boards. This kit provides you with an additional processor module to use with different projects." Hast Du dieses CY8CKIT-001 schon? Das kostet 250USD. Andreas
Gerald G. schrieb: > Soweit ich weiß ist Full Speed USB- Versionsunabhängig mit 12 MBit/s > spezifiziert. Egal ob 1.1 oder 2.0 12MBit/s BRUTTO. USB braucht aber einen verhältnismäßig großen Teil der Buszeit für die Verwaltung des Busses selber. Das geht davon schonmal völlig regulär, also absolut unvermeidbar ab. Dazu kommen dann noch nicht sicher berechenbare Kleinigkeiten wie etwa das Bitstuffing oder die vielen variablen Latenzen beim Paketprotokoll.
Hallo F. V. schrieb: > @ Stephan B.: Tolles Projekt! Gibt es in dem AVRStick Projekt schon > fertige Beispiele fuer schnellen USB Datentransfer? Was meinst du mit schnell? Fuer fullspeed git es das, ja. > Ich bin interessiert > daran Beispielprojekte zu entwickeln, allerdings kenne ich mich mit USB > Stacks nicht besonders gut aus. Ich vermute allerdings, dass es schon > eine fertige Loesung geben muss (die ich nur noch nicht gefunden habe). > Wie weit ist das AVRStick Projekt im Bezug auf USB? Fuer beliebige USB Device Projekte kann man die LUFA-lib verwenden. Direkt implementiert habe ich schon CDC (virtuelle COM-Ports), AVR ISP MKII, Tastatur/Maus (HID) und MSD (Massstorage). > Gibt es jemanden der ein fertiges Beispielprojekt hat und Willens ist > den Code und die Hardwarekonfiguration zur Verfuegung zu stellen? Falls > sich jemand meldet koennte ich es hier als Artikel einstellen, so dass > es von anderen als Referenz genutzt werden kann. http://matrixstorm.com/avr/avrstick/examples/ ? MfG
@Andreas D: Grade gesehen, dass ich mit dem Modul wohl nix anfangen kann... Naja, vielleicht nehmen sie es ja zurueck :) Danke trotzdem fuer den Hinweis! @Frank K.: Hab jetzt ein paar PIC32MX270F256B zum spielen. Bisher habe ich allerdings nur ne LED zum blinken bekommen. Ich scheiter jetzt schon eine Weile daran Timer mit Harmony zu benutzen. Ich vermute mal, dass callbacks das gleiche ist wie AVR interrupts, allerdings habe ich das Programm noch nicht dazu bewegen koennen ne LED zu togglen wenn der interrupt getriggert wird. Benutzt du das Harmony Hilfe pdf? In den 5500 Seiten Dokumentation habe ich bisher nicht gefunden wie man nen Timer Overflow Interrupt ausloest und dann code in die entsprechende ISR packt... @Stephan B.: Ich versuche mein Glueck erstmal mit den PIC32. Im Moment denke ich das kann was werden. Sollten alle Stricke reissen gehe ich danach wieder zu AVR controllern zurueck. Ich wuerde an sich lieber kein CDC device benutzen, sondern direkt ne USB library mit Treiber benutzen falls ich das hinbekomme... Felix
F. V. schrieb: > @Frank K.: Hab jetzt ein paar PIC32MX270F256B zum spielen. Bisher habe > ich allerdings nur ne LED zum blinken bekommen. Ich scheiter jetzt schon > eine Weile daran Timer mit Harmony zu benutzen. Ich vermute mal, dass > callbacks das gleiche ist wie AVR interrupts, allerdings habe ich das > Programm noch nicht dazu bewegen koennen ne LED zu togglen wenn der > interrupt getriggert wird. Benutzt du das Harmony Hilfe pdf? In den 5500 > Seiten Dokumentation habe ich bisher nicht gefunden wie man nen Timer > Overflow Interrupt ausloest und dann code in die entsprechende ISR > packt... Interrupts funktionieren ähnlich wie beim AVR. Timer sind prinzipiell auch überall ähnlich. Harmony brauchst Du dafür nicht. Nimm Dir das PIC32 Reference Manual (da stehen die allgemeinen Sachen drin) plus das Datenblatt für die chipspezifischen Dinge. Damit hast Du alle Infos, die Du dafür brauchst. fchk
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.