SPI - Serial Peripheral Interface

Preview:

DESCRIPTION

SPI - Serial Peripheral Interface. Pour aller lire le CAN et écrire dans le CNA. Schéma bloc. Chronogrammes. Mode 0. Mode 1. Chronogrammes. Mode 2. Mode 3. Chronogramme d’une transaction. Chronogramme d’une transaction. Registre des modes du SPI. Exemple initialisation du SPI. - PowerPoint PPT Presentation

Citation preview

SPI - Serial Peripheral Interface

Pour aller lire le CAN et écrire dans le CNA

2

Schéma bloc

3

4

5

6

Chronogrammes

Mode 0

Mode 1

7

Chronogrammes

Mode 2

Mode 3

8

Chronogramme d’une transaction

9

Chronogramme d’une transaction

10

11

12

Registre des modes du SPI

13

14

15

16

17

18

19

20

21

22

23

24

Exemple initialisation du SPI

25

Exemple initialisation du SPI

26

Configuration du SPI 1) Associer les broches au SPI:

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

27

Configuration du SPI 2) Configuration des registres SPI_CR et

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

28

Configuration du SPI 2) Configuration des registres SPI_CR et SPI_MR

: 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ériqueDétection de fautes« Local loopback »

« Chip select » périphérique

Délais entre « chip select »

29

Configuration du SPI 2) Configuration du registre SPI_CSR3:

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

30

Configuration du SPI 2) Configuration du registre SPI_CSR3 :

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

Polarité de l’horloge du SPI

Phase de l’horloge

Chip select actif après trans. ?

Taille du transfert (16 bits)

Vitesse communicationDélai avant SPCK

Délai entre 2 transactions

CNA

31

Configuration du SPI 2b) Configuration du registre SPI_CSR2 :

… SPI_ConfigureNPCS(AT91C_BASE_SPI1, 2, config);

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

CAN

32

MAX5322Convertisseur numérique analogique

33

Montage de laboratoire

34

MAX5322 – Schéma bloc

35

CNA MAX5322 – Conversion R-2R

36

37

38

39

Tensions en sortie

40

Configuration du CNA

41

Configuration broches MAX5322SetupDAC()

Déclaration

variables

Board

.h

42

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

43

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

44

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 - VSHIFT0 volt

45

MAX1270Convertisseur analogique numérique

46

Montage de laboratoire

47

MAX1270 – Schéma de la puce

48

MAX1270 – Schéma bloc interne

49

CAN MAX1270

50

51

52

Étendues et polarités

53

Transaction avec le CAN

54

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.

55

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

56

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

Associer les broches du SPI #1 pour le CAN

Recommended