Hallo zusammen, ich wollte mir ein Board bauen auf dem ich den PIC16LF1454-I/ST verwenden möchte. Die LF Version da ich an den PIC ein RFM12B anschließen möchte und einen Wiznet W5500, beide Arbeiten mit 3,3V. Leider finde ich keine Schaltplanbeispiele wie die optimale Beschaltung des PICs aussieht damit dieser absolut zuverlässig läuft. Mein Modul soll nachher an Endkunden verkauft werden. - Ist VDD die Versorgungsspannung vom Programmieradapter (PICKIT3)? - VUSB3V3 ist offensichtlich die Versorgungsspannung per USB die vorher über einen Festspannungsregler auf 3,3V runtergeregelt wird. - Wie sind die USB Leitungen zubinden? Vermutlich D- auf D- und D+ auf D+, aber was ist mit dem ID Pin der USB Buchsen? - Muss ich einen Pegelwandler haben um den Controller per PICkit3 zu programmieren? - Wie kriege ich die SPI Verbindung vom PIC zum W5500 und RFM12B hin? - Gibt es sonst irgendwelche besonderheiten zu beachten? Vorwiderstände oder ähnliches in der USB Verbindung? Sorry, dass ich so viele Fragen stelle aber ich habe bisher keine Schaltpläne online gefunden. Der einzig einigermaßen Hilfreiche Thread war bisher dieser hier Beitrag "USB-Microcontroller für universelle Verwendung, I/O" Danke für eure Mühe im Voraus Gruß Martin
Martin H. schrieb: > - Ist VDD die Versorgungsspannung vom Programmieradapter (PICKIT3)? Vdd ist die Versorgungsspannung, muss nicht zwingend vom PICkit kommen, du willst deine Schaltung sicher nicht dauernd am PICkit hängen habe. > - VUSB3V3 ist offensichtlich die Versorgungsspannung per USB die vorher > über einen Festspannungsregler auf 3,3V runtergeregelt wird. Vusb ist die Versorgung der USB Hardware im PIC, bei den LF Typen soll sie mit Vdd verbunden werden. > - Wie sind die USB Leitungen zubinden? Vermutlich D- auf D- und D+ auf > D+, aber was ist mit dem ID Pin der USB Buchsen? Einfach freilassen, der ist nur bei Geräten mit USB-OTG wichtig. > - Muss ich einen Pegelwandler haben um den Controller per PICkit3 zu > programmieren? Nein, das PICkit3 hat das schon eingebaut, du muss nur bi Flashen die richtige Spannung einstellen > - Wie kriege ich die SPI Verbindung vom PIC zum W5500 und RFM12B hin? Zum SPI Teil
1 | PIC W5500 RFM12B |
2 | SCK SCLK SCK |
3 | SDI MISO SDO |
4 | SDO MOSI SDI |
Slave Select irgendein IO. > - Gibt es sonst irgendwelche besonderheiten zu beachten? Vorwiderstände > oder ähnliches in der USB Verbindung? Pullup am Reset ein Entkoppelkondensator zwischen Vdd und Vss. > Sorry, dass ich so viele Fragen stelle aber ich habe bisher keine > Schaltpläne online gefunden. Hast du es mal im Datenblatt versucht?
:
Bearbeitet durch User
Max H. schrieb: >> Sorry, dass ich so viele Fragen stelle aber ich habe bisher keine >> Schaltpläne online gefunden. > Hast du es mal im Datenblatt versucht? Ein Low Pin Count USB Development Kit (DM164127-2) würde ich auch noch empfehlen. Da hast du ein Board zum spielen mit Schaltplan. Ich habe mir gerade eines (DM164127-1) mit einem 3,3V Regler umgebaut. Bei dem -2 würde ich den Regler da hin basteln, wo der Stecker J19 montiert werden kann und die Verbindung trennen. Dann noch J12 brücken, fertig ...
:
Bearbeitet durch User
Vielen Dank für die schnelle ausführliche Antwort. Meine Platine wollte ich über eine Micro USB Buchse versorgen. Also würde ich die ankommende Spannung per 3V3 Regler absenken und auf VDD und VUSB3V3 verbinden? Die USB Verbindung soll auch zusätzlich bei bedarf in Verbindung mit einem PC dafür genutzt werden dem PIC Daten zuzuschicken wie z.B. feste IP, Subnetmask... (manuelle Netzwerkconfig halt für den W5500). Daher müsste ich dann doch trotzdem die Datenleitungen verbinden oder? Ja ins Datenblatt hatte ich geschaut. http://www.farnell.com/datasheets/1695216.pdf Aber ich habe jetzt nicht die Ergebnisse gefunden die du mir geliefert hast. Die Pin Descriptions und die Oscillator Circuits haben mir ein wenig geholfen. Denke mal, dass ich falsch durch das Datenblatt gesucht habe. Welche Begriffe in der Navigation hätte ich wählen müssen um die Infos zu finden (um in Zukunft selber ordentlich suchen zu können)? Hatte nach examples, schematics etc. Gesucht. Bei google habe ich versucht Schaltpläne zu finden bzw. die Schaltpläne die in bei den offiziellen DEV Boards von Microchip dabei sind, bin jedoch nicht fündig geworden
Martin H. schrieb: > Bei google habe ich versucht > Schaltpläne zu finden bzw. die Schaltpläne die in bei den offiziellen > DEV Boards von Microchip dabei sind, bin jedoch nicht fündig geworden Auf der MCHP Seite für den PIC auf "Develpment Tools" klicken ;-)
Volker S. schrieb: > Auf der MCHP Seite für den PIC auf "Develpment Tools" klicken ;-) Das hatte ich wie gesagt versucht. Bin dabei auch auf ein DEV Board gestoßen in das aber der PIC16F145X bei Breakoutboard eingesetzt wird. Daher sind im Schaltplan nur die 2 Pinheader eingetragen die diesen damit verbinden. http://ww1.microchip.com/downloads/en/DeviceDoc/40001356C.pdf Ich hab jetzt mal den ersten Entwurf in Eagle gefertigt und wollte euch nach Korrekturen fragen. Ich bin bei der ICSP Schnittstelle auf diverse Schaltpläne mit Dioden etc. gestoßen und war daher unschlüssig, was die richtige Wahl wäre. Bild1: PIC Controller + ICSP Stiftleiste Bild2: USB Connector + Spannungsregler + 100nf Entkopplungskondensator der neben dem PIC platziert wird. Bild3: RFM12 Modul Bild4: Ausschnitt der SPI Schnittstelle des W5500 Vielen Dank für eure Bemühungen schonmal im Voraus
Martin H. schrieb: > Ich bin bei der ICSP Schnittstelle auf diverse > Schaltpläne mit Dioden etc. gestoßen und war daher unschlüssig, was die > richtige Wahl wäre. Ich habe es immer ohne Dioden gemacht, hat prima funktioniert. Dass das nich mal Microchip auf ihrem Devboard mach sollte zu denken geben. > Bild1: PIC Controller + ICSP Stiftleiste Der Entkopplungskondensator fehlt > Bild2: USB Connector + Spannungsregler + 100nf Entkopplungskondensator > der neben dem PIC platziert wird. Der Regler 78L15 ist ein 15V Regler, damit wird der PIC keine Freude haben. Der Spannungsregler braucht wahrscheinlich auch einen Kondensator am Ausgang.
Martin H. schrieb: > lker S. schrieb: >> Auf der MCHP Seite für den PIC auf "Develpment Tools" klicken ;-) > > Das hatte ich wie gesagt versucht. Bin dabei auch auf ein DEV Board > gestoßen in das aber der PIC16F145X bei Breakoutboard eingesetzt wird. Tatsächlich, das ist nicht gerade gut auf die Version 2 abgeändert worden. Ich habe selber nur 4 St. Version 1, von denen ich die (da) zusätzlich vorhandenen Leerplatinen für die PIC16 abgeändert habe. Das ICD Header Board ist nochmal was ganz anderes. Die 18F1xk50 haben kein ICD Modul integriert. Deshalb braucht man einen extra 18F1xk50-ICD der auf einer kleinen Platine ist, welche in den IC-Sockel auf der Platine gesteckt werden kann. Das hat den Vorteil, dass die Pins für die Programmier- und Debugschnittstelle auf dem Header liegen und alle Pins des eigentlichen PICs frei verfügbar bleiben. Beim 16F145x ist ICD integriert. ABER wenn du die Pins auch noch anderweitig benutzt, dann kannst du die anderweitigen Funktionen natürlich nicht debuggen. In deinem Fall würde ich deshalb die ICSP Signale an D+ und D- verwenden, da du darüber mehr oder weniger eh nur programmieren kannst und nicht debuggen. Das vermeidet schon mal Konflikte die durch die SPI Anschlüsse deiner anderen Module entstehen könnten. An deinen ICs scheinen die Entkoppelkondensatoren zu fehlen. Alle VDDs 100nF ? Der vorhandene 100nF gehört eigentlich zum Regler ! <edit> Max hat es schon angesprochen. Hör auf zu pfuschen. Wenn in der Bibliothek kein 3,3V Regler drin ist, dann mach dir einen ! </edit>
:
Bearbeitet durch User
Ein Filter in der Versorgung für das Funkmodul fehlt. Pulls fehlen auch - du must dir schon überlegen, was das Funkmodul macht, wenn der µC im Reset ist. Mindestens CS würde ich schon ziehen. Du musst das Ding daher auch resetieren können - d.h. entweder Versorgung schalten, oder Reset auf den µC führen. Desweiteren brauchst du eine Möglichkeit zu erkennen, ob das Funkmodul hochgefahren ist. Plapperst du das davor an, ist es für immer beleidigt und reagiert überhaupt nicht mehr. Aus Sicht der EMV ist deine Platine sehr problematisch. Du muss vermutlich mindestens Abstrahlung, ESD und Burst bestehen. Aktuell ist das vermutlich unmöglich. In die Datenleitungen von USB sollte ein USB-Gleichtaktbead hinein. ESD-Dioden davor wirst du auch brauchen. Und ein PI-Filter mit Ferritbead in VBUS (600E@100MHz + 2x1nF COG). Nimm beispielsweise das Zeugs hier für USB: http://katalog.we-online.de/de/pbs/WE-CNSW_HF?sid=121685c3f2 http://www.semtech.com/images/datasheet/sr05.pdf Ähnliches gilt für ALLE Leitungen, die deine Platine verlassen. Beim 78L15F: Dir fehlt Kapazität. 100n kommen mir zu wenig vor. Nimm da lieber was halbwegs moderneres, wenigstens einen MCP1801, der ist auch nicht teurer, aber wenigstens kein Faustkeil aus der Frühzeit der Elektronik. Für den reicht ein 1µF Kerko. Dabei musst du beachten, dass deine Platine mit <10µF in Summe auskommt, um USB-konform zu sein. Übrigens schafft dein aktueller Spannungsregler die Anforderungen für USB-Suspend von Haus aus schon mal gar nicht. Natürlich brauchst du auch die vorgeschriebenen Entkoppelkapazitäten, aber das haben andere schon erwähnt. Mehr fällt mir grade nicht ein. Es gibt aber vermutlich noch mehr Probleme.
Danke schonmal für die zahlreichen ausführlichen Antworten. Ich ziehe hier mal einen Strich für Leute die sich kurz für meine Situation interessieren um das etwas abzugrenzen vom technischen ------------------------------------------------------------------------ Um euch meine aktuelle Situation zu erklären hier ein kleiner Auszug über mich Ich bin 26 Jahre alt, studiere Elektrotechnik in Köln an der RFH und habe zuvor die Ausbildung als Elektroniker für Geräte und Systeme gemacht und danach 3 Jahre im Unternehmen im selben Beruf speziell in der Digitalfunktechnik (TETRA Infrastruktur) gearbeitet. Aktuell bin ich mit meinem Team (3 weitere Leute, IT, Vertrieb, Maschienenbau/Management) im Rahmen des EXIST Gründerstipendiums gefördert. Ich habe schon öfters Platinen für mich entworfen, jedoch immer Hobbymäßig, nie für Endkunden bestimmt und nie nach Richtlinien und Normen entworfen. Daher bin ich für jeden Tipp dankbar ------------------------------------------------------------------------ Ich werde jetzt mal versuchen alle eure Tipps umzusetzen die ich verstanden habe, leider muss ich zugeben, dass bei mir nicht alles in der Rübe angekommen ist
Kleiner Hinweis noch zum PullUp am MCLR. Den brauchst du nicht, weil der 16F145x einen internen hat, bzw. die Funktion auch über die Config-Bits komplett deaktiviert werden kann.
WehOhWeh schrieb: > Beim 78L15F: > Dir fehlt Kapazität. 100n kommen mir zu wenig vor. > Nimm da lieber was halbwegs moderneres, wenigstens einen MCP1801, der > ist auch nicht teurer, aber wenigstens kein Faustkeil aus der Frühzeit > der Elektronik. Für den reicht ein 1µF Kerko. Als Spannungsregler habe ich mich für den LM2937IMP-3.3 entschieden. Da laut Datenblatt (wenn ich mich nicht wieder mal vertan habe) der W5500 einen durchschnittlichen Versorgungsstrom von 132mA zieht, das RFM12 im TX 21mA und im RX Modus 10mA und der PIC Controller natürlich auch nochmal ein paar mA drauflegt. Mein RFM wird zwar nur als Empfänger betrieben und der W5500 wird höchstens alle 10 Minuten ein kleines Paket per TCP/IP an nen Server schicken, dennoch habe ich lieber den Spannungsregler genommen um Luft nach oben zu haben. Was für Kapazitäten würde ihr hier direkt an den Ausgang des Reglers schalten? WehOhWeh schrieb: > Ein Filter in der Versorgung für das Funkmodul fehlt. Was meinst du hiermit genau? Eine Spule in Reihe oder gegen Masse kurz vor dem VDD Pin? WehOhWeh schrieb: > Pulls fehlen auch - du must dir schon überlegen, was das Funkmodul > macht, wenn der µC im Reset ist. Mindestens CS würde ich schon ziehen. > Du musst das Ding daher auch resetieren können - d.h. entweder > Versorgung schalten, oder Reset auf den µC führen. Gute Anmerkung. Ich werde den PIC Controller in seiner Init Routine den Reset des RFM12 auslösen lassen. Detektieren wann das Modul ansprechbar ist, ist natürlich eine gute Frage die tiefer in die Materie der Programmierung geht. Aktuell denke ich einfach über einen Puffer am Ende des INIT nach bevor er in die eigentliche Programmschleife geht, ist aber auch eher nachher das Problem beim Programmieren und nicht beim Layout Design. WehOhWeh schrieb: > In die Datenleitungen von USB sollte ein USB-Gleichtaktbead hinein. > ESD-Dioden davor wirst du auch brauchen. Und ein PI-Filter mit > Ferritbead in VBUS (600E@100MHz + 2x1nF COG). > Nimm beispielsweise das Zeugs hier für USB: > http://katalog.we-online.de/de/pbs/WE-CNSW_HF?sid=121685c3f2 > http://www.semtech.com/images/datasheet/sr05.pdf Wenn ich das richtig verstanden habe wird das TVS Dioden Array wie im Datasheet so angeschlossen, dass Pin 1 an Masse, Pin 4 and VUSB (also ~5V) und die beiden anderen Leitungen X beliebig an die D+ und D- gelegt werden. Was haltet ihr von diesem Guide? http://www.ftdichip.com/Support/Documents/AppNotes/AN_146_USB_Hardware_Design_Guidelines_for_FTDI_ICs.pdf Unter dem PI Filter verstehe ich jetzt, dass der Ferritbead in der USB Spannung in Reihe geschaltet wird und die beiden Kondensatoren davor und dahinter gegen Masse gelegt werden. In dem Guide wird explizit davon abgeraten Beads in die Datenleitungen einzubringen, wie ist eure Meinung dazu? Die USB ESD Dioden werden denke ich jeweils von VUSB, D+ und D- gegen Masse gelegt oder? WehOhWeh schrieb: > Ähnliches gilt für ALLE Leitungen, die deine Platine verlassen. Die einzigen Anschlüsse der Platine sind die Micro USB Buchse und eine RJ45 Buchse. Den Schaltplan zur RJ45 habe ich als Bild eingefügt
Martin H. schrieb: > Als Spannungsregler habe ich mich für den LM2937IMP-3.3 entschieden. WehOhWeh schrieb: > Übrigens schafft dein aktueller Spannungsregler > die Anforderungen für USB-Suspend von Haus aus schon mal gar nicht. Dein Board sollte/darf beim Anstecken an den USB und der darauf folgenden Enumeration oder eben einem Suspend nicht mehr als 50mA ziehen (wenn ich mich richtig erinnere) Ich nehme mal an WehOhWeh wollte da auf eine Abschaltmöglichkeit der anderen Module hinaus ...
:
Bearbeitet durch User
Volker S. schrieb: > Dein Board sollte/darf beim Anstecken an den USB und der darauf > folgenden Enumeration oder eben einem Suspend nicht mehr als 50mA ziehen > (wenn ich mich richtig erinnere) > Ich nehme mal an WehOhWeh wollte da auf eine Abschaltmöglichkeit der > anderen Module hinaus ... Also müsste ich den PIC so programmieren, dass dieser nach der Enumeration die beiden weiteren Module erst zuschaltet? Da die USB Verbindung über den PIC Selber läuft, gehe ich mal davon aus, dass dieser auch detektieren kann, wann der Vorgang abgeschlossen ist. Wie ist das, wenn der Controller einfach nur an ein USB Netzteil angeschlossen wird und nicht für irgendeine Konfiguration mit dem PC Verbunden ist? Wartet er dann vergeblichst auf die Enumeration? Oder nimmt man hier einfach nur einen Timer, der dem Vorgang eine gewisse Zeit einräumt und danach "einfach so" auf Vollbetrieb umschaltet?
Martin H. schrieb: > Wie ist das, wenn der Controller einfach nur an ein USB Netzteil > angeschlossen wird und nicht für irgendeine Konfiguration mit dem PC > Verbunden ist? Wartet er dann vergeblichst auf die Enumeration? Oder > nimmt man hier einfach nur einen Timer, der dem Vorgang eine gewisse > Zeit einräumt und danach "einfach so" auf Vollbetrieb umschaltet? Der PIC macht genau das, wofür du ihn programmierst ...
ich sehe gerade dass der Strom anscheinend noch viel geringer sein muss im Suspend Mode (0,5mA ?). Also meinte WehOhWeh wohl eher den Ruhestrom des 78.. Bevor das Ding konfiguriert ist, könnten es auch 100mA anstelle der 50mA von oben sein. Am besten du recherchierst das mal alles ;-) <edit> Für den ersten Überblick, reicht vielleicht das hier: -> http://www.beyondlogic.org/usbnutshell/usb2.shtml#PowerVbus </edit>
:
Bearbeitet durch User
Ich hab mir grade nochma den Text von WehOhWeh durchgelesen, verstehe ich das richtig, dass die TVS Diode den ESD Schutz übernimmt, also die separaten ESD Dioden nicht benötigt werden?
Martin H. schrieb: > Ich hab mir grade nochma den Text von WehOhWeh durchgelesen, verstehe > ich das richtig, dass die TVS Diode den ESD Schutz übernimmt, also die > separaten ESD Dioden nicht benötigt werden? Ich finde leider die EDIT Funktion nicht, daher schreibe ich jetzt hier drunter. Wenn ich die interne Verschaltung des SR05 richtig verstehe, gibt es eine Zehnerdiode als eigentliche ESD Diode zwischen VCC (pin4) und GND (pin1) und die beiden Datenleitungen werden per Brückengleichrichter ebenfalls auf die eine ESD Diode gelegt. Damit hätte sich meine Frage von zuvor auch schon erledigt, außer ich habe was missverstanden
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.