Présentation du projet
Le but de ce projet est de réaliser un programmateur pour PIC24 et plus précisément pour le circuit pic24fj64gb002 en appliquant le document de Microchip PIC24FJ64GA1/GB0 Families Flash Programming Specification.
Cela peut être vu comme un exercice de style assez ambitieux et inutile au regard de la disponibilité de la famille de programmateurs PICkit, mais cette réalisation a été pour les auteurs ô combien instructive et enrichissante.
Figure 1 – Schéma de principe du programmateur
Comme vous pouvez le voir ci-dessus sur le schéma de principe, ce programmateur pour PIC24 est basé sur la conversion de commandes échangées avec le protocole UART en commandes ICSP™ via un PIC16 du type pic16f628a dont le programme au format INHEX est disponible dans l’espace de téléchargement.
Ces commandes UART peuvent être envoyées depuis un ordinateur PC ou un simple terminal série dans le cas d’un programme à flasher relativement court comme le 1er Hello World !. La vitesse de communication sur la liaison série peut être de 1200, 2400, 4800, 9600 et 19200 bauds et pour chacune d’entre elles en full-duplex.
Le mode de programmation retenu est le premier mode; à savoir : In-Circuit Serial Programming™ (ICSP™). Celui-ci est moins rapide que le second mode Enhanced In-Circuit Serial Programming (Enhanced ICSP) qui nécessite impérativement la présence dans le PIC24 d’un programme appelé Programming Executive et qui nous confronterait au paradoxe de l’œuf et la poule.
La liste des opérations du protocole ICSP™ implémentées dans le PIC16 et pilotées par les commandes UART pour programmer et lire le PIC24 est présentée dans le tableau suivant :
Tableau 1 – Liste des opérations ICSP™
1 | Entrée dans le mode In-Circuit Serial Programming™ (ICSP™) |
2 | Lecture des registres Application ID Words (type et version du circuit cible) |
3 | Effacement complet du circuit cible (mémoire programme et registres de configuration) |
4 | Effacement d’une page de 512 instructions de la mémoire programme à partir d’une adresse donnée |
5 | Lecture et écriture des registres de configuration (Configuration Words) |
6 | Écriture de 16, 32, 48 ou 64 instructions dans la mémoire programme à partir d’une adresse donnée |
7 | Lecture de 16 instructions consécutives de la mémoire programme à partir d’une adresse donnée |
8 | Sortie du mode ICSP |
Les différents points abordés au sein des articles sont les suivants :
- 1 – Schémas électroniques simplifié et détaillé des parties PIC16 et PIC24
- 2 – Description des signaux et des opérations du protocole ICSP
- 3 – Description des commandes UART et leur implication avec les opérations ICSP
- 4 – Application à la programmation du 1er Hello World !
- 5 – Exécutions d’une suite d’instructions PIC24 sans flasher le circuit
- 6 – Programmation d’un Bootloader (cf. Bootloader for PIC24F/24H Devices)
- 7 – Évolutions possibles de la partie PIC16 et des outils sur le PC