Ich würde gerne wissen, ob es eine Möglichkeit gibt, einen PIC zum ersten Mal über eine FPGA-Karte zu programmieren (in Flash zu schreiben).
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 auslö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, was eine .hex-Datei ist, aber wie kann ich ihn auf das FPGA und dann über die FPGA-Pins auf den PIC übertragen?
Der verwendete PIC ist Microchip PIC12F1822.
Nein, Sie müssen nicht SPI, UART oder I 2 C verwenden, um den PIC zu programmieren. Die einzige Möglichkeit, ein neues Programm in einen PIC zu bekommen, der für diesen Zweck keinen speziellen Code geladen hat (ein Bootloader), besteht darin, die externe Hardware-Programmierschnittstelle zu verwenden. Elektrisch bedeutet dies den Anschluss an Vss, MCLR, PGC und PGD. Es kann sinnvoll sein, den Programmer auch an Vdd angeschlossen zu haben, ist aber bei diesem Chip nicht notwendig, solange der Vdd-Pegel bekannt ist und der Programmer entsprechend eingestellt ist.
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 bringen, wird ein spezieller 32-Bit-Schlüssel relativ zu bestimmten Flanken auf MCLR eingetaktet (obwohl siehe Hinweis unten bezüglich Hochspannungsprogrammierung).
Das Protokoll auf höherer Ebene wird komplizierter. Die meisten Dinge werden mit 6-Bit-Befehlen erledigt, denen einige von 14-Bit-Datenwörtern folgen. Sie müssen die Programmierspezifikation sorgfältig lesen. Beachten Sie, dass die Programmierspezifikation ein separates Dokument aus dem Datenblatt ist. Gehen Sie auf die Produktseite für Ihren speziellen PIC auf der Microchip-Website, dort finden Sie einen Link zu den Programmierspezifikationen im Dokumentenbereich.
Diese Arten von PICs haben zwei Möglichkeiten, in den Programmiermodus zu gelangen, Hochspannung (HVP) und Niederspannung (LVP). Bei der Hochspannungsmethode muss 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 einprogrammiert sind.
Das Niederspannungsverfahren zum Eintreten in den Programmiermodus beginnt mit dem Treiben von MCLR auf High, dann auf Low und dann mit einer speziellen 32-Bit-Schlüsselsequenz unter normaler Verwendung von PGC und PGD. Das Teil tritt bei der richtigen Tastenfolge in den Programmiermodus ein und bleibt im Programmiermodus, solange 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 so vom Werk geliefert, und dieses Konfigurationsbit kann nur so eingestellt werden, dass LVP nicht zugelassen wird, wenn die Programmierung mit der Hochspannungsmethode eingegeben wurde. Damit LVP nicht aktiviert wird, müssen daher alle folgenden Bedingungen erfüllt sein:
Da das Deaktivieren von LVP ziemlich genau eine bewusste 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 lange genug in den Programmiermodus zu versetzen, um eine Massenlöschung durchzuführen (wodurch LVP wieder aktiviert wird).
Das Programmieren eines PIC erfordert eine hohe Spannung. Ja, es ist möglich, einen PIC in den "LVP"- oder Niederspannungs-Programmiermodus zu schalten, aber dazu benötigen Sie einen Hochspannungs-Programmierer.
Wenn Ihr PIC bereits in den LVP-Modus versetzt wurde, können Sie den PIC einfach vom FPGA aus programmieren. Die Datenblätter enthalten alle die Programmierwellenformen, die zum Programmieren des Chips benötigt werden, also wäre es ein Fall, ein eigenes PIC-Programmiergerät im FPGA zu bauen.
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 gelangen. Wenn Sie diese Art von Hardware nicht bereits auf Ihrem Board haben, wäre zusätzliche Hardware erforderlich, die letztendlich vom FPGA gesteuert wird, wann sie ausgelöst wird.
Die meisten PIC-Programmierer enthalten einen kleinen Boost-Regler (Spannungsverdoppler), um die bereitgestellten 5 V auf 10 V zu bringen, wobei ein PIC an Bord verwendet wird, um die Spannungsregelung zu verwalten. 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.
pjc50
Matt Jung
Myst
Myst
Matt Jung
Myst
Dzarda
horta