TD 6 : Bus SPI

Sommaire[Masquer]

Le bus SPI est un bus de communication série sur 2, 3 ou 4 fils.

Dans sa configuration la plus commune, il possède un signal d'horloge nommé SCK, un signal de donnée en sortie noté SDO, un signal pour les données entrantes noté SDI et un fil de sélection permettant de rendre actif sur le bus le composant auquel il est relié.

Ce TD s'articule autour du capteur de température numérique TC77 de Microchip connecté au bus SPI du PIC18F4550.

1. Etude de la documentation du TC77

1.1. Rechercher la datasheet du TC77-5.0 sur internet.

1.2. Caractéristiques générales

  1. Quelle est la précision de mesure de ce capteur dans le meilleur des cas ?
  2. Sur combien de bits et avec quelle résolution obtient le résultat ? 
  3. Quelle est la consommation du circuit en fonctionnement ? A combien et comment peut-on l'abaisser ?
  4. Quelle est la fréquence de communication maximale utilisable sur le bus ?

1.3. Résultat de mesure en détail

Le résultat s'obtient par la consultation d'une série de 2 octets, soit un total de 16 bits, dont seuls un certain nombre sont significatifs. La table 3-1 de la documentation donne plusieurs combinaisons de ce résultat pour différentes valeurs spécifiques de la température. Son étude permet de constater que le résultat est fourni en virgule fixe.

  1. Quelle est la valeur pour 0°C ?
  2. Idem pour la plus petite valeur mesurable en positif comme en négatif ?
  3. Combien de bits sont aloués à la partie entière du résultat, signe compris ? Combien de bits sont utilisés pour la partie fractionnaire ?
  4. Quelle sera la valeur reçue pour une température de 1°C ?
  5. Si on souhaite se limiter à une résolution de mesure à 0.5°C près, combien de bits faudra-t-il lire sur le bus ?

1.4. Lecture de la température

Il s'agit d'analyser la figure 3-2 de la datasheet.

  1. Quelle valeur faut-il mettre sur la broche /CS pour initier une lecture de la température ?
  2. Sur quel front de l'horloge faut-il prélever les bits de données fournis par le capteur ?
  3. Proposer un algorithme pour lire les 13 bits de la température dans une variable de type int16_t (entier signé codé sur 16 bits).

1.5. Mise en veille et réveil du capteur

  1. Expliquer comment réaliser la mise en veille du capteur ?
  2. Proposer un algorithme permettant cette mise en veille.
  3. Idem pour le réveil du microcontrôleur.

2. Etude du module SPI du PIC18F4550

2.1. Généralités sur le module MSSP

Le module MSSP est présenté à la section 19 de la datasheet du PIC18F4550.

  1. Quels sont les différents bus gérés par le module MSSP ?
  2. A quoi correspond le mode esclave du bus SPI ?
  3. Quel mode, maître ou esclave, faut-il utiliser pour communiquer avec le capteur de température TC77 ?
  4. Le TC77 possède une broche commune pour SDI et SDO notée SIO. Proposer une idée pour rendre compatible avec les broches SDI/SDO du uC.

2.2. Registres associés au mode SPI

  1. Détails du registre SSPSTAT :
    1. Expliquer le rôle du bit SMP et donner sa valeur pour communiquer avec le TC77.
    2. Idem pour le bit CKE.
    3. Même chose pour le bit BF (explication en section 19.3.2).
      Note : il faut bien avoir à l'esprit l'allure des signaux de communication explicités sur la figure 3-2 de la datasheet du TC77.
  2. Préciser le rôle de chacun des bits du registre SSPCON1 et leur donner une valeur pour communiquer avec le TC77.