Cet article décrit les échanges UART pour piloter les signaux et les opérations élémentaires du protocole In-Circuit Serial Programming™ (ICSP™) permettant de programmer un PIC24 à partir d’un ordinateur PC ou d’un terminal série.
Les différentes commandes sont classées en 4 groupes; à savoir :
- Les commandes d’administration (Tableau 3a) qui n’ont aucune interaction avec le protocole ICSP™.
- Les commandes dites dynamiques (Tableau 3b) qui sont dédiées à la sérialisation et la désérialisation de données sur la ligne PGD au rythme de l’horloge sur PGC.
- Les commandes dites ICSP™ (Tableau 3c) qui permettront de réaliser une opération globale comme l’effacement du circuit cible, la lecture de données programme ou l’écriture des 4 registres de configuration.
- Les commandes dites statiques (Tableau 3d) qui sont dédiées au pilotage individuel des 4 lignes MCLR/, PGD, SENS-PGD et PGC ; la ligne SENS-PGD ne servant qu’à fournir le sens de PGD dans un but de son éventuelle bufferisation (cf. le schéma électronique présenté à la Figure 1-2).
Tableau 3a – Liste des commandes d’administration
FF | Lecture de la configuration du programmateur | |
FE | Écriture de la configuration du programmateur | |
FD | Lecture des flags et du compteur d’erreurs | |
FC | Effacement des flags et du compteur d’erreurs et extinction de la Led rouge | |
FB | Lecture des indicateurs de statistiques du programmateur | |
FA | Réinitialisation des indicateurs de statistiques du programmateur | |
F9 | Application du masque sur une donnée du circuit cible et test avec le pattern | |
F8 | Définition du masque et du pattern de test | |
F7..F4 | F7 | Lecture de 4 octets désérialisés du circuit cible ou à sérialiser (1er buffer) |
F6 | Lecture de 3 octets désérialisés du circuit cible ou à sérialiser (1er buffer) | |
F5 | Lecture de 2 octets désérialisés du circuit cible ou à sérialiser (1er buffer) | |
F4 | Lecture d’un octet désérialisé du circuit cible ou à sérialiser (1er buffer) | |
F3..F0 | F3 | Écriture de 4 octets à sérialiser vers le circuit cible (1er buffer) |
F2 | Écriture de 3 octets à sérialiser vers le circuit cible (1er buffer) | |
F1 | Écriture de 2 octets à sérialiser vers le circuit cible (1er buffer) | |
F0 | Écriture d’un octet à sérialiser vers le circuit cible (1er buffer) | |
EF | Lecture de 48 octets de données depuis le 2ème buffer du programmateur | |
EE | Écriture de 1 à 48 octets de données dans le 2ème buffer du programmateur | |
E3..E0 | E3 | Écriture de 4 octets à sérialiser vers le circuit cible (similaire à F3) |
E2 | Écriture de 3 octets à sérialiser vers le circuit cible (similaire à F2) | |
E1 | Écriture de 2 octets à sérialiser vers le circuit cible (similaire à F1) | |
E0 | Écriture d’un octet à sérialiser vers le circuit cible (similaire à F0) | |
7F..50 | 7F | Lecture de 48 octets de données depuis le 2ème buffer du programmateur |
7E | Lecture de 47 octets de données depuis le 2ème buffer du programmateur | |
… | ||
50 | Lecture de 2 octets de données depuis le 2ème buffer du programmateur | |
51 | Lecture d’un octet de données depuis le 2ème buffer du programmateur |