Forum: Mikrocontroller und Digitale Elektronik USB Controller CY7C68013A


von Neuling (Gast)


Lesenswert?

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?

von ARM-Fan (Gast)


Lesenswert?

>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.

von Neuling (Gast)


Lesenswert?

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?

von ARM-Fan (Gast)


Lesenswert?

>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.

von Neuling (Gast)


Lesenswert?

Wie auch immer.....meine erste Frage war aber, ob es jemanden gibt der 
alternativen kennt und mir diese nennen kannn.

von ARM-Fan (Gast)


Lesenswert?

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.. ;-)

von Neuling (Gast)


Lesenswert?

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.

von Anonymous Coward (Gast)


Lesenswert?

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.

von Christian R. (supachris)


Lesenswert?

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.

von Neuling (Gast)


Lesenswert?

@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.

von Christian R. (supachris)


Lesenswert?

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.

von Neuling (Gast)


Lesenswert?

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.

von Christian R. (supachris)


Lesenswert?

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.

von Neuling (Gast)


Lesenswert?

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?

von Christian R. (supachris)


Lesenswert?

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.

von Neuling (Gast)


Lesenswert?

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.

von Christian R. (supachris)


Lesenswert?

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.

von Neuling (Gast)


Lesenswert?

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.

von Christian R. (supachris)


Lesenswert?

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.

von Neuling (Gast)


Lesenswert?

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.

von Peter (Gast)


Lesenswert?

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.

von nora (Gast)


Lesenswert?

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

von Peter (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.