«

»

Programmateur PIC24 (Commandes UART)

… Retour à la Présentation

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.

Important!

Toutes les commandes sont composées des caractères hexadécimaux codés en  « ASCII imprimable  » [0-9A-F] avec aucun time-out sur l’attente de chaque caractère. De plus, le caractère SPACE (0x20) est accepté et ignoré ainsi que les 2 caractères terminaux Carriage Return (0x0D) et Line Feed (0x0A). Ces 3 caractères servant à la mise en forme dans le cas d’une utilisation avec un simple terminal série ou avec les 2 commandes cat et  echo d’un terminal console sous Linux comme expliqué au § 1c – Caractéristiques de la liaison UART.

Notice

Les caractères SPACE indiqués dans les réponses ne sont pas réellement émis et permettent uniquement de séparer les champs afin de faciliter la lecture. Quant aux caractères SPACE indiqués dans les commandes, ceux-ci sont optionnels et participent également à la facilité de la description.

 

Les différentes commandes sont classées en 4 groupes; à savoir :

  1. Les commandes d’administration (Tableau 3a) qui n’ont aucune interaction avec le protocole ICSP™.
  2. 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.
  3. 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.
  4. 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

… Retour à la Présentation