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

SPI - Serial Peripheral Interface

Embed Size (px)

DESCRIPTION

SPI - Serial Peripheral Interface. Pour aller lire le CAN et écrire dans le CNA. Schéma bloc. Registre des modes du SPI. Exemple initialisation du SPI. Configuration du SPI. 1) Associer les broches au SPI: Exemple SPI #1: PIO_Configure (pinsSPI1 , PIO_LISTSIZE(pinsSPI1 ));. - PowerPoint PPT Presentation

Citation preview

Page 1: SPI - Serial  Peripheral  Interface

SPI - Serial Peripheral Interface

Pour aller lire le CAN et écrire dans le CNA

Page 2: SPI - Serial  Peripheral  Interface

2

Schéma bloc

Page 3: SPI - Serial  Peripheral  Interface

3

Page 4: SPI - Serial  Peripheral  Interface

4

Page 5: SPI - Serial  Peripheral  Interface

5

Page 6: SPI - Serial  Peripheral  Interface

6

Page 7: SPI - Serial  Peripheral  Interface

7

Page 8: SPI - Serial  Peripheral  Interface

8

Registre des modes du SPI

Page 9: SPI - Serial  Peripheral  Interface

9

Page 10: SPI - Serial  Peripheral  Interface

10

Page 11: SPI - Serial  Peripheral  Interface

11

Page 12: SPI - Serial  Peripheral  Interface

12

Page 13: SPI - Serial  Peripheral  Interface

13

Page 14: SPI - Serial  Peripheral  Interface

14

Page 15: SPI - Serial  Peripheral  Interface

15

Page 16: SPI - Serial  Peripheral  Interface

16

Page 17: SPI - Serial  Peripheral  Interface

17

Page 18: SPI - Serial  Peripheral  Interface

18

Page 19: SPI - Serial  Peripheral  Interface

19

Page 20: SPI - Serial  Peripheral  Interface

20

Page 21: SPI - Serial  Peripheral  Interface

21

Exemple initialisation du SPI

Page 22: SPI - Serial  Peripheral  Interface

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

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

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

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

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

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

28

MAX5322Convertisseur numérique analogique

Page 29: SPI - Serial  Peripheral  Interface

29

Montage de laboratoire

Page 30: SPI - Serial  Peripheral  Interface

30

MAX5322 – Schéma bloc

Page 31: SPI - Serial  Peripheral  Interface

31

CNA MAX5322 – Conversion R-2R

Page 32: SPI - Serial  Peripheral  Interface

32

Page 33: SPI - Serial  Peripheral  Interface

33

Page 34: SPI - Serial  Peripheral  Interface

34

Page 35: SPI - Serial  Peripheral  Interface

35

Tensions en sortie

Page 36: SPI - Serial  Peripheral  Interface

36

Configuration du CNA

Page 37: SPI - Serial  Peripheral  Interface

37

Configuration broches MAX5322

SetupDAC()Décla

ratio

n

variables

Boar

d.h

Page 38: SPI - Serial  Peripheral  Interface

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

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

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

41

MAX1270Convertisseur analogique numérique

Page 42: SPI - Serial  Peripheral  Interface

42

Montage de laboratoire

Page 43: SPI - Serial  Peripheral  Interface

43

MAX1270 – Schéma de la puce

Page 44: SPI - Serial  Peripheral  Interface

44

MAX1270 – Schéma bloc interne

Page 45: SPI - Serial  Peripheral  Interface

45

CAN MAX1270

Page 46: SPI - Serial  Peripheral  Interface

46

Page 47: SPI - Serial  Peripheral  Interface

47

Page 48: SPI - Serial  Peripheral  Interface

48

Étendues et polarités

Page 49: SPI - Serial  Peripheral  Interface

49

Transaction avec le CAN

Page 50: SPI - Serial  Peripheral  Interface

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

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

52

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

Associer les broches du SPI #1 pour le CAN