Table des matières

TD sur le Bus SPI

Visionner tout d'abord la partie du cours sur le bus SPI (slides 109 à 118): (normalement vous devriez déjà l'avoir vue):

<html> <iframe width=“560” height=“315” src=“https://www.youtube.com/embed/bC6TI999I2g?t=76” frameborder=“0” allow=“accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture” allowfullscreen></iframe>

</html>

bvdp.inetdoc.net_files_iut_tp_pic_warning.jpeg

Vos réponses à toutes les questions devront être remises pour évaluation à l'enseignant lors de la prochaine séance de TP et participeront à votre note.

1 : Etude du composant TLV5637

Analyser la documentation du composant: http://www.ti.com/lit/ds/symlink/tlv5637.pdf

Question 1.1

A quoi sert le TLV5637 ?

Question 1.2

Quelle interface de communication permet de connecter le TLV5637 à un micro-contrôleur

Question 1.3

Donner les attributs de cette communication : simplex/duplex, connections, mode (0,1,2 ou 3), vitesse maximum, ordre des bits (MSb ou LSb first)

Question 1.4

A quoi sert l'entrée/sortie REF du composant ?

Question 1.5

Proposer un montage intégrant le TLV5637 pour la génération d'un signal avec une résolution de 2mv

Question 1.6

Proposer un montage intégrant le TLV5637 pour la génération d'un signal avec une résolution de 3.2mv

2 : Etude de la librairie Arduino SPI

La documentation de la dernière version de la librairie SPI est consultable sur: http://arduino.cc/en/Reference/SPI Lire la documentation pour les méthodes suivantes: SPI.begin() , SPI.setBitOrder(…) , SPI.setDataMode(…) , SPI.setClockDivider(…) , SPI.beginTransaction(…) , SPI.transfer(…)

Question 2.1

Expliquer en une phrase en français le rôle de chacune de ces fonctions.

Question 2.2

Proposer l'algorithme ou le code pour une fonction qui initialise l'interface SPI pour pouvoir communiquer avec le TLV5637: void initSPIforTLV5637();

Question 2.3

Proposer l'algorithme ou le code pour une fonction qui envoie la valeur value sur 16 bits au TLV5637. La fonction gère la sélection et la desélection du composant sur le bus SPI: void send16bitsTLV5637(unsigned short int value);

Question 2.4

Pour les questions suivantes, le TLV5637 sera toujours en mode fast et power-on. Les fonctions suivantes devront appeler la fonction send16bitsTLV5637.

Proposer l'algorithme ou le code pour une fonction de sélection et configuration de la référence interne du TLV5637 ( val : 0 pour 1.024v, 1 pour 2.048v ): void setIntRefTLV5637(unsigned char val);

Proposer l'algorithme ou le code pour une fonction de sélection de la référence externe du TLV5637: void setExtRefTLV5637(void);

Proposer l'algorithme ou le code pour une fonction d'écriture d'une valeur sur le canal A du TLV5637 (avec value : valeur à écrire sur 10 bits): void writeTLV5637DACA(unsigned int value);

Proposer l'algorithme ou le code pour une fonction d'écriture d'une valeur sur le canal B du TLV5637 (avec value : valeur à écrire sur 10 bits): void writeTLV5637DACB(unsigned int value);

Proposer l'algorithme ou le code pour une fonction d'écriture d'une valeur sur les canaux A et B du TLV5637 (avec a_value : valeur à écrire sur le canal A et b_value : valeur à écrire sur le canal B): void writeTLV5637DACA_B(unsigned int a_value, unsigned int b_value);

Question 2.5

Proposer l'algorithme ou le code pour un programme Arduino permettant de:

  1. Configurer l'horloge SPI à 125Khz
  2. Générer un signal carré de période 200ms et d'amplitude 1V sur la voie A du DAC TLV5637