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

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

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

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