Hallo,
mit dem Projekt usbn2mc(http://usbn2mc.berlios.org) wollte ich eine
einfache Möglichkeit anbieten, eine USB Schnittstelle in das eigene
Projekt mit einzubauen.
Da USB ein haufen Theorie ist greifen viele auf die einfach Chips von
FTDI und co zurück. Was eigentlich viel zu Schade ist, da die lange
nicht die funktionalität von USB Anbieten die es es eigentlich kann.
Das Projekt wurde komplett in ANSI C geschrieben, es gibt eine große
Version die ist ca 6 K groß und eine kleine in der man sich besser
auskennen muss, die ist ca. 2 K groß.
Um usbn2mc an den eigenen Controller anzudocken, braucht man nur für
den Controller ein entprechendes Interfacefile. Für Atmels AVR habe ich
bereits eins, an einem für R8C und ARM7 bin ich gerade dran.
Das Pojekt ist mit der USB Bridge von National Semiconductor
USBN9604/03 entwickelt worden. Diese ist einfach und güsntig zu
bekommen.
Auf der Webseite habe ich Versucht die Einfachheit der API zu
erklären.
Das Projekt findet ihr hier:
http://usbn2mc.berlios.org
Falls jemand diese Schnittstelle für einen anderen Controller erweitern
möchte gebt mir bescheid ich helfe euch gerne.
Für Anregungen und Kritik habe ich immer ein offenes Ohr.
Benedikt
>Die Domain usbn2mc.berlios.org wurde von>für ein zukünftiges Projekt oder im>Auftrag eines Kunden reserviert.
falsche url oder noch nicht live ?
Bye, SImon
> Für Anregungen und Kritik habe ich immer ein offenes Ohr.
Also ich haette die Leute das alles selber machen lassen, schliesslich
ist der USBN960x doch recht einfach zu verwenden und es gibt sogar einen
Beispielsource von National.
Das Problem bei fertigen Sachen ist naemlich das sie immer viel zu fett
sind und nie so recht in das eigene Design passen. So braucht z.B meine
Anbindung am R8C so 60-100Bytes (je nach Buffergroesse).
Ansonsten kann ich dir aber nur zustimmen. Die FTDI Dinger sind ein
hirntoter Krampf im vergleich zu einem USBN wo man alles selber
festlegen kann.
Interessant koennte es aber werden wenn jetzt demnaechst fuenf Leute
irgendein Projekt damit veroeffentlichen und alle dieselbe ID
verwenden. :-)
Olaf
Zitat von Olaf: "schliesslich ist der USBN960x doch recht einfach zu
verwenden"
Einfach ist immer relativ. Ueberleg mal was du alles ueber USB weisst,
und wie lange es gedauert hat. Angefangen von DATA0/DATA1 bis zu den
Unterschieden bei der Enumeration unter Windows und Linux.
Ich denke es ist auf jedenfall ein zeitlicher Gewinn, wenn man sich das
ganze theorie Thema USB ersparen kann, aber trotzem die Vorteile davon
nutzen kann.
Mit usbn2mc muss man eigentlich nur Wissen das ein Schnittstelle zum
Datenaustauschen Endpoint heisst, und das man zu jedem Endpoint eine
Funktion definieren muss, die aufgerufen wird wenn Daten vorhanden sind.
Und das ist von einem Programmierer eher der Altag, als sich mit
irgendwelchen Toggel Bits usw... zu beschaeftigen.
Ich persoenlich bin ein Fan von schoenen APIs die mir viel abstrahieren
und ich nicht jeden Mist ins feinste Detail durchdenken muss.
Wenn es aber um Optimierung und Tuning geht, da bin ich ganz deiner
Meinung nach, macht es mehr Sinn nur das Wesentliche in die eigene
Firmware einzubauen.
Und meiner Meinung nach gibt es verstaendlichere und schoenere Code
Beispiele als der vom USBN von National Semiconductor.
Du musst auch beruecksichtigen, das viele verschiedene Wissenschaften
(auser der Informatik) Mikrocontroller Anwendungen entwicklen. Das sind
nicht alles Leute die in C, ASM & Co reden, denken und traeumen koennen.
Man sollte solche Aussagen wie Deine immer von verschiedenen Seiten
anschauen, so denke ich.
Gruss Bene
Autor: USB User (Gast) schrieb am 24.10.2006 10:21:
>Hallo Bene,>finde ich toll. Kannst Du denn Schaltplan des Demo Boards auch als PDF>anbieten, da nicht alle mit Eagle arbeiten - Danke.
Ich habe mal versucht die Platine von Benedikt mit gEDA nachzubauen,
hier gibt es Bilder und die gEDA Dateien:
http://www.ssalewski.de/AVR_USB_gEDA.html.de
Ist allerdings noch ungetestet.
Gruß
Stefan Salewski
> Hat mal jemand getestet welche Geschwindigkeiten damit erreicht werden?> Mich Interessiert va die Richtung vom Controller zum PC.
Wenn ich mich richtig erinnere, ist schon eine Weile her das ich das
getestet habe, lag ich so bei 6-8kbyte/s. Der Engpass ist der SPI zum
USBN. Parallel angeschlossen ginge sicher noch viel mehr. Allerdings
will man ja an einem Microcontroller nicht die ganzen Beine
verschwenden.
Olaf
Ich nutze usbn2mc in diesem Projekt hier:
http://www.ixbat.de/index.php?page_id=92
Dort uebertrag ich ueber einen Endpoint 250KB/s
Die Geschwindigkeit wird eigentlich nur durch das Programm im AVR
gebremst. Man kann mit dem USBN9604 locker die komplette Bandbreite
ausschoepfen, aber da braucht man schon einen sehr schnellen Prozessor
der die Daten in den USBN9604 schaufelt.
In einem test habe ich so errinnere ich mich knappe 500KB/s geschafft.
Wobei es auch wieder drauf ankommt ob man im Bulkmodus oder Isochron-
uebertraegt. Bei Bulk wird jedes Paket bestaetig, d.h. jedes 2. ms geht
fuer das drauf.
Gruss Bene
@Stefan: Ich wusste noch nicht ob ich dein Board erwaehnen darf, hatte
aber dein Link auch schon in meinem Beitrag drin :-)
> Ich nutze usbn2mc in diesem Projekt hier:> http://www.ixbat.de/index.php?page_id=92
Ich kann kaum glauben das dein Board richtig funktioniert. :-o
Fuer meinen Geschmack ist der Quarz viel zu weit vom USBN entfernt!
Und ich haette mir auch die Schutzwiderstaende in D+ und D- nicht
eingespart.
Olaf
Olaf (Gast) schriem am 24.10.2006 um 15:34 Uhr:
>Und ich haette mir auch die Schutzwiderstaende in D+ und D- nicht>eingespart.
Schutzwiderstände?
Wo werden die im USBN960x Datenblatt erwähnt?
Ausgangsimpedanz von D+ bzw. D- ist 35 Ohm (Datenblatt Seite 53), wenn
man da willkürlich Zusatzwiderstände einfügt ist das wohl eher
nachteilig!
Wenn in die Datenleitungen Widerstände gehören, sollte dies doch wohl im
Datenblatt ausdrücklich erwähnt werden (siehe AT90USB, dort je 22 Ohm)
Stefan Salewski
I have been working on a similar API for the LPC214x range of
microcontrollers (ARM7 + USB from Philips/NXP). The basic idea behind
the API is that there is a common core which handles the hardware
interface and 'chapter 9' processing and that everything else can be
installed on top by registering structures or callback function
pointers. The project page is at:
http://wiki.sikken.nl/index.php?title=LPCUSB
For example, a USB virtual COM port can be as simple as this:
http://lpcusb.cvs.sourceforge.net/lpcusb/target/examples/main_serial.c?revision=1.7&view=markup
(this example simply echoes back everything you send)
Also ich muss auch gestehen ich bin Informatiker und habe von der
E-Technik nicht die tiefe Ahnung. Das mit dem Quarz, ist schlecht da
gebe ich dir Recht, werde es auch mal ausbessern, aber als Informatiker
gings mir immer mehr um die Software.
Das Board habe ich bereits 4 mal aufgebaut und es geht einwandfrei. Das
Problem das der USBN9604 eher hat ist, dass er nur mit teueren, sprich
guten Quarzen arbeitet. Die von der Angelika (Reichelt) gehen leider
nicht.
Noch was anderes. Ich hab bereits einige Projekte mit usbn2mc
realisiert, hier ein kleiner Auschnitt:
- Ethernet Netzwerkstack im AVR angesprochen ueber USB als Netzwerkkarte
- PS2 zu USB Tastatur Adapter
- RS232 zu USB Wandler (inkl. Treiber fuer Linux /dev/ttyUSB0)
- Logik Analyser
- ATMega Bootloader ueber USB ( so kann man sein Geraet ueber USB
ansteurn und neu programmieren)
Die Links dazu findet ihr hier:
http://www.ixbat.de/
Gruss Bene
> Das Board habe ich bereits 4 mal aufgebaut und es geht einwandfrei. Das> Problem das der USBN9604 eher hat ist, dass er nur mit teueren, sprich> guten Quarzen arbeitet. Die von der Angelika (Reichelt) gehen leider> nicht.
Lass mich mal raten, Reichelt schickt keine Grundwellenquarze bei
24Mhz? :-)
Das mit den Widerstaenden habe ich uebrigens in irgendeine Applikation
gesehen. Da waren zwei 47R in den Datenleitungen. Ich weiss aber nicht
mehr wo da es schon ein 2Jahre her ist seitdem ich das gemacht habe.
> - PS2 zu USB Tastatur Adapter
Gibt es sowas nicht fertig zu kaufen? :-o
Ich hab mir einen USB-HPIB Konverter gebaut und als letztes ein
DDS-Generator mit USB.
Uebrigens noch ein Tip. Ich hab mir den Quarz am Microcontroller
eingespart. Der USBN hat ja noch einen Taktausgang.
Olaf
Olaf (Gast) schrieb am 24.10.2006 um 22:57 Uhr:
>Lass mich mal raten, Reichelt schickt keine Grundwellenquarze bei>24Mhz? :-)
Ja, 3. Oberton! Sind die unbrauchbar für den USBN960x?
Grundton haben sie in SMD-Gehäuse -- kostet aber das vierfache.
>Uebrigens noch ein Tip. Ich hab mir den Quarz am Microcontroller>eingespart. Der USBN hat ja noch einen Taktausgang.
Da hatte ich auch schon dran gedacht -- ich war mir aber nicht sicher,
ob man dann nicht Probleme bekommen kann, wenn man in den Sleep- bzw.
Suspend-Mode gehen bzw. wieder aufwachen will. Und nach einem Reset
liegt die Frequenz des Taktausgangs des USBN ja bei 4 MHZ -- man muss
dann im Betrieb die Taktfrequenz durch Beschreiben eines Registers des
USBN eventuell umschalten. Verträgt der AVR diesen Taktwechsel
problemlos?
Gruß
Stefan Salewski
Scheint so, dass die billigen Reichelt-Quarze, 3. Oberton für 24MHz, für
den USBN960x unbrauchbar sind:
Datenblatt Seite 7:
"The internal crystal oscillator uses a 24 MHz fundamental crystal"
Das hatte ich übersehen.
Gruß
Stefan Salewski
> Da hatte ich auch schon dran gedacht -- ich war mir aber nicht sicher,> ob man dann nicht Probleme bekommen kann, wenn man in den Sleep- bzw.> Suspend-Mode gehen bzw. wieder aufwachen will.
Dazu kann ich dir nichts sagen weil ich keinen recht Sinn fuer
Sleepmodis bei USB-Devices gesehen habe die sich vom Bus versorgen. Ich
wuesste aber
jetzt keinen Grund wieso das nicht gehen sollte.
> Und nach einem Reset> liegt die Frequenz des Taktausgangs des USBN ja bei 4 MHZ -- man muss> dann im Betrieb die Taktfrequenz durch Beschreiben eines Registers des> USBN eventuell umschalten. Verträgt der AVR diesen Taktwechsel> problemlos?
Ich habs sowohl mit einem Mega8 wie auch einem R8C13 laufen. Deine Frage
ist in der Tat nicht ganz dumm da so eine Taktumschaltung theoretisch
probleme machen kann wenn sie zu einem sehr kurzem Takt fuer eine
Periode fuehrt, aber ich vermute mal der USBN macht es richtig.
Jedenfalls hat es bei mir immer funktioniert.
Wenn ich mich richtig erinnere, muesste mal wieder in die Sosse schauen,
hab ich den Mega8 sogar etwas uebertaktet damit der SPI schneller
laeuft.
Macht alles keine Probleme.
Olaf
hallo leute,
ich hab dazu noch eine kurze Anmerkung hinsichtlich dem
Eingangsstatement von Benedikt. Diese Bridge kostet bei Farnell ab 10
Stück ca. 5.80€, der FTDI245BL liegt bei 6.32€. Preislich seh ich da
keinen grossen Vorteil, hinsichtlich der technischen Unterschiede kann
ich nicht viel dazu sagen. Lohnt sich dann die Mehrarbeit?! Bei meinem
Job würd ich gerne auch eine billigere Methode einsetzen -- wobei ich
mit dem FTDI keine Performanceprobleme habe.
viele grüsse herbert
Hallo Leute,
ich habe das layout von benedikt neu geriutet und die meisten diskreten
Bauteile auf smd umgestellt.
Ich habe vor die Platinen bei HAKA fertigen zulassen. Das dauert in der
Regel 2 Wochen. für 50€ würde man 6 platinen erhalten. Ich benötige aber
nur 2. Hat jemand interesse an den anderen 4 ? Stückpreis würde inkl
Portr so bei 10€ liegen. Wenn jemand mehr als eine möchte, entfällt
natürlich das doppelte Porto. Ich rechne den Preis dann auf den cent
genau aus.
Wer interesse hat, kann sich ja bei mir melden. evtl kann man ja auch
die Bauteile zusammen bestellen. dann wirds sicherlich billiger (z.B.
bei CSD)
ich habe ein Bild angehängt von dem Layout. Kann aber noch geändert
werden, wenn jemand nen Vorschlag hat.
Gruss,
John
John Crispin (john) schrieb am 25.10.2006 um 10:53 Uhr:
>Hallo Leute,>ich habe das layout von benedikt neu geriutet und die meisten diskreten>Bauteile auf smd umgestellt.
Ein paar kurze Anmerkungen:
- Den 24 MHz Grundton-Quarz gibt es bei Reichelt nur in einem andern
(SMD) Gehäuse, und Conrad gibt nicht an, ob es Grundton-Quarze sind. Bin
auch gerade am Überlegen, wo ich am besten einen geeigneten Quarz
bekomme.
-Vorsicht mit Pin 6 (/DACK), der muss meiner Meinung nach, soweit ich
das Datenblatt verstanden habe, an VCC.
- Warum Quarzoszillator statt Quarz für AVR? Einfacher Quarz ist
deutlich preiswerter und verbraucht weniger Energie.
Gruß
Stefan Salewski
Hi,
> - Den 24 MHz Grundton-Quarz gibt es bei Reichelt nur in einem andern> (SMD) Gehäuse, und Conrad gibt nicht an, ob es Grundton-Quarze sind. Bin> auch gerade am Überlegen, wo ich am besten einen geeigneten Quarz> bekomme.>
also bei CSD gibt es den 24Mhz als grundton. da ich auch dort den usbn
bestellen wollte ist das kein problem. der 24Mhz kostet da 30 cent :)
> -Vorsicht mit Pin 6 (/DACK), der muss meiner Meinung nach, soweit ich> das Datenblatt verstanden habe, an VCC.
werde ich nachlesen, bei benedikt scheint aber so zu funktionieren
> - Warum Quarzoszillator statt Quarz für AVR? Einfacher Quarz ist> deutlich preiswerter und verbraucht weniger Energie.
hast du recht :), kommt heute abend ein normaler quarz mit 2 kerkos hin
danke für die kommentare
John
> Eingangsstatement von Benedikt. Diese Bridge kostet bei Farnell ab 10> Stück ca. 5.80€, der FTDI245BL liegt bei 6.32€. Preislich seh ich da
Ich hab meine USBN immer in Tokyo gekauft. Da kosten sie 600Yen, also
etwa 4Euro. :-)
> ich habe das layout von benedikt neu geriutet und die meisten diskreten> Bauteile auf smd umgestellt.
Ich wuerde empfehlen dann den Taktausgang des USBN zum ACR
rueberzuziehen und das so ein Loetbruecke vorzusehen. So kann man sich
entscheiden ob
man einen Quarz verwenden will oder nicht.
> -Vorsicht mit Pin 6 (/DACK), der muss meiner Meinung nach, soweit ich> das Datenblatt verstanden habe, an VCC.
Ich will mich jetzt aus dem Kopf nicht festlegen, aber ich glaub auch
das
man das nochmal ueberpruefen sollte. Ich glaub auch ich hab irgendwie
mehr Kondensatoren an meinem USBN. Ich hab auch noch einen Pullup
fuer CS damit man den Mega8 ueber SPI brennen kann ohne das der
USBN am Bus stoert.
Wenn ich es nicht vergesse stelle ich mein Layout mal auf meine
Homepage.
Olaf
Ich hab da noch eine Anregung. Wenn wir irgend einen AVR draufbauen
koennten der mehr als einen UART hat, hatt man den Vorteil, dass man
wenn man irgendwann keine Lust mehr auf das Board hat dieses als
einfachen rs232 zu usbwandler hernimmt.
Ich habe schon begonnen einen Treiber fuer Linux zu schreiben, da kann
man den UART als /dev/ttyUSB ansprechen. Ebenfalls wird man den I2C Bus,
die IO Ports auch als Linux Geraet ansprechen koennen. (/dev/i2c
/dev/parport).
Wenn sich jetzt noch jemand finden wuerde der einen Treiber fuer die
Windowsfraktion schreiben koennte wuerde man das Board noch lange her
nehmen koennen.
Was meint Ihr?
Gruss Bene
Hi Bene,
welchen controller hast du gedacht ? atmega128 ? wenn man nen mega128
nimmt, sollte man auch gleich noch etwas ram drauf packen und evt noch
etwas spi flash. oder was denkst du ?
John
Wir muessen nur aufpassen das es nicht wieder zuviel, dadurch zu teuer
und dadurch wieder uninteresannt wird.
Denke ein atmega128 mit dem usbn9604 in Streichholzschachtelgroesse mit
2 langen reihen pins, waere eine gute Basis fuer viele Projekte.
Gruss Bene
ok....
ich mache mich heute abend an das layout und schicke es die dan zur
kontrolle zu :) speicher lasse ich weg, und rs232 wandler auch. mache
leute (wie ich) benutzen eben gerne ftdi boards ohne level shifter :)
hi,
hier nochmal die aktuelle Version des Boards.
ich muss noch den ISP roputen und es gibt noch ein paar stellen an denen
der drc meckert. aber jetzt erst mal ins bett
das board wird ca 7*3 cm
soll ich lieber ein usb B oder mini usb stecker einplanen ?
ok,
werde dann den usb mini verwenden.
noch 2 andere Punkte :
* ds1813 als rest baustein ? kostet ca 2 euro
* am mega128 geht isp ja über tx und rx. wenn ich mich recht entsinne,
gehen rx tx nur im normal betrieb wenn pen = 0 und wen pen=1 dann sind
das die isp ports !?!?. also soll ich an pen einen jumper ranhängen ?
oder lieder einen microswitch ?
ich packe noch 2 mount holes neben den usb stecker, dann sollte alles
gut funktionieren.
evtl noch die option einen serial flash von ateml auf den bottom layer
:) denn muss man ja nicht mounten. :)
gruss,
John
Hi,
hier die fertige schematic und das board.
mini usb habe ich nicht verwendet, da die viel teurer sind
das board ist ca 7*3 cm gross, also wird der preis bei ca 5€ liegen,
wenn wir 12 stck bestellen.
wenn jemand eins will ist jetzt der richtige moment dafür :-) wenn wir
8 stück habem werde ich bestellen.
gruss,
John
naja.... die tun nicht wirklich not in der schematic. ohne geht es auch.
im board ist das richtig verdrahtet. der einzige fehler den ich noch
gefunden habe ist, das C11 ein package 0805 hat, aber ne 1µF tanatl sein
soll. das werde ich heute abend noch ändern. danach ist dann alles i.O.
zumindest finde ich nicx anderes
A large part of the API seems related to creating the USB descriptor,
however you need to create it only once and the descriptor never changes
during operation. How about creating the USB descriptor on the PC
instead of on the microcontroller? For example, you write a simple PC
program that creates a usbdescriptor.h file that can be #included by the
microcontroller code). That would save even more program code and RAM.
What I am doing for my USB stack is to put all USB descriptors in a
single structure. The following relatively simple function then handles
the data for the GET DESCRIPTOR request:
102 BOOL USBGetDescriptor(U16 wTypeIndex, U16 wLangID, int *piLen, U8
**ppbData)
103 {
104 U8 bType, bIndex;
105 U8 *pab;
106 int iCurIndex;
107
108 ASSERT(pabDescrip != NULL);
109
110 bType = GET_DESC_TYPE(wTypeIndex);
111 bIndex = GET_DESC_INDEX(wTypeIndex);
112
113 pab = (U8 *)pabDescrip;
114 iCurIndex = 0;
115
116 while (pab[DESC_bLength] != 0) {
117 if (pab[DESC_bDescriptorType] == bType) {
118 if (iCurIndex == bIndex) {
119 // set data pointer
120 *ppbData = pab;
121 // get length from structure
122 if (bType == DESC_CONFIGURATION) {
123 // configuration descriptor is an exception, length is
at offset 2 and 3
124 *piLen = (pab[CONF_DESC_wTotalLength]) |
125 (pab[CONF_DESC_wTotalLength + 1] << 8);
126 }
127 else {
128 // normally length is at offset 0
129 *piLen = pab[0];
130 }
131 return TRUE;
132 }
133 iCurIndex++;
134 }
135 // skip to next descriptor
136 pab += pab[DESC_bLength];
137 }
138 // nothing found
139 DBG("Desc %x not found!\n", wTypeIndex);
140 return FALSE;
141 }
Thats right. It would be better if the descriptors generated in a pc.
But my idea was to create a really easy to use API.
With my API now you can create a Device with these functions:
interf = USBNAddInterface(conf,0);
USBNInterfaceName(conf,interf,"usblp");
Add Endpoints for the communication:
USBNAddInEndpoint(conf,interf,1,1,BULK,64);
USBNAddOutEndpoint(conf,interf,1,2,BULK,64,&PrintOnLCD);
...
For small Controller this isn't the best way, i know. But for such
controllers i wrote the tiny firmware, which you also found in the
source tree. With this version, you have to define the descriptors
manually.
doch hat er :-)
Autor: Stefan Salewski (Gast)
Datum: 26.10.2006 21:08
Ich nehme auch eins!
Post- und EMail-Adresse siehe
http://www.ssalewski.de/Contact.html.de
Gruß
Stefan Salewski
Bevor es noch mehr Verwirrung gibt:
Stefan Brück (stefb) != Stefan Salewski (Gast)
Hier im Forum hatte ich nicht geschrieben, weil man eh die Emailadresse
weitergeben musste. Ich hatte mich extra am 26.10 registriert (sic) und
über das Email-System von µC.net eine Mail an John Crispin (john)
geschrieben.
Gruß
Stefan
Hi John,
ich hab' den Thread jetzt erst gesehen,
falls moeglich hatte ich gerne auch ein Board bestellt,
(hanshein AT web dot de :-)
Cooles Projekt,
Hans
hi hans,
da alle 12 platinen vergeben sind ist die Bestellung leider voll :(
jedoch... ich habe bereits 4 reservierte Platinen (inkl. deiner) für die
zweite Bestellung. Ist also nur eine Frage der Zeit bis wir neu
bestellen. Ich werde dich dan kontaktieren.
gruss,
John
Hi,
sorry das ich micht gemeldet habe. Ich habe die letzten 3 Tage non-stop
im büro verbracht, da es ein Problem mit bei einem kunden gab
Platinen und bauteile sind schon bestellt, bank daten erhaltet ihr heute
abend .
gruss,
John :-)
Hallo Leute
ich habe selbst 5 Jahre mit der USBN 9604 und einem H8S2329 gearbeitet
und Geräte entwickelt und über die Übertragungsgeschwindigkeit folgendes
festgestellt: diese Bridge muss um an die 8 bis 9,5 Mbit im Bulktransfer
zu erreichen mit der DMA Option betrieben werden (DACK Signal)
allerdings sind die µC nicht gerade die Lowpowerteile. Dazu sollte auch
das Doublebuffering verwendet werden. Auch die internen Buffer sollten
maximale Grösse haben um die Interruptlast zu minimieren. 2-4k pro
Buffer plus die Verwendung mehrer Puffer im µC.
Ansonsten läuft die Bridge ohne Komplikationen.
Grüsse
Vosi
Hallo zusammen,
ich versuche seit Tagen verzweifelt folgendes Problem zu lösen:
Ich habe eine Verbindung zu meinem USBN9604, lesen, schreiben in
Register ist alles kein Problem. Frequenz passt auch.
Nun wollte ich eigentlich mein erstes SETUP Paket empfangen, aber das
kommt nie an. Ich habe ausschließlich RESET und SD3 Events, der RESET
wird von mir auch ordnungsgemäß verarbeitet.
Nur habe ich eben nie RX events...
als ich gerade mal die Spannungen an den D+ und D- Leitungen gemessen
hab kam ich zu folgendem Ergebnis:
D+ ca. 2,6 - 2,9 V
D- 0V
(beides gegen GND gemessen)
laut USB Spezifikation darf doch nie eine Leitung unter 0,8 V fallen
oder ? (Common Mode Range: 0,8 - 2,5V)
Von daher ist meine Frage ob diese Spannungen normal sind und ich
deshalb evtl. kein SETUP Paket empfange. Und wenn es daran liegt, wie
kann es sein das D- auf 0V geht ?
Gruss
Andre
Das Problem habe ich nun nach ein paar Monaten endlich gelöst.
Nachdem ich ein paar andere Boards mit dem USBN studiert habe, ist mir
aufgefallen, dass ich den Entkoppelungskondensator an der D+ Leitung
falsch platziert habe.
Dieser muss unbedingt zwischen V3.3 und dem 1.5k Pull-Up Widerstand
platziert werden !
Nicht wie bei mir zwischen 1.5k Pull-Up und D+.
Ich dachte ich poste das mal falls jemals jemand ähnliche Probleme hat.
Hallo an alle vport Platinen Besitzer!
Es gibt mittlerweile eine Firmware und eine Bibliothek dazu.
Hier sind die Quelltexte:
http://vport.svn.sourceforge.net/viewvc/vport/
Eine Dokumentation und Infoseite folgt demnächst.
Gruss Bene