Hi!
Bin gerade dabei (seit gestern) rechergen über den PDIUSBD11 zu machen.
So sieht der IC ja recht einfach aus (I2C usw...) aber mit den
Deskriptoren komm ich nicht klar, wie und wo man die in den PDIUSBD11
hineinschreiben muss, oder wie das funktioniert.
Falls jemand nicht weiß, was der IC macht, der sehe sich das PDF-File im
Anhang an, vielleicht kommt man dann auch auf den Geschmack...
Falls jemand Erfahrungen mit dem IC hat, bitte schreibt zurück.
Ich möchte das ganze dann mit einen AT89C2051 betreiben.
mfg Weinga-Unity
Hallo
Sieht interessant aus.
Also zum µC sieht es so aus das du I2C koppeln mußt.
Wo genau hast du Probleme?
Gibt es fertige Treiber für die PC Seite?
Bekommt man die auch in Einzelstücken?
Eine Frage: hat der 2051 eine I2C Schnittstelle? Wenn nicht mußt man die
doch per Software simulieren. Wäre da ein Chip von FTDI nicht
interessanter? Den gibt es mit serieller Schnittstelle.
Mein Problem ist nicht der I2C-Bus, sondern, dass ich nicht weiß, wie
ich den Geräte-Deskriptor, Konfigurations-Deskriptor, Interface
Deskriptor usw... übermitteln soll. Aber wahrscheinlich scheiters
derzeit noch an meinen USB-Wissen.
Nebenbei: Der 2051 hat keine I2C-Schnittstelle, aber per Software lässt
sich eine sehr schnelle und gute Schnittstelle realisieren.
ich würde mit trotzdem mal den FT232BM anschauen. Die Konfiguration ist
auch einfach. Nur an den USB Port anschließen und mit der frei
verfügbaren Software konfigurieren
Der IC (FT232BM) macht nichts anderes, als einen virtuellen COM-Port zu
erzeugen. Meine Hardware muss aber eine USB-Maus werden. Und dazu kann
ich den FT232BM nicht gebrauchen.
Hallo,
habe mit dem PDIUSBD11 und einem ATMega8 einen HID-Joystick gebastelt,
um mal ein wenig die USB-Programmierung zu testen. Vorteil ist, daß die
HID-Treiber schon bei Windows dabei sind, ich mußte mich also nur noch
um die Mikrocontroller-Seite kümmern.
Sehr geholfen hat mir dabei das Buch USB - Universal Serial Bus von
H.J.Kelm aus dem Franzis Verlag und die Seiten von Craig Pollock
www.beyondlogic.org. Weitere wichtige Unterlagen findet man natürlich
auf www.usb.org.
Gruß,
Axel
Besorg dir mal bei Phips die Sourcen zum PDIUSB12
Die Strukturen und Commands sind abgesehen vom Paralell Port wie bei
allen Philips USB Cores ziemlich ähnlich.
Wichtig der 11er hat einen Embedded Hub der abgeschaltet sein muss das
stand (steht) nicht im Datenblatt
Im Anhang mal das Papier von Graig Peacock das sollte einige dinge
klären.
Thomas
Hi Axel:
Könntest du mir vielleicht ein Schemata geben, was und wann du was über
den I2C-Bus sendest? Wäre nähmlich für eine HID-Maus.
mfg Weinga-Unity
Hallo,
lies dir mal den Anhang im Posting von Thomas durch, der erklärt schon
einiges. Prinzipiell habe ich die darin dargestellte Hardware nachgebaut
und den ATMega8 angeschlossen. Auf www.beyondlogic.org wurde diese
Hardware an einen PIC angeschlossen, dort gibt es auch eine gut
dokumentierte Software (in C) für den PIC. Diese habe ich im ersten
Schritt an den AVR angepasst und sie im zweiten Schritt HID-kompatibel
gemacht. Eine HID-Maus ist damit auch kein Problem, man benötigt nur
einen anderen Report-Descriptor (Hab ich kurz getestet, aber dann nicht
weiter verfolgt). Ich mail dir meine Software mal zu.
Ein Schema, was ich wann über den I2C-Bus sende, habe ich so nicht
parat. Schau halt mal in die Quelltexte und Datenblätter (vor allem der
Anhang von Thomas, auch zu finden auf www.beyondlogic.org), die erklären
schon einiges. Wenn du dann noch Fragen hast, kannst du dich gerne an
mich wenden.
Gruß,
Axel
Hi Axel!
Hab mir jetzt so eine kleine Schaltung gebastelt, wo ich einen I2C-Bus
von PC aus steuern kann (funktioniert über die RS232 und man kann durch
ein Terminalprogramm die Sachen abfragen und schalten; sieht in etwa so
aus: S112W255WE Start, Schreibe 112, Schreibe 244, Ende).
Meine Frage nun: Kann man auch mit einer langsamen I2C-Bus
Geschwindigkeit (200 Bytes/Sec) auch den PDIUSBD11 ansteuern, oder ist
das schon zu langsam?
mfg Weinga-Unity
Zu den Requests:
Es gibt da nichts auser der Initialisierung was du selbständig an den
Chip sendest. Du beantwortest ganz einfach !? alle Usb Requests die der
Host schickt und fertig:
Ein Beispiel :
Der Host fragt via Setup nach dem Device Descriptor
-> du sendest den Device Deskriptor.
Naja ganz so einfach ist es dann in der Praxis doch nicht. Für eine Maus
ist neben der USB1.1 Spec
Kapitel 9 auch die HID Spec wichtig. Beides auf www.usb.org zu finden.
Thomas
Hallo,
Thomas hat recht. Nach der Initialisierung beantwortest du nur noch USB
Requests. Der PDIUSB teilt das Auftreten eines Requests über den
Interrupt-Pin mit, d.h. diesen müßtest du auch noch abfragen.
Zur Geschwindigkeit kann ich sagen, daß ich Probleme hatte, wenn ich
nicht schnell genug auf einen Request geantwortet habe. Erhält der
USB-Host-Controller nicht schnell genug eine Antwort, dann initiiert er
einen Bus-Reset. Diesen Effekt konnte ich mehrmals beobachten. Habe in
meinem Programm manchmal zu viel Zeit mit aktivem Warten beim Versand
über die RS232-Schnittstelle verbraten. Ob deine 200 Byte/sec reichen
kann ich nicht sagen.
Der Quelltext, den ich dir gemailt habe, ist in C geschrieben, sollte
sich auch ohne viel Aufwand für den PC anpassen lassen.
Ich kann nur sagen, daß das größte Problem darin liegt, das
USB-Protokoll zu verstehen. Wenn man das einmal begriffen hat, ist die
Implementation eher einfach. Den USB-Joystick hatte ich dann relativ
schnell am laufen. Eine USB-Maus funktioniert vom Protokollablauf her
gleich. Ich kann dir daher nur noch mal das von mir erwähnte Buch
empfehlen.
Gruß,
Axel
Da anscheinend einige mit dme PDIUSBD11 gearbeitet haben, hab ich noch
folgende Frage:
Der IC benötigt, 3.3V. Leder bekomm ich in unserer Gegend keinen
Festspannungsregler, der 3.3V erzeugen kann. So hab ich mir gedacht, ich
mach das mit einer Zener-Diode, jedoch weiß ich nicht genau, wieviel mA
das Teil braucht. Laut den Datenblätter und Schaltungen die ich habe hat
es den Anschein, dass es über 100mA sein müssen, und wenn es so wäre,
dann kann ich das mit der Zener-Diode schon mal vergessen.
Weiß jemand genau, wieviel er braucht?
mfg Weinga-Unity
Ohne richtigen LowDrop 3.3V Regler wird das warscheinlich nichts.
VBus kann lt Spec bis runter zu 4.4V Volt gehen !
Soweit ich weis arbeitet der LM317 dann nicht mehr.
Auserdem ist die Stromaufname im Leerlauf deutlich zu gross.
Thomas
Hi!
Hab jetzt das erste Mal den IC angesprochen. Rührt sich nichts!
Da ich beim Aufbau der Schaltung einmal etwa 4.4V statt 3,3V hatte
wollte ich jetzt fragen, ob man überprüfen kann, ob der IC noch
funktioniert.
Ich hab bis jetzt die USB_Initialisierung laut dem ZIP-File von AXEL
gemacht. Soll man da am PC schon was merken?
mfg Weinga-Unity
Hallo,
als Spannungsregler habe ich einen Low-Drop Typ LM3940 von National
genommen. Gibts auch bei Reichelt.
Wenn der IC korrekt an den PC angeschlossen ist, solltest du was merken,
sobald du den Soft-Connect auf dem IC einschaltest. Das ist ein interner
Pull-Up Widerstand von D+ nach 5V. Wenn du diesen extern beschaltet
hast, sollte der PC etwas merken, sobald du das USB Kabel einsteckst.
Du kannst über einen internen Teiler die Frequenz einstellen, die am
ClkOut Pin ausgegeben wird. Vielleicht kannst du damit testen, ob der IC
noch lebt.
Gruß,
Axel
Hi!
Ich hab die USB-Init probiert, und auch den Soft-Connect-Befehl
gesendet. Jedoch macht der PC keinen Muxer. Der Befehl kommt aber an, da
dich die Frequenz ändern kann.
Was müsste der PC denn machen?
mfg Weinga-Unity
Dann würde ich als erstes mal den USB Stecker
auf korekten Anschluss überprüffen.
(Ein sehr beleiebter Fehler ist das Vertauschen von D+ und D-)
Mit dem SoftConnect wird der der 1.5k auf der D+ Leitung eingeschaltet.
Das sollte der PC sofort mit
einem Pop Up Fenster (PnP Event) beantworten.
Falls das nicht passiert und sonst alles korrekt ist erst mal die USB
Ports mit einem funktionierenden Device auf Funktionalität prüfen.
Öfters mal mit RegEdit unter HKLM\ENUM\USB\VID000 Einträge löschen sonst
bekommst du den PnP Event eventuell nicht zu Gesicht.
Thomas