Programmazione PIC tramite FPGA


9

Vorrei sapere se esiste un modo per programmare un PIC per la prima volta (scrivere in Flash) tramite una scheda FPGA.

Il PIC è già saldato all'FPGA e non riesco a rimuoverlo. Nessun bootloader esiste sul PIC. Quindi ho bisogno di programmarlo in modalità USART / SPI / I2C con un bootloader in modo che possa ricevere dati dall'FPGA.

So che normalmente devo dissaldarlo, collegarlo a un programmatore hardware come PICKit e programmarlo con un software sul computer come MPLAB, ma non posso permettermelo.

Posso generare il bootloader con MPLAB, che è un file .hex, ma come posso trasferirlo sull'FPGA e quindi sul PIC tramite i pin FPGA?

PIC utilizzato è Microchip PIC12F1822.


2
Solo controllo: puoi riprogrammare l'FPGA (ovvero hai tutti gli strumenti necessari per farlo)?
pjc50,

Questa è una specie di scheda di sviluppo?
Matt Young,

Sì, ho tutti gli strumenti necessari per riprogrammare l'FPGA (è collegato al computer tramite USB standard).
Myst,

1
No, sono stati incolpati perché non hanno fatto questo sforzo. In realtà, sono in uno stage e l'ho trovato molto poco professionale. Anche se ho ancora bisogno di risolvere il problema. Non riesco davvero a vedere un modo per riprogrammare questo PIC con altri modi rispetto a un programmatore esterno che non posso usare perché il pacchetto è già fatto.
Myst,

2
Non c'è modo di saldare alcuni cavi jumper a tracce o pin sul PIC per poterlo programmare tramite un programmatore esterno? Cercare di farlo attraverso l'FPGA sembra un progetto di tesi di laurea.
horta,

Risposte:


10

No, non è necessario, infatti non è possibile utilizzare SPI, UART o I 2 C per programmare il PIC. L' unico modo per ottenere un nuovo programma in un PIC che non ha un codice speciale caricato a tale scopo (un bootloader) è utilizzare l'interfaccia di programmazione hardware esterna. Elettricamente, questo significa collegarsi a Vss, MCLR, PGC e PGD. Può essere utile avere il programmatore collegato anche a Vdd, ma non necessario per questo chip purché il livello Vdd sia noto e il programmatore regolato di conseguenza.

L'interfaccia hardware di basso livello è abbastanza semplice. PGD ​​è la linea di dati, che viene campionata dal PIC sul fronte di discesa di PGC (la linea di clock). Per mettere il PIC in modalità di programmazione in primo luogo, un tasto speciale a 32 bit viene sincronizzato in relazione a fronti specifici su MCLR (sebbene si veda la nota sotto relativa alla programmazione ad alta tensione).

Il protocollo di livello superiore diventa più complicato. La maggior parte delle cose viene eseguita con comandi a 6 bit, alcuni dei quali sono seguiti da parole di dati a 14 bit. Devi leggere attentamente le specifiche di programmazione. Si noti che le specifiche di programmazione sono un documento separato dal foglio dati. Vai alla pagina del prodotto per il tuo PIC specifico sul sito Web di Microchip e troverai un collegamento alle specifiche di programmazione nella sezione documenti.

Aggiunto sulla programmazione ad alta tensione

Questi tipi di PIC hanno due modi per accedere alla modalità di programmazione, alta tensione (HVP) e bassa tensione (LVP). Il metodo dell'alta tensione richiede di aumentare MCLR tra 8 e 9 volt e di mantenerlo lì durante la programmazione. Questo metodo funziona sempre, indipendentemente da eventuali dati programmati nel PIC.

Il metodo a bassa tensione per accedere alla modalità di programmazione inizia guidando MCLR in alto, quindi in basso, quindi cronometrando in una sequenza di tasti speciale a 32 bit usando PGC e PGD normalmente. La parte entrerà in modalità di programmazione sulla sequenza di tasti corretta e rimarrà in modalità di programmazione finché MCLR è tenuto basso.

