Je voudrais savoir s'il existe un moyen de programmer un PIC pour la première fois (écrire en Flash) via une carte FPGA.
Le PIC est déjà soudé au FPGA et je ne peux pas le retirer. Aucun chargeur de démarrage n'existe sur le PIC. J'ai donc besoin de le programmer en mode USART / SPI / I2C avec un bootloader pour qu'il puisse recevoir des données du FPGA.
Je sais que normalement je dois le dessouder, le connecter à un programmeur matériel comme PICKit et le programmer avec un logiciel sur l'ordinateur comme MPLAB, mais je ne peux pas me le permettre.
Je peux générer le chargeur de démarrage avec MPLAB, qui est un fichier .hex, mais comment puis-je le transférer sur le FPGA puis sur le PIC via les broches FPGA?
Le PIC utilisé est le Microchip PIC12F1822.
Réponses:
Non, vous n'avez pas besoin, en fait vous ne pouvez pas, utiliser SPI, UART ou I 2 C pour programmer le PIC. La seule façon d'obtenir un nouveau programme dans un PIC qui n'a pas de code spécial chargé à cet effet (un chargeur de démarrage) est d'utiliser l'interface de programmation matérielle externe. Électriquement, cela signifie la connexion à Vss, MCLR, PGC et PGD. Il peut être utile que le programmateur soit également connecté à Vdd, mais pas nécessaire pour cette puce tant que le niveau Vdd est connu et que le programmeur est ajusté en conséquence.
L'interface matérielle de bas niveau est assez simple. PGD est la ligne de données, qui est échantillonnée par le PIC sur le front descendant de PGC (la ligne d'horloge). Pour mettre le PIC en mode de programmation en premier lieu, une clé spéciale de 32 bits est synchronisée par rapport à des bords spécifiques sur le MCLR (bien que voir la note ci-dessous concernant la programmation haute tension).
Le protocole de niveau supérieur devient plus compliqué. La plupart des choses se font avec des commandes 6 bits, dont certaines sont suivies de mots de données 14 bits. Vous devez lire attentivement les spécifications de programmation. Notez que la spécification de programmation est un document distinct de la fiche technique. Accédez à la page du produit pour votre PIC particulier sur le site Web de Microchip, et vous trouverez un lien vers les spécifications de programmation dans la section des documents.
Ajouté sur la programmation haute tension
Ces types de PIC ont deux façons d'entrer en mode de programmation: haute tension (HVP) et basse tension (LVP). La méthode haute tension nécessite d'élever le MCLR entre 8 et 9 volts et de le maintenir pendant la programmation. Cette méthode fonctionne toujours, indépendamment des éventuelles données programmées dans le PIC.
La méthode basse tension pour entrer en mode de programmation commence par conduire le MCLR à haut, puis à bas, puis à cadencer dans une séquence de touches spéciale de 32 bits en utilisant PGC et PGD normalement. La pièce entrera en mode de programmation sur la séquence de touches correcte et restera en mode de programmation tant que MCLR est maintenu bas.
La méthode basse tension peut être désactivée par l'un des bits de configuration. Cependant, l'état effacé du bit de configuration permet une programmation basse tension, il est expédié de l'usine de cette façon, et ce bit de configuration ne peut être défini pour interdire LVP que si la programmation a été entrée avec la méthode haute tension. Par conséquent, pour que LVP ne soit pas activé, toutes les conditions suivantes doivent être remplies:
Étant donné que la désactivation de LVP nécessite à peu près une action délibérée et le bon programmeur, il est probablement toujours activé. S'il a été délibérément désactivé pour une raison étrange, vous devez fournir 8-9 V sur MCLR pour mettre le PIC en mode de programmation au moins assez longtemps pour effectuer un effacement en masse (qui réactive LVP).
la source
La programmation d'un PIC nécessite une haute tension. Oui, il est possible de basculer un PIC en mode "LVP" ou programmation basse tension, mais vous avez besoin d'un programmateur haute tension pour ce faire.
Si votre PIC a déjà été mis en mode LVP, alors oui, vous pouvez facilement programmer le PIC depuis le FPGA. Les fiches de données contiennent toutes les formes d'onde de programmation nécessaires pour programmer la puce, il s'agirait donc de construire votre propre dispositif de programmation PIC dans le FPGA.
Cependant, si le PIC n'a pas été mis en mode LVP, vous devrez générer une haute tension (généralement 10 V) et l'appliquer à la broche MCLR au bon moment pour entrer en mode de programmation. Si vous n'avez pas déjà ce type de matériel sur votre carte, cela nécessiterait du matériel supplémentaire qui est finalement contrôlé par le FPGA quant à son déclenchement.
La plupart des programmeurs PIC incluent un petit régulateur boost (doubleur de tension) pour prendre le 5V jusqu'à 10V fourni en utilisant un PIC intégré pour gérer la régulation de la tension. Ils utilisent souvent PWM du PIC et une entrée ADC sur le PIC comme simple régulateur de boost.
Vous devriez jeter un œil aux schémas PICkit2 accessibles au public.
la source