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

Preview:

Citation preview

SPI - Serial Peripheral Interface

Pour aller lire le CAN et écrire dans le CNA

2

Schéma bloc

3

4

5

6

7

8

Registre des modes du SPI

9

10

11

12

13

14

15

16

17

18

19

20

21

Exemple initialisation du SPI

22

Configuration du SPI 1) Associer les broches au SPI:

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

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);

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 »

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);

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

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){ … }

28

MAX5322Convertisseur numérique analogique

29

Montage de laboratoire

30

MAX5322 – Schéma bloc

31

CNA MAX5322 – Conversion R-2R

32

33

34

35

Tensions en sortie

36

Configuration du CNA

37

Configuration broches MAX5322

SetupDAC()Décla

ratio

n

variables

Boar

d.h

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

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

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

41

MAX1270Convertisseur analogique numérique

42

Montage de laboratoire

43

MAX1270 – Schéma de la puce

44

MAX1270 – Schéma bloc interne

45

CAN MAX1270

46

47

48

Étendues et polarités

49

Transaction avec le CAN

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.

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

52

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

Associer les broches du SPI #1 pour le CAN

Recommended