52
SPI - Serial Peripheral Interface Pour aller lire le CAN et écrire dans le CNA

SPI - Serial Peripheral Interface Pour aller lire le CAN et écrire dans le CNA

Embed Size (px)

Citation preview

Page 1: SPI - Serial Peripheral Interface Pour aller lire le CAN et écrire dans le CNA

SPI - Serial Peripheral Interface

Pour aller lire le CAN et écrire dans le CNA

Page 2: SPI - Serial Peripheral Interface Pour aller lire le CAN et écrire dans le CNA

2

Schéma bloc

Page 3: SPI - Serial Peripheral Interface Pour aller lire le CAN et écrire dans le CNA

3

Page 4: SPI - Serial Peripheral Interface Pour aller lire le CAN et écrire dans le CNA

4

Page 5: SPI - Serial Peripheral Interface Pour aller lire le CAN et écrire dans le CNA

5

Page 6: SPI - Serial Peripheral Interface Pour aller lire le CAN et écrire dans le CNA

6

Page 7: SPI - Serial Peripheral Interface Pour aller lire le CAN et écrire dans le CNA

7

Page 8: SPI - Serial Peripheral Interface Pour aller lire le CAN et écrire dans le CNA

8

Registre des modes du SPI

Page 9: SPI - Serial Peripheral Interface Pour aller lire le CAN et écrire dans le CNA

9

Page 10: SPI - Serial Peripheral Interface Pour aller lire le CAN et écrire dans le CNA

10

Page 11: SPI - Serial Peripheral Interface Pour aller lire le CAN et écrire dans le CNA

11

Page 12: SPI - Serial Peripheral Interface Pour aller lire le CAN et écrire dans le CNA

12

Page 13: SPI - Serial Peripheral Interface Pour aller lire le CAN et écrire dans le CNA

13

Page 14: SPI - Serial Peripheral Interface Pour aller lire le CAN et écrire dans le CNA

14

Page 15: SPI - Serial Peripheral Interface Pour aller lire le CAN et écrire dans le CNA

15

Page 16: SPI - Serial Peripheral Interface Pour aller lire le CAN et écrire dans le CNA

16

Page 17: SPI - Serial Peripheral Interface Pour aller lire le CAN et écrire dans le CNA

17

Page 18: SPI - Serial Peripheral Interface Pour aller lire le CAN et écrire dans le CNA

18

Page 19: SPI - Serial Peripheral Interface Pour aller lire le CAN et écrire dans le CNA

19

Page 20: SPI - Serial Peripheral Interface Pour aller lire le CAN et écrire dans le CNA

20

Page 21: SPI - Serial Peripheral Interface Pour aller lire le CAN et écrire dans le CNA

21

Exemple initialisation du SPI

Page 22: SPI - Serial Peripheral Interface Pour aller lire le CAN et écrire dans le CNA

22

Configuration du SPI 1) Associer les broches au SPI:

Exemple SPI #1: PIO_Configure(pinsSPI1, PIO_LISTSIZE(pinsSPI1));

Page 23: SPI - Serial Peripheral Interface Pour aller lire le CAN et écrire dans le CNA

23

Configuration du SPI 2) Configuration du registre AAAA:

Structure: config = (AT91C_SPI_DLYBCS & (0 << 24)) | (AT91C_SPI_PCS & (0xE << 16)) | (AT91C_SPI_LLB & (0 << 7)) | (AT91C_SPI_MODFDIS & (1 << 4)) | (AT91C_SPI_PCSDEC & (0 << 2)) | (AT91C_SPI_PS & (1 << 1)) | (AT91C_SPI_MSTR & (1 << 0));

SPI_Configure(AT91C_BASE_SPI1, AT91C_ID_SPI1, config);

Page 24: SPI - Serial Peripheral Interface Pour aller lire le CAN et écrire dans le CNA

24

Configuration du SPI 2) Configuration du registre AAAA:

Structure: config = (AT91C_SPI_DLYBCS & (0 << 24)) | (AT91C_SPI_PCS & (0xE << 16)) | (AT91C_SPI_LLB & (0 << 7)) | (AT91C_SPI_MODFDIS & (1 << 4)) | (AT91C_SPI_PCSDEC & (0 << 2)) | (AT91C_SPI_PS & (1 << 1)) | (AT91C_SPI_MSTR & (1 << 0));

