Download - SPI - Serial Peripheral Interface
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