SPI - Serial Peripheral Interface Pour aller lire le CAN et écrire dans le CNA
Schéma bloc 2
3
4
5
6
7
Registre des modes du SPI 8
9
10
11
12
13
14
15
16
17
18
19
20
Exemple initialisation du SPI 21
Configuration du SPI 22 1) Associer les broches au SPI: Exemple SPI #1: PIO_Configure(pinsSPI1, PIO_LISTSIZE(pinsSPI1));
Configuration du SPI 23 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);
Configuration du SPI 24 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 »
Configuration du SPI 25 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);
Configuration du SPI 26 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 lhorloge du SPI Phase de lhorloge Chip select actif après trans. ? Taille du transfert (16 bits) Vitesse communication Délai avant SPCK Délai entre 2 transactions CNA CAN
Configuration du SPI 27 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){ … }
MAX5322 Convertisseur numérique analogique 28
Montage de laboratoire 29
MAX5322 – Schéma bloc 30
CNA MAX5322 – Conversion R-2R 31
32
33
34
Tensions en sortie 35
Configuration du CNA 36
Configuration broches MAX SetupDAC() Déclaration variables Board.h
Suite 38 Broche LDAC mise à 1 Broche CLR mise à 1 Broche UNI/BIP A mise à 0 Broche UNI/BIP B mise à 1 Broche SHDN mise à 1
Transactions du SPI avec le CNA 39 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
Transactions du SPI avec le CNA 40 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
MAX1270 Convertisseur analogique numérique 41
Montage de laboratoire 42
MAX1270 – Schéma de la puce 43
MAX1270 – Schéma bloc interne 44
CAN MAX
46
47
Étendues et polarités 48
Transaction avec le CAN 49
Transaction avec le CAN 50 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.
Transaction avec le CAN 51 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
Initialisation du CAN 52 Faite lors de linitialisation du SPI #1. Associer les broches du SPI #1 pour le CAN