Hallo, in den Eval-Boards findet man immer die Disconnect-Möglichkeit mit 2 NPN und einer Handvoll Widerständen. Was spricht dagegen, das einfach so zu machen? Die GPIOs sind zumeist ja 5V-Tolerant, auch ohne Vcc: On-Off |--/| 3V3 / ,--| / |-------/ -----. | |/__| | STM32F103VC | ------------------ | 1k5 | | | ,--[==]-------| GPIO(Connect) | <--5V-' | | | | | | <--DP----+-------------| USB_DP | USB-B | | <--DM------------------| USB_DM | | | <--GND-. ------------------- | | | | --- --- (Bild ohne RC-Filter in den Datenleitungen / Schutzbeschaltung)
Ehrlich gesagt habe ich mich das auch schonmal gefragt. Und hab es auch ausprobiert und hat (natürlich) funktioniert. Hab mir auch schon überlegt, sicherheitshalber noch zwischen R und dem Controller eine Diode einzufügen - Schließlich muss der µC das Signal ja nur High treiben um die Anwesenheit am Bus zu signalisieren. Insofern würde mich schon auch der Grund interessieren, wieso das alle mit den Transistoren machen...
Das Demo-Board muss einfach ein paar Bauteile mehr haben damit es teurer verkauft werden kann... GPIO Pin reicht. Externer Quarz vorsehen, damit USB garantiert tut. Mit dem internen kann es eventuell Probleme geben!
Ich hab in den Artikel STM32 USB-FS-Device Lib gerade mal meinen Schaltplan eingefügt, mit dem es funktioniert. Tom
Danke für Eure Antworten, werde mich also gelassen auf einen simplen Widerstand beschränken:-) @Thomas: Unabhängig vom USBLC6 sollte der Flankensteilheit wegen doch streng genommen noch ein RC-Tiefpass (27Ohm/18pF) nachgeschaltet werden, oder?
(Gast) == schrieb: > @Thomas: Unabhängig vom USBLC6 sollte der Flankensteilheit wegen doch > streng genommen noch ein RC-Tiefpass (27Ohm/18pF) nachgeschaltet werden, > oder? Das Referenzboard hatte keinen drin. Und hier wurde mir gesagt, es sei nicht nötig. Was meinen die anderen dazu? Gruß Tom
Streng genommen sollte man die Impedanz auf 90Ohm anpassen. Nachdem ich aber davon recht wenig Ahnung habe und das ganze in meinem Fall nur 'ne Spielerei war, habe ich beschlossen das erstmal zu ignorieren und zu schauen, ob es auch so geht und daher einfach an 3 PCs und 2 Hubs getestet. Allerdings erinnere ich mich, irgendwo gelesen zu haben, dass ein kommerzielles Produkt bei der USB Zertifizierung auch die Flanken einhalten muss. In diesem Fall können dann die R/Cs schon wichtig werden.
Nachtrag: Hatte gerade nochmal Zeit, um ein wenig rumzustöbern. Das hier scheint schonmal wichtige Tipps zu geben: http://www.usb.org/developers/usbfaq#sig7 BTW: Ich hatte damals rein instinktiv 22Ohm Widerstände in die D+/D- Leitungen eingebaut, allerdings kein C. Scheint so ganz brauchbar zu sein. Aber vielleicht kann mal jemand mit etwas mehr Analog-Ahnung uns Digitalos zur Erleuchtung verhelfen?
Hallo, hab die Schaltung mit dem 1.5k Pullup noch nicht ganz verstanden: muss der Prozessor den Pin auf Low ziehen, damit der Host einen Teilnehmer am Bus erkennt??? Bis jetzt hab ich das mit den Transistoren auch installiert - nach diesen Beiträgen, werd ich sie aber später wieder weglassen - und ohne den Pin nach low zu ziehen, erkennt der Host einen Teilnehmer, kann aber nicht mit ihm kommunizieren. Liegt das daran, dass der Pin auf low gezogen werden muss - und warum ist das so??? Gruß Oliver
Kuck Dir lieber mal meine Schaltung von oben an. Du brauchst keinen Pull-Up sondern einen Pull-Down. Solange Data+ auf GND liegt erkennt Dein PC noch kein Gerät, d.h. Du initialisierst erst mal Deine USB Software auf dem µC und dann ziehst Du den Data+ auf High. gruß Tom
Hannes S. schrieb: > Hab mir auch schon > überlegt, sicherheitshalber noch zwischen R und dem Controller eine > Diode einzufügen - Schließlich muss der µC das Signal ja nur High > treiben um die Anwesenheit am Bus zu signalisieren. Insofern würde mich > schon auch der Grund interessieren, wieso das alle mit den Transistoren > machen... Die Diode braucht man nicht, da die Pegel auf den Datenleitungen bei 3,3V liegen. Warum Transistoren: Das kann dir nur der Mitarbeiter von STM erklären, der das beim ersten Board so entworfen hat. Die anderen Boards sind wahrscheinlich so übernommen wurden. Olimex kopiert größtenteils auch nur die bereits existierenden Schaltungen, sei es ihre eigenen oder die von STM. Das ist auch der Grund, warum die an den JTAG-Ports so viele Pull-Ups haben, obwohl die beim STM32 nicht mehr nötig sind. Thomas Burkhart schrieb: > Das Referenzboard hatte keinen drin. Und hier wurde mir gesagt, es sei > nicht nötig. > > Was meinen die anderen dazu? Bei kommerziellen Projekten, die durch die Zertifizierung müssen, sollten sie drin sein. Man kann über die Widerstände und die Kondensatoren wie gesagt die Flankensteilheit verändern. Die optimalen Werte, um ein gutes Augendiagramm zu bekommen, hängen aber auch von anderen Faktoren wie dem Layout ab - hier kann man also nur Empfehlungen geben. Fazit: Ein GPIO-Pin mit Widerstand dran reicht - ich setze das selber auch bei kommerziellen Projekten so ein.
Wenn der stm32 nicht aus usb versorgt wird, darf er D+ nicht auf GND ziehen. http://www.eevblog.com/forum/projects/driving-the-1k5-usb-pull-up-resistor-on-d/
Dann muss man halt zwischen floating und high umschalten. Aber eigentlich müsste das bei allen STM32 machbar sein. Es ist nur ein bisschen Registerfummelei nötig.
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.