SPI_Configure(AT91C_BASE_SPI1, AT91C_ID_SPI1, config);

Maitre ou esclave

Sélection périphérique comm.

Décodage périphérique

Détection de fautes

« Local loopback »

« Chip select » périphérique

Délais entre « chip select »

Page 25: SPI - Serial Peripheral Interface Pour aller lire le CAN et écrire dans le CNA

25

Configuration du SPI 2) Configuration du registre AAAA:

Structure: config = (AT91C_SPI_DLYBCT & (0x01 << 24)) | (AT91C_SPI_DLYBS & (0x01 << 16)) | (AT91C_SPI_SCBR & (0x10 << 8)) | (AT91C_SPI_BITS & (AT91C_SPI_BITS_16)) | (AT91C_SPI_CSAAT & (0x0 << 3)) | (AT91C_SPI_NCPHA & (0x0 << 1)) | (AT91C_SPI_CPOL & (0x1 << 0));

SPI_ConfigureNPCS(AT91C_BASE_SPI1, 3, config); SPI_ConfigureNPCS(AT91C_BASE_SPI1, 2, config);

Page 26: SPI - Serial Peripheral Interface Pour aller lire le CAN et écrire dans le CNA

26

Configuration du SPI 2) Configuration du registre AAAA:

Structure: config = (AT91C_SPI_DLYBCT & (0x01 << 24)) | (AT91C_SPI_DLYBS & (0x01 << 16)) | (AT91C_SPI_SCBR & (0x10 << 8)) | (AT91C_SPI_BITS & (AT91C_SPI_BITS_16)) | (AT91C_SPI_CSAAT & (0x0 << 3)) | (AT91C_SPI_NCPHA & (0x0 << 1)) | (AT91C_SPI_CPOL & (0x1 << 0));

SPI_ConfigureNPCS(AT91C_BASE_SPI1, 3, config); SPI_ConfigureNPCS(AT91C_BASE_SPI1, 2, config);

Polarité de l’horloge du SPI

Phase de l’horloge

Chip select actif après trans. ?

Taille du transfert (16 bits)

Vitesse communication

Délai avant SPCK

Délai entre 2 transactions

CNA

CAN

Page 27: SPI - Serial Peripheral Interface Pour aller lire le CAN et écrire dans le CNA

27

Configuration du SPI 3) Activation du SPI:

