Hi, ich habe den USB Controller CY7C68013A von Cypress. Um mir Zeit zu ersparen habe ich mit die Platine und die Software von Braintechnology gekauft. Leider bin ich mit der Software überhaupt nicht zufrieden bzw. kann nicht das was für mich gefordert ist! Kennt ihr alternativ Firmen die soetwas anbieten?
>kann nicht das was für mich gefordert ist
Was willst DU denn?
Und was kann "die" nicht?
Also nicht wundern, wenn du auf diese Anfrage keine Antworten bekommst.
Ich bekomme schon antworten, jedoch stelle ich verhalten bei den controller fest, was meiner meinung nach nicht korrekt ist. Ich bin intersiv mit der Firma im Kontakt um die Probleme zu beseitigen, aber ich wollte mich trotzdem mal nach alternativen umschauen. Wer von euch nutzt den den parallel mode und generiert die Waveform mit dem ParUsbEditor?
>Ich bekomme schon antworten, jedoch stelle ich verhalten bei den
:-)
Ich meinte nicht den Controller, sondern Antworten von den Forum-Usern.
Es scheint wirklich vielen Leuten unheimlich schwer zu fallen,
eine verständliche Frage zu formulieren.
Wie auch immer.....meine erste Frage war aber, ob es jemanden gibt der alternativen kennt und mir diese nennen kannn.
Du willst es nicht verstehen, oder? Alternativen zu WAS? Suchst du einen µC mit integriertem USB? Gibts genug. Muß es ein 8051-Kern oder darf es auch eine andere Architektur sein? Das einzig interessante für jemanden, der dir helfen soll, ist aber die Aufgabenstellung. WAS hast du vor? Entweder ist diese so geheim, dass du sie nicht nennen möchtest. Oder du bist nicht in der Lage, sie zu formulieren. In beiden Fällen wird dir keiner helfen können. Warum ICH hier poste? Im Fernsehen läuft grad nichts besseres.. ;-)
Wie ich am anfang geschrieben habe bzw. ausdrücken wollte ist, das ich mit dem USB-Controller zufrieden bin. Jedoch die Software bei mir Probleme macht und ich hierfür alternativen suche.
Den FX2 kann man eigentlich recht unproblematisch programmieren. Ich hab aber dazu nie irgendwelche Software außer einem Compiler (SDCC) und einem kleinen Upload Programm gebraucht. > Wer von euch nutzt den den parallel mode und generiert die > Waveform mit dem ParUsbEditor? Du willst wahrscheinlich das GPIF programmieren, was der "parallel mode" ist - keine Ahnung. Müssen sich die Leute von braintechnology ausgedacht haben, im FX2 User's Guide wird das nicht erwähnt. Verwende halt einfach die Original Software von Cypress: http://www.cypress.com/portal/server.pt?space=CommunityPage&control=SetCommunity&CommunityID=285&PageID=552&shortlink=DA_188585&REF=SCH&CID=ILC-shortlinks&shk=DA_188585&REF=SCH Ich habe aber beim GPIF oft festgestellt, dass es nicht das macht was es sollte (naja, eigentlich macht es nur nicht das, was ich wollte). Z.b. ist es mir nie gelungen den Transaction Counter zu benutzen.. Ich hab dann einen externen CPLD zur Steuerung benutzt und den FX2 als Slave FIFO betrieben.
Also wir haben das auch mal probiert mit der BrainTechnology Firnware. Kann man voll vergessen. Schon die Doku ist haarsträubend. Naja, die kleinen Boards gehn gerade so als Testboard, aber Software? Nein danke. Die hab ich dann in 4 Tagen selbst geschrieben, Slave-FIFO, total einfach zu machen. Zieh dir das Entwicklungspaket von Cypress, da sind massenhaft Beispiele dabei, ist wirklich nicht schwer.
@Christian R.: Was hast du damit genau gemacht? Ich muss Daten von einem ADC (bzw. später vier) auslesen und parallel Übertragen. Müsste da ja auch irgendwie gehen (GPIF Designer denke ich). Wärest du bereit mir einen Teil deiner Software zu geben, da ich durch die Probleme mit der Braintechnology schon viel Zeit verlohren habe und deshalb einigen Zeitdruck habe.
Also wir haben da noch einen FPGA dran, man will ja äquidistant abtasten, das geht nur mit externer Logix und FIFO-Speicher. Wenn du die ADCs direkt an den Cypress machen willst, wird das Murks. Programm kann ich dir nicht geben, hab das auf Arbeit gemacht. Aber ohne externe Logik wird´s nix mit sinnvoll Abtasten.
Wieso wird das Murks? Ich stelle mit dem Cypress einfach nur die Timings ein setzte die entsprechenden Steuerleitungen, warte bis die konvertierung beemdet ist und dann werden die anliegenden Daten vom ADC gelesen. Also ich kann mir da jetzt keine Problem vorstellen. Könntest du mich aufklären wieso du dieser Meinung bist.
Hattest du mal das Fach Systemtheorie? Wenn man was messen will, wie z.B. ein Oszilloskop oder sowas, dann muss man äquidistant abtasten. Das heißt, du musst garantieren, dass der ADC immer gleichmäßig umsetzt. Da aber nun USB und das dahinter hängende Betriebssystem (Windows, Linux...) nicht echtzeitfähig ist, kann man das nicht garantieren. Man könnte höchstens üner isochronen Transfer alle 125µs was machen. Aber 8khz Abtastrate ist sicher nicht das, was du willst. Ansonsten kannst du den ADC mit einer externen Logik abtasten lassen, und den FX2 im Slave-FIFO Modus benutzen und hoffen, dass das OS die Daten schnell genug abholt, und dein FIFO nicht überläuft. Mit einem aktuellen Windows-PC und ohne sonstige Aktivität hab ich aus dem Chip an sich etwa 40MByte/s abgeholt. Theoretisch sollte man das auch schaffen, wenn man die Daten mit 48MHz im Slave FIFO Modus da rein schaufelt. Dazu brauchts aber einen CPLD oder sowas am externen Bus. Da hatte aber das Windows sonst nix zu tun, und das Abholen lief in einem Thread mit erhöhter Priorität.
Ne Systemtheorie hatte ich nicht....war nur ein WP und ich hab was anderes gemacht ;-). Mal im erst. Verstehen tuhe ich das Problem immer noch nicht. Der ADC hat einen eigenen Takt. Da muss ich nur mal kurz eine Steuerleitung setzten und dann ca. 1,2µs warten und dann 16Bit lesen....und das alles wiederholt sich dann. Klingt für mich persönlich nach nicht so viel was der PC da leisten muss. Und was meinst du mit externen Logik....was soll die machen?
Wie garantierst du, dass du die Steuerleitung für die konvertierung in konstanten Abständen setzen kannst? Wenn du das vollkommen ehne externe Logik machen willst, müsstest du eine eigene Firmware für den FX2 schreiben, per Interrupt das Steuersignal auslesen und dann über 2 Ports die Daten in den Endpoint-FIFO schreiben. Allerdings hat der FX2 bloß 48MHz, ist nen oller 8051, ich weiß nicht, wie schnell der das kann. Dann musst du halt noch beachten, dass du vom PC die Daten schnell genug abholst, sonst läuft der Endpoint-FIFO über. Ich weiß nicht, ob das ganze mit dem GPIF so klappt, wi du dir das vorstellst. Außerdem hat das GPIF ziemlich viele Macken, merkt man erst, wenn man damit programmieren will.
Das ich die Leitungen in konstanten Abständen setzte, kann ich nicht garantieren, jodoch benötigt der ADC auch mal länger oder kürzer um die Daten zu sammmeln die die konvertiert werden müssen. Zusätzlich ist die konvertierung auch nicht zeitlich konstant. Also kann ich ja sowieso nicht äquidistant Abtasten. Und wenn mal ein paar Daten verlohren gehen, ist das für meine Anwendung auch nicht das todesurteil. Das die Daten vom Windows schnell genug abholt ist denke ich kein Problem, da zwischen dem holen der Daten vom ADC bis zum nächsten holen mehr als 4µs zeit bleibt....und das sollte doch machbar sein.
Hm...seit wann haben ADCs keine konstanten Umsetzeiten? Naja, wie auch immer. Musst du halt probieren. Musst halt schauen, dass du die Endpoint-Buffer ordentlich füllst. So hohe Übertragungstraten bekommst du nur hin, wenn du große Blöcke anforderst. Bei 512 Byte angeforderter Daten pro Abfrage kommt man nur auf 3,5 MB/s.....das steigt dann recht konstant an bis man bei 64k Blocklänge bei etwa 40MB/s ist. Dazu müssen aber die Endpunkte 4-fach gefuffert sein und schnell genug befüllt werden.
Muss ich halt probieren. Aber die Übetragungsrate ist mir zur Zeit fast völlig egal. Ich würde gern am Ende eine von ca. 3MByte/s haben.....das reicht mir schon völlig aus....und siehst du da ein Problem? Frag mich nicht warum der keine konstanten Umsetzeiten hat....aber im Datenblatt steht nur die Max. Dauer. Ist halt so kann ich nicht ändern.
Naja, Hauptsache ist, dass man das Startsignal zur Umwandlung jitterfrei hinbekommt. Ansonsten bekommst du durch den Trigger-Jitter jede Menge digitales Rauschen in dein Signal.
Ich habe mich jetzt mal über das Wochenende mit dem Baustein und die Software von Cypress auseinander gesetzt. Eines wurde mir jedoch nicht klar. Kann man über das Cypress Control Panel sein erstelltes Timing ohne zusätzliche programmierung testen? Oder muss man die Funktionen TP_Init() und TP_Poll() entsprechend programmieren um das testen zu können? Zu beginn wäre es natürlich gut, nur das Timing ohne zusätzlichen aufwand testen zu können.
Also ich nutze auch das braintechnology-Board und warte grad auf mein AD-Wandler-Board (THS1206M-EVM). Der AD-Wandler hat einen integrierten FIFO. Braintechnology bietet einen gpifcconverter an, mit dem man das vom GPIF-Designer erstellte File mit der braintechnology-software benutzen kann. Also sollte man theoretisch allein mit dem GPIF Designer umgehen können und mit den Befehlen des Headerfiles der usb2.dll von braintechnology. Ich hab das Board mit einem kleinen Delphiprogramm bereits angesprochen. Funktioniert alles soweit. Mein Problem ist jetzt, dem GPIF-Designer beizubringen, dass er nach dem Ready-Signal des FIFOs vom AD-Wandler (ein Low-Puls oder Low-High Signal) eine bestimmte Anzahl Daten aus dem FIFO liest. Es existiert zwar eine Hilfe zum Designer, nur leider habe ich das Prinzip mit den RDY-Signalen noch nicht wirklich kapiert.
Hallo, @Coward: Was für ein "kleines Upload Programm" war das denn, das Du benutzt hast? War das fxload? Bin nämlich auch auf der Suche.. Gruß, Nora
So, nun kann ich zwar den FIFO meines AD-Wadnlers ansprechen, aber leider macht da USB-Board immer nach 512 Byte eine Pause, bevor es die nächsten 512 Byte schickt. Meine Vermutung ist ja, dass Braintechnology in der DLL den BULK Modus eingestellt hat und nicht Isochronous. Braintechnology macht leider gerade Urlaub. Somit ist da niemand zu erreichen. Nun meine Frage: Von Braintechnology gibt es ja diese USB2.dll, die quasi den Cypress beschreibt. Wie läuft das, wenn man das selber machen muss? Ich habe noch nie einen Mikrobontroller mittels einer DLL beschrieben. Kann mir schwer vorsteleln, wie das laufen soll.
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.