Isis & SPI
On dispose sous Isis d'un debugger SPI, mais comment l'utilise-t-on ? On se propose de l'utiliser comme maître afin de gérer une horloge temps réel (RTC : Real Time Clock).
Fondamental :
Pour la suite de l'activité Garfield vous indique le moment où c'est à vous de réfléchir. Un compte rendu est alors attendu (réponses aux questions, captures d'écran ISIS, debugger, etc).
Simulation :
Les activités de simulation figurent, quant à elles, dans un encart spécial identique à celui entourant ce texte.
Présentation du debugger
Le debugger SPI sous Isis permet de générer n'importe quelle séquence SPI en mode maître.
Dans les propriétés du debugger on trouve notamment :
SPI Mode : on peut utiliser le debugger pour envoyer des trames SPI en mode maître, espionner une trame SPI (moniteur) ou encore simuler un équipement esclave ;
Master clock frequency in Hz : fréquence de l'horloge en mode maître seulement ;
SCK Idle state is : niveau de tension de l'horloge au repos ;
Sampling edge : permet de préciser le front sur lequel les données sont stables et donc lues par le maître ou l'esclave (attention le niveau de Idle dépend de la valeur de SCK Idle state is) ;
Bit order : selon que les données sont envoyées MSB first ou bien LSB first.
Dans la pratique on ne modifie que les propriétés :
SCK Idle state is
et Sampling edge.
Méthode : Fonctionnement du debbugger
Le debugger SPI fonctionne comme le debugger I2C pour saisir et envoyer les séquences SPI (voir debugger I2C[1]).
Les séquences à envoyer sont quant à elles beaucoup plus simples car le SPI consiste seulement à envoyer ou recevoir des octets (commandes, état ou données), il n'y a pas de ACK, de conditions de stop, de start ou de restart.
Une séquence SPI consiste à écrire dans le debugger une suite d'octets en hexadécimal :
Mise en œuvre SPI du MAX6902 à partir de son datasheet
On souhaite valider sous Isis les trames SPI que le maître doit générer pour régler la date et l'heure dans le MAX6902, puis les trames qu'il doit générer pour lire la date et l'heure courantes.
Réglage du debugger (propriétés)
Simulation :
Enregistrez dans vos documents puis dézippez le fichier Isis suivant : SPI-MAX6902 [zip].
Lancez le fichier Isis. Appuyer sur le bouton Play pour faire apparaître la fenêtre d'analyse du debugger SPI.
Remarquez qu'une fenêtre indiquant l'heure et la date du MAX6902 apparaît :
Conseil :
Si la fenêtre d'analyse du debugger n'apparaît pas, allez dans le menu Debug puis cochez Terminal tout en bas du menu tout en étant sur Play ou Pause.
Q1. À partir du datasheet du MAX 6902 [pdf] déterminer l'état de l'horloge au repos, le front d'horloge sur lequel les données sont lues (ces deux paramètres déterminent le mode[2] du bus SPI) et l'ordre de transmission des bits (LSB ou MSB first).
Simulation :
Réglez le debugger SPI pour tenir compte des caractéristiques précédentes du MAX6902 (propriétés SCK Idle state is, Sampling edge et Bit order du debugger).
Envoyer un octet quelconque et vérifier que le maître désactive la ligne /SS à la fin de l'échange ; cela signifie que le réglage du debugger est correct, incorrect dans le cas contraire.
Réglage de l'heure et de la date
On souhaite tout d'abord initialiser la date et l'heure comme suit :
Simulation :
Q2. À partir du datasheet du MAX 6902 [pdf] déterminer la séquence en hexadécimal à envoyer pour régler les secondes.
Entrer la séquence dans le debugger puis vérifier que les secondes du MAX6902 sont bien modifiées.
Faites la même chose pour les minutes.
Entrez la séquence afin de modifier les heures (mode 24h).
Procédez de la même manière pour la date.
Lecture de l'heure et la date courantes
Méthode : Le mode burst
Précédemment nous avons réglé heures, minutes, secondes, date, mois, etc, grâce à des commandes séparées.
Il est possible de lire l'heure et la date courantes d'un seul coup (rafale = burst) en envoyant une commande particulière.
Q3. À partir du datasheet du MAX 6902 [pdf] déterminer la séquence qu'il faut envoyer pour lire en rafale l'heure et la date courante.
Conseil : lire plus particulièrement le chapitre "Reading the clock".
Simulation :
Lancer la séquence dans le debugger puis vérifier que le MAX6902 envoie bien l'heure et la date courantes.