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