Il metodo a bassa tensione può essere disabilitato da uno dei bit di configurazione. Tuttavia, lo stato cancellato del bit di configurazione consente la programmazione a bassa tensione, viene spedito dalla fabbrica in questo modo e questo bit di configurazione può essere impostato per non consentire LVP se la programmazione è stata immessa con il metodo dell'alta tensione. Pertanto, affinché LVP non sia abilitato, devono essere vere tutte le seguenti condizioni:

  1. Il PIC è stato programmato l'ultima volta con un programmatore compatibile con HVP ed è stata utilizzata la modalità di immissione del programma HVP.

  2. Il file HEX programmato nel PIC imposta deliberatamente il bit LVP nella parola di configurazione 2 sullo stato non cancellato.

Poiché la disabilitazione di LVP richiede praticamente un'azione deliberata e il giusto programmatore, è probabile che sia ancora attiva. Se è stato deliberatamente disabilitato per qualche strano motivo, allora devi fornire 8-9 V su MCLR per mettere il PIC in modalità di programmazione almeno abbastanza a lungo da eseguire una cancellazione in blocco (che riattiva LVP).


3

La programmazione di un PIC richiede un'alta tensione. Sì, è possibile commutare un PIC in modalità "LVP", o programmazione in bassa tensione, ma per fare ciò è necessario un programmatore ad alta tensione.

Se il tuo PIC è già stato messo in modalità LVP, allora sì, puoi facilmente programmare il PIC dall'FPGA. I fogli dati contengono tutti le forme d'onda di programmazione necessarie per programmare il chip, quindi sarebbe un caso di costruire il proprio dispositivo programmatore PIC nell'FPGA.

Tuttavia, se il PIC non è stato messo in modalità LVP, sarà necessario generare un'alta tensione (in genere 10 V) e applicarlo al pin MCLR al momento giusto per accedere alla modalità di programmazione. Se non hai già questo tipo di hardware sulla tua scheda, allora richiederebbe hardware aggiuntivo che è in definitiva controllato dall'FPGA su quando viene attivato.

La maggior parte dei programmatori PIC include un piccolo regolatore boost (duplicatore di tensione) per portare i 5 V forniti fino a 10 V utilizzando un PIC a bordo per gestire la regolazione della tensione. Spesso usano PWM dal PIC e un ingresso ADC sul PIC come un semplice regolatore di boost.

Dovresti dare un'occhiata agli schemi PICkit2 pubblicamente disponibili.


1
No, molto probabilmente non è richiesta alta tensione. La maggior parte delle parti più recenti, comprese tutte le serie 12F1xxx / 16F1xxx, possono utilizzare una sequenza di tasti per accedere alla modalità di programmazione. Questa sequenza non richiede alta tensione. Questo può essere disabilitato nella configurazione, ma la parte proviene dalla fabbrica con il metodo chiave abilitato. A meno che qualcuno non abbia deliberatamente disabilitato l'inserimento della modalità programma sequenza tasti, dovrebbe essere comunque disponibile. Se è disabilitato, quindi sì, è necessario aumentare MCLR a 8-9 V per entrare in modalità di programmazione.
Olin Lathrop,

La modalità di programmazione chiave è la modalità LVP. Si basa su LVP = 1 nella configurazione. Sembra che il chip abbia come impostazione predefinita LVP = 1, ma è = 1 su quel chip specifico o è già stato programmato con LVP = 0? Chissà? Come ho detto - SE è in modalità LVP, allora non hai bisogno dell'HV, altrimenti lo fai.
Majenko,

Quindi, per programmare in modalità LVP, devo implementare un programmatore PIC "digitale" (VHDL) nel mio FPGA? Non riesco davvero a pensare a un modo per farlo. Potresti aiutarmi a costruirlo?
Myst,

No, non posso. Hai gli schemi per pickit2 disponibili, quindi sai quali segnali sono necessari. Hai la fonte per il firmware pickit2 disponibile, quindi sai come comunicare. Hai a disposizione le schede tecniche di programmazione, quindi sai quali istruzioni inviare e come inviarle. Il modo in cui comunichi il firmware al PIC dal tuo computer dipende interamente da te. Quanta intelligenza vuoi nel tuo FPGA e quanto alla fine del PC?
Majenko,

Ok grazie. In primo luogo, cercherò di programmare il PIC direttamente con il PICKIT 3. Per quanto riguarda il PICKIT (che la mia azienda ha acquistato allo scopo), ho paura di collegarlo direttamente ai pin del PIC poiché questi sono anche collegato all'FPGA. Sono preoccupato che un po 'di tensione possa passare attraverso l'FPGA spento e causare alcuni danni. È una preoccupazione giustificata?
Myst,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.