Ich würde gerne wissen, ob es eine Möglichkeit gibt, einen PIC zum ersten Mal (in Flash schreiben) über eine FPGA-Karte zu programmieren.
Der PIC ist bereits mit dem FPGA verlötet und ich kann ihn nicht entfernen. Auf dem PIC ist kein Bootloader vorhanden. Daher muss ich es im USART / SPI / I2C-Modus mit einem Bootloader programmieren, damit es Daten vom FPGA empfangen kann.
Ich weiß, dass ich es normalerweise entlöten, an einen Hardware-Programmierer wie PICKit anschließen und mit einer Software auf dem Computer wie MPLAB programmieren muss, aber das kann ich mir nicht leisten.
Ich kann den Bootloader mit MPLAB generieren, einer .hex-Datei, aber wie kann ich ihn über die FPGA-Pins auf das FPGA und dann auf den PIC übertragen?
Der verwendete PIC ist der Mikrochip PIC12F1822.
quelle
Antworten:
Nein, Sie müssen SPI, UART oder I 2 C nicht verwenden, um den PIC zu programmieren. Die einzige Möglichkeit, ein neues Programm in einen PIC zu integrieren, für den kein spezieller Code geladen ist (ein Bootloader), ist die Verwendung der externen Hardware-Programmierschnittstelle. Elektrisch bedeutet dies, dass eine Verbindung zu Vss, MCLR, PGC und PGD hergestellt wird. Es kann nützlich sein, den Programmierer auch an Vdd anzuschließen, dies ist jedoch für diesen Chip nicht erforderlich, solange der Vdd-Pegel bekannt ist und der Programmierer entsprechend angepasst wird.
Die Low-Level-Hardware-Schnittstelle ist recht einfach. PGD ist die Datenleitung, die vom PIC an der fallenden Flanke von PGC (der Taktleitung) abgetastet wird. Um den PIC überhaupt in den Programmiermodus zu versetzen, wird ein spezieller 32-Bit-Schlüssel relativ zu bestimmten Flanken des MCLR getaktet (siehe Hinweis unten zur Hochspannungsprogrammierung).
Das übergeordnete Protokoll wird komplizierter. Die meisten Dinge werden mit 6-Bit-Befehlen erledigt, von denen einige von 14-Bit-Datenwörtern gefolgt werden. Sie müssen die Programmierspezifikation sorgfältig lesen. Beachten Sie, dass die Programmierspezifikation ein vom Datenblatt getrenntes Dokument ist. Gehen Sie auf der Microchip-Website zur Produktseite für Ihren speziellen PIC. Im Abschnitt Dokumente finden Sie einen Link zur Programmierspezifikation.
Hinzugefügt über Hochspannungsprogrammierung
Diese Arten von PICs haben zwei Möglichkeiten, in den Programmiermodus zu wechseln: Hochspannung (HVP) und Niederspannung (LVP). Bei der Hochspannungsmethode muss die MCLR auf 8 bis 9 Volt angehoben und während der Programmierung dort gehalten werden. Diese Methode funktioniert immer, unabhängig von möglichen Daten, die in den PIC programmiert sind.
Das Niederspannungsverfahren zum Aufrufen des Programmiermodus beginnt damit, dass MCLR hoch, dann niedrig und dann in einer speziellen 32-Bit-Tastenfolge unter Verwendung von PGC und PGD normal getaktet wird. Das Teil wechselt nach der richtigen Tastenfolge in den Programmiermodus und bleibt im Programmiermodus, solange die MCLR niedrig gehalten wird.
Die Niederspannungsmethode kann durch eines der Konfigurationsbits deaktiviert werden. Der gelöschte Zustand des Konfigurationsbits ermöglicht jedoch eine Niederspannungsprogrammierung. Es wird ab Werk auf diese Weise geliefert, und dieses Konfigurationsbit kann nur so eingestellt werden, dass LVP nicht zulässig ist, wenn die Programmierung mit der Hochspannungsmethode eingegeben wurde. Damit LVP nicht aktiviert wird, müssen alle folgenden Bedingungen erfüllt sein:
Da das Deaktivieren von LVP eine absichtliche Aktion und den richtigen Programmierer erfordert, ist es wahrscheinlich immer noch aktiviert. Wenn es aus irgendeinem seltsamen Grund absichtlich deaktiviert wurde, müssen Sie 8-9 V an MCLR liefern, um den PIC mindestens so lange in den Programmiermodus zu versetzen, dass eine Massenlöschung durchgeführt wird (wodurch LVP wieder aktiviert wird).
quelle
Das Programmieren eines PIC erfordert eine hohe Spannung. Ja, es ist möglich, einen PIC in den "LVP" - oder Niederspannungsprogrammiermodus zu schalten, aber Sie benötigen dazu einen Hochspannungsprogrammierer.
Wenn Ihr PIC bereits in den LVP-Modus versetzt wurde, können Sie den PIC problemlos über das FPGA programmieren. Die Datenblätter enthalten alle die Programmierwellenformen, die zum Programmieren des Chips erforderlich sind. Es wäre also erforderlich, ein eigenes PIC-Programmiergerät im FPGA zu erstellen.
Wenn der PIC jedoch nicht in den LVP-Modus versetzt wurde, müssen Sie eine Hochspannung (normalerweise 10 V) erzeugen und diese zum richtigen Zeitpunkt an den MCLR-Pin anlegen, um in den Programmiermodus zu wechseln. Wenn Sie diese Art von Hardware noch nicht auf Ihrem Board haben, ist zusätzliche Hardware erforderlich, die letztendlich vom FPGA gesteuert wird, wann sie ausgelöst wird.
Die meisten PIC-Programmierer verfügen über einen kleinen Boost-Regler (Spannungsverdoppler), der die bereitgestellten 5 V bis 10 V mit einem integrierten PIC zur Verwaltung der Spannungsregelung aufnimmt. Sie verwenden häufig PWM vom PIC und einen ADC-Eingang am PIC als einfachen Boost-Regler.
Sie sollten sich die öffentlich verfügbaren PICkit2-Schaltpläne ansehen.
quelle