Directement (pour le SPI #1): SPI_Enable(AT91C_BASE_SPI1);

Tout cela peut se regrouper dans une fonction que nous pouvons nommer: void initSPI(void){ … }

Page 28: SPI - Serial Peripheral Interface Pour aller lire le CAN et écrire dans le CNA

28

MAX5322Convertisseur numérique analogique

Page 29: SPI - Serial Peripheral Interface Pour aller lire le CAN et écrire dans le CNA

29

Montage de laboratoire

Page 30: SPI - Serial Peripheral Interface Pour aller lire le CAN et écrire dans le CNA

30

MAX5322 – Schéma bloc

Page 31: SPI - Serial Peripheral Interface Pour aller lire le CAN et écrire dans le CNA

31

CNA MAX5322 – Conversion R-2R

Page 32: SPI - Serial Peripheral Interface Pour aller lire le CAN et écrire dans le CNA

32

Page 33: SPI - Serial Peripheral Interface Pour aller lire le CAN et écrire dans le CNA

33

Page 34: SPI - Serial Peripheral Interface Pour aller lire le CAN et écrire dans le CNA

34

Page 35: SPI - Serial Peripheral Interface Pour aller lire le CAN et écrire dans le CNA

35

Tensions en sortie

Page 36: SPI - Serial Peripheral Interface Pour aller lire le CAN et écrire dans le CNA

36

Configuration du CNA

Page 37: SPI - Serial Peripheral Interface Pour aller lire le CAN et écrire dans le CNA

37

Configuration broches MAX5322

SetupDAC()Décla

ratio

n

variables

Boar

d.h

Page 38: SPI - Serial Peripheral Interface Pour aller lire le CAN et écrire dans le CNA

38

Suite

Broche LDAC mise à 1

Broche CLR mise à 1

Broche UNI/BIP A mise à 0

Broche UNI/BIP B mise à 1

Broche SHDN mise à 1

Page 39: SPI - Serial Peripheral Interface Pour aller lire le CAN et écrire dans le CNA

39

Transactions du SPI avec le CNA Initialisation du CNA

SPI_Write(AT91C_BASE_SPI1, 3, 0xE000); SPI_Read(AT91C_BASE_SPI1); Wait(1000);

SPI_Write(AT91C_BASE_SPI1, 3, (0x4000 | 0x07FF));

SPI_Read(AT91C_BASE_SPI1);

Activations des canaux du

CNA

Canal A – DAC_OUT

0 volt

Page 40: SPI - Serial Peripheral Interface Pour aller lire le CAN et écrire dans le CNA

40

Transactions du SPI avec le CNA Initialisation du CNA

SPI_Write(AT91C_BASE_SPI1, 3, 0xE000); SPI_Read(AT91C_BASE_SPI1); Wait(1000);

SPI_Write(AT91C_BASE_SPI1, 3, (0x4000 | 0x07FF)); SPI_Read(AT91C_BASE_SPI1);

SPI_Write(AT91C_BASE_SPI1, 3, (0x5000 | 0x0000)); SPI_Read(AT91C_BASE_SPI1);

Activations des canaux du

CNA

Canal A – DAC_OUT

0 volt

Canal B - VSHIFT

0 volt

Page 41: SPI - Serial Peripheral Interface Pour aller lire le CAN et écrire dans le CNA

41

MAX1270Convertisseur analogique numérique

Page 42: SPI - Serial Peripheral Interface Pour aller lire le CAN et écrire dans le CNA

42

Montage de laboratoire

Page 43: SPI - Serial Peripheral Interface Pour aller lire le CAN et écrire dans le CNA

43

MAX1270 – Schéma de la puce

Page 44: SPI - Serial Peripheral Interface Pour aller lire le CAN et écrire dans le CNA

44

MAX1270 – Schéma bloc interne

Page 45: SPI - Serial Peripheral Interface Pour aller lire le CAN et écrire dans le CNA

45

CAN MAX1270

Page 46: SPI - Serial Peripheral Interface Pour aller lire le CAN et écrire dans le CNA

46

Page 47: SPI - Serial Peripheral Interface Pour aller lire le CAN et écrire dans le CNA

47

Page 48: SPI - Serial Peripheral Interface Pour aller lire le CAN et écrire dans le CNA

48

Étendues et polarités

Page 49: SPI - Serial Peripheral Interface Pour aller lire le CAN et écrire dans le CNA

49

Transaction avec le CAN

Page 50: SPI - Serial Peripheral Interface Pour aller lire le CAN et écrire dans le CNA

50

Transaction avec le CAN

Pour une lecture du CAN, il faut faire deux transactions. La première envoie le numéro du canal à lire; Exemple: 0x9100

START = 1 Canal choisi: 0x001 – Canal 1 RNG = 1 et BIP = 0: Sortie monopolaire; PD1 = 0 et PD0 = 0: Opération normale, horloge

interne.

Réponse du convertisseur: les 3 premiers bits du CAN.

Page 51: SPI - Serial Peripheral Interface Pour aller lire le CAN et écrire dans le CNA

51

Transaction avec le CAN

Pour une lecture du CAN, il faut faire deux transactions. La deuxième est pour permettre de recevoir le reste; Réponse du convertisseur: les 9 derniers bits du CAN.

Canaux: Canal 0 : 0x8D00 -> Borne J6 Canal 1: 0x9100 -> Vshift Canal 2: 0xA100 -> Thermocouple Canal 3: 0xB100 -> Puce LM35

Page 52: SPI - Serial Peripheral Interface Pour aller lire le CAN et écrire dans le CNA

52

Initialisation du CAN Faite lors de l’initialisation du SPI #1.

Associer les broches du SPI #1 pour le CAN