Gostaria de saber se existe uma maneira de programar um PIC pela primeira vez (gravação em Flash) através de uma placa FPGA.
O PIC já está soldado ao FPGA e não consigo removê-lo. Não existe nenhum carregador de inicialização no PIC. Portanto, preciso programá-lo no modo USART / SPI / I2C com um gerenciador de inicialização para que ele possa receber dados do FPGA.
Sei que normalmente tenho que dessoldá-lo, conectá-lo a um programador de hardware como o PICKit e programá-lo com um software no computador como o MPLAB, mas não posso pagar por isso.
Posso gerar o carregador de inicialização com o MPLAB, que é um arquivo .hex, mas como posso transferi-lo para o FPGA e depois para o PIC através dos pinos do FPGA?
O PIC usado é o Microchip PIC12F1822.
fonte
Respostas:
Não, você não precisa, na verdade, não pode usar SPI, UART ou I 2 C para programar o PIC. A única maneira de obter um novo programa em um PIC que não tenha um código especial carregado para esse fim (um carregador de inicialização) é usar a interface de programação de hardware externa. Eletricamente, isso significa conectar-se a Vss, MCLR, PGC e PGD. Pode ser útil ter o programador também conectado ao Vdd, mas não é necessário para esse chip, desde que o nível de Vdd seja conhecido e o programador ajustado de acordo.
A interface de hardware de baixo nível é bastante simples. PGD é a linha de dados, que é amostrada pelo PIC na borda descendente do PGC (a linha do relógio). Para colocar o PIC no modo de programação em primeiro lugar, uma chave especial de 32 bits é sincronizada em relação às bordas específicas do MCLR (embora veja a nota abaixo sobre a programação de alta tensão).
O protocolo de nível superior fica mais complicado. A maioria das coisas é feita com comandos de 6 bits, alguns dos quais são seguidos por palavras de dados de 14 bits. Você deve ler as especificações de programação cuidadosamente. Observe que a especificação de programação é um documento separado da folha de dados. Vá para a página do produto do seu PIC específico no site da Microchip e você encontrará um link para as especificações de programação na seção de documentos.
Adicionado sobre programação de alta tensão
Esses tipos de PICs têm duas maneiras de entrar no modo de programação: alta tensão (HVP) e baixa tensão (LVP). O método de alta tensão requer aumentar o MCLR para 8 e 9 volts e mantê-lo lá durante a programação. Este método sempre funciona, independentemente de quaisquer dados possíveis programados no PIC.
O método de baixa voltagem para entrar no modo de programação começa acionando o MCLR alto, depois baixo, e cronometrando em uma sequência de teclas especial de 32 bits usando PGC e PGD normalmente. A parte entrará no modo de programação na seqüência correta de teclas e permanecerá no modo de programação enquanto MCLR for mantido baixo.
O método de baixa tensão pode ser desativado por um dos bits de configuração. No entanto, o estado apagado do bit de configuração permite a programação de baixa tensão, é enviado da fábrica dessa maneira e esse bit de configuração só pode ser configurado para desabilitar o LVP se a programação tiver sido inserida com o método de alta tensão. Portanto, para o LVP não ser ativado, é necessário que tudo a seguir seja verdadeiro:
Como desabilitar o LVP requer uma ação deliberada e o programador certo, é provável que ele ainda esteja habilitado. Se ele foi deliberadamente desativado por algum motivo estranho, é necessário fornecer 8-9 V no MCLR para colocar o PIC no modo de programação pelo menos o tempo suficiente para executar uma exclusão em massa (que reativa o LVP).
fonte
A programação de um PIC requer alta voltagem. Sim, é possível alternar um PIC para o modo "LVP" ou Programação de baixa tensão, mas você precisa de um programador de alta tensão para fazer isso.
Se o seu PIC já foi colocado no modo LVP, então sim, você pode programar facilmente o PIC no FPGA. Todas as folhas de dados contêm as formas de onda de programação necessárias para programar o chip; portanto, seria o caso de criar seu próprio dispositivo programador PIC no FPGA.
No entanto, se o PIC não tiver sido colocado no modo LVP, você precisará gerar uma alta tensão (normalmente 10V) e aplicá-la ao pino do MCLR no momento certo para entrar no modo de programação. Se você ainda não possui esse tipo de hardware em sua placa, seria necessário um hardware adicional que é controlado pelo FPGA no momento em que é acionado.
A maioria dos programadores PIC inclui um pequeno regulador de impulso (dobrador de tensão) para levar os 5V até 10V fornecidos, usando um PIC integrado para gerenciar a regulação de tensão. Eles costumam usar o PWM do PIC e uma entrada ADC no PIC como um simples regulador de impulso.
Você deve dar uma olhada nos esquemas PICkit2 disponíveis ao público.
fonte