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?
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 ...
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>
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=121685c3f2http://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 ...
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>
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