GEI 437 Laboratoire d`interfaces et microprocesseurs

Transcription

GEI 437 Laboratoire d`interfaces et microprocesseurs
GEI 437 Laboratoire d’interfaces et microprocesseurs
Port SPI
Convertisseur analogique à numérique
Exemple d’utilisation d ’un
convertisseur analogique à
numérique interfacé sur le bus SPI
Philippe Mabilleau Ing.
lundi 15 janvier 2001
1
GEI 437 Laboratoire d’interfaces et microprocesseurs
Exemple : utilisation d'un convertisseur
analogique à numérique
u
u
u
Un convertisseur analogique à numérique est utilisé
pour lire des tensions analogiques depuis un
programme s'exécutant sur le microcontrôleur
Les valeurs de ces tensions, représentées en binaire,
seront utilisées à un rythme régulier, appelé cadence
d'échantillonnage, par le logiciel pour produire des
résultats ou des décisions
Un convertisseur analogique à numérique est un circuit
hybride, c'est-à-dire qui utilise à la fois des technologies
numériques et analogiques
Philippe Mabilleau Ing.
2
GEI 437 Laboratoire d’interfaces et microprocesseurs
Convertisseur analogique à numérique
avec interface SPI
u
u
Circuit de conversion analogique à numérique
MC145050 avec interface SPI pour microcontrôleurs
68HC11, 68HC12, 68HC16 ou 683xx
Membre d’une famille de convertisseurs
u MC14040, MC14041 8 bits de résolution avec
horloge interne ou externe
u MC14050, MC14051 10 bits de résolution avec
horloge interne ou externe
Philippe Mabilleau Ing.
3
GEI 437 Laboratoire d’interfaces et microprocesseurs
Caractéristiques du MC14050
u
u
u
Résolution de 10 bits
u chaque tension convertie est exprimée sur 10 bits
Multiplexeur avec 11 canaux disponible en entrée
u 11 tensions différentes peuvent être lues sur un
système
Temps de conversion minimum de 44 périodes de
l'horloge fournie au convertisseur (A/D CLK)
u horloge à 2 Mhz maximum
u 22 µs minimum
Philippe Mabilleau Ing.
4
GEI 437 Laboratoire d’interfaces et microprocesseurs
Interconnexion du convertisseur sur le port
SPI
Philippe Mabilleau Ing.
5
GEI 437 Laboratoire d’interfaces et microprocesseurs
Protocole de communication avec le
convertisseur sur le port SPI
u
u
u
u
Les échanges avec le convertisseur sont bidirectionnels
et sont composés de mots de 10 bits
Le port SPI du microcontrôleur envoie les numéros des
canaux à échantillonner
Le convertisseur retourne les données échantillonnées
Lors de l'échange i+1 les données retournées sont
celles issues du canal dont le numéro a été envoyé
pendant l'échange i
Philippe Mabilleau Ing.
6
GEI 437 Laboratoire d’interfaces et microprocesseurs
Horloge de synchronisation des échanges
u
u
u
L'horloge doit être basse au repos (CPOL = 0) et les
données doivent être saisies sur le front montant (CPHA
= 0)
Les échanges doivent être programmés pour des mots
de 10 bits
L'horloge de communication esr fixée à 2 Mhz; l'horloge
du système est fixée à 16 Mhz pour permettre
l'obtention de cette horloge de communication par
division (dans la note d’application)
Philippe Mabilleau Ing.
7
GEI 437 Laboratoire d’interfaces et microprocesseurs
Calcul des paramètres des échanges
u
Deux paramètres à déterminer
u Délai entre la sélection du convertisseur et la
première impulsion d'horloge (DSCLK)
u Délai entre la dernière impulsion d'horloge et la
prochaine sélection (DTL)
Philippe Mabilleau Ing.
8
GEI 437 Laboratoire d’interfaces et microprocesseurs
Délai de départ entre CS et SCK
u
u
u
Selon les spécifications avant que DOUT puisse être
positionné par le convertisseur il faut au moins 2 A/D
CLK + 300 ns; donc 1310 ns (1.31µs) si A/D CLK = 500
ns (2 Mhz) et avec un temps de positionnement de 10
ns
Il faut également un délai de 2 A/D CLK + 425 ns de CS
à SCK; donc 1425 ns (1.425 µs)
La plus grande de ces valeur doit être retenue = 1.425
µs. Si l'horloge du système est à 16 Mhz;
DSCKL = 1425 ns / 62.5 ns = 22.8 => 23
Philippe Mabilleau Ing.
9
GEI 437 Laboratoire d’interfaces et microprocesseurs
Délai entre deux échanges
u
u
u
u
Selon les spécifications un délai de 44 A/D CLK est
requis pour permettre la conversion entre le front
descendant de l'horloge SCK et la prochaine sélection
du convertisseur CS
Un délai de 1/2 période d'horloge (250 ns à 2 Mhz)
existe entre le front descendant de l'horloge SCK et la
désactivation des signaux de sélection SC
Le délai DTL requis entre deux sélection est donc
( 44 x 500 ns) - 250 ns = 21.75 µs
DTL = ( 16 Mhz x 21.75 µs) / 32 = 10.88 => 11
Philippe Mabilleau Ing.
10
GEI 437 Laboratoire d’interfaces et microprocesseurs
Diagramme temporel des échanges
Philippe Mabilleau Ing.
11
GEI 437 Laboratoire d’interfaces et microprocesseurs
Exemple de logiciel d'utilisation
u
Échantillonnage sur 3 canaux
u
u
température canal #3, tension canal #4, pression canal #6
Une fonction d'interruption traite les 3 données
échantillonnées
si la pression tombe en dessous d'un seuil donné une
alarme est activée
u un élément chauffant est activé pour maintenir la
température à une consigne donnée
u la tension est affichée
u
Philippe Mabilleau Ing.
12
GEI 437 Laboratoire d’interfaces et microprocesseurs
Valeurs d'initialisation des registres
* QPDR, QPAR, QDDR
*
INQPDR EQU REGCS0 PCS0 default value 1
INQPAR EQU REGCS0+SCK+MOSI+MISO pins assigned to QSPI
INQDDR EQU REGCS0+SCK+NOSI QSPI output pins
INQPORT EQU INQPDR*$100+INQPAR*$100+INQDDR
form into a LONG WORD
*
Philippe Mabilleau Ing.
13
GEI 437 Laboratoire d’interfaces et microprocesseurs
Valeurs d'initialisation des registres
* SPCR0, SPCR1
*
INQS0 EQU 10*BITS+MSTR+4 master, 10 bits,
CPOL,CPHA=0,0, baud=2MHz
INQS1 EQU 23*DSCKL+SPE+11 start QSPI,
DSCK=1.4375 uS, DTL=22 uS
INQS01 EQU INQSO*$10000+INQS1 form into long word
*
* SPCR2, SPCR3
*
INQS2 EQU 2*ENDQ+WREN+$F wrap, endq = $2, newq = $F
INQS3 EQU $0000 nothing special, same as RESET state
INQS23 EQU INQS2*$10000+INQS3 form into long word
*
Philippe Mabilleau Ing.
14
GEI 437 Laboratoire d’interfaces et microprocesseurs
Définitions des adresses en RAM de
contrôle et de transmission
******
*
TXRAM0
TXRAM2
TXRAMF
*
CRAM0
CRAMF
*
Philippe Mabilleau Ing.
QSPI RAM addresses and initialization values
EQU $FFFFFD20 transmit RAM, entry 0
EQU $FFFFFD24 transmit RAM, entry 2
EQU $FFFFFD3E transmit RAM, entry F E
EQU $FFFFFD40 control RAM, entry 0
EQU $FFFFFD4F control RAM, entry F
15
GEI 437 Laboratoire d’interfaces et microprocesseurs
Définitions des adresses des données
en RAM de réception
********************
* QSPI RECEIVE RAM *
********************
* entry #
* -------FUELPS1
EQU $FFFFFD00 RECEIVE RAM 0
QSPI location of A/D pressure result
TEMP
EQU $FFFFFD02 RECEIVE RAM 1
QSPI location of A/D temperature result
V0LTAGE
EQU $FFFFFD04 RECEIVE RAM 2
QSPI location of A/D voltage result
*
Philippe Mabilleau Ing.
16
GEI 437 Laboratoire d’interfaces et microprocesseurs
Définitions des données à placer
en RAM de transmission
*
TXR0 EQU 3*64 A/D channel 3 address
TXR1 EQU 4*64 A/D channel 4 address
TXR2 EQU 6*64 A/D channel 6 address
*
TXRF EQU 6*64 A/D channel 6 address
*
TXR01 EQU TXR0*$10000+TXR1form into
*
Philippe Mabilleau Ing.
0 temperature
1 voltage
2 pressure
F pressure
a LONG WORD
17
GEI 437 Laboratoire d’interfaces et microprocesseurs
Définitions des données à placer
en RAM de contrôle
*********************************************
*QSPI CONTROL RAM INITIALIZATION CONSTANTS*
*********************************************
*
CRXB EQU BITSE+DSCK+DT 10-bits,
both delays - same for all transfers
*
CRXW EQU CRXB*$100+CRXBform into a WORD
CRXL EQU CRXW*$10000+CRXWform into a LONG WORD
*
****** Misc.
*
VREF EQU 5000 VREF is 5000 millivolts
SETPT EQU $4000 address of temperature setpoint variable
Philippe Mabilleau Ing.
18
GEI 437 Laboratoire d’interfaces et microprocesseurs
Initialisation du QSPI
*
Initialize QSPI TRANSMIT RAM
*
START MOVE.L #TXR01,TXRAMOentries 0, 1
MOVE.W #TXR2,TXRAM2 entry 2
MOVE.W #TXRF,TXRAMF entry F
*
*
Initialize QSPI CONTROL RAM
*
MOVE.L #CRXL,CRAMO entries 0, 1, 2,
(3 is superfluous)
MOVE.B #CRXB,CRAMF entry F
Philippe Mabilleau Ing.
19
GEI 437 Laboratoire d’interfaces et microprocesseurs
Démarrage du QSPI est boucle d'attente
*
* Initialize QSPI control registers, START transfers
*
MOVE.L #INQPORT,QPDRW
setup QPDR, QPAR, QDDR
MOVE.L #INQS23,SPCR2
setup SPCR2, SPCR3
MOVE.L #INQS01,SPCR0setup SPCR0, SPCR1 start
*
*
WAIT
BTST.B #7,SPSR wait until a valid conversion result
BEQ.S
WAIT
is available for all channels
Philippe Mabilleau Ing.
20
GEI 437 Laboratoire d’interfaces et microprocesseurs
Fonction de lecture de la pression
INTSRV MOVE.W #279,D0
CMP. W FUELPSI,D0
BCS.B CHKRCV
BSR.B LOPRESS
BRA.B CHKTEMP
*
CHKRCV MOVE.W #325,D0
CMP.W FUELPSI,D0
load constant for
minimum fuel pressure
test if A/D pressure
result is below minimum
generate fuel pressure warning
speeds up interrupt service routine
constant for
recovered fuel pressure
test if A/D pressure
result is above minimum
BHI.B CHKTEMP
*
BSR.B PRESSOK
Philippe Mabilleau Ing.
cancel fuel pressure warning
21
GEI 437 Laboratoire d’interfaces et microprocesseurs
Fonction de contrôle de la température
CHKTEMP
MOVE.W SETPT,D0
get temperature setpoint
SUBQ.W #5,D0 compute lower threshold
CMP.W TEMP,D0 compare with A/D result
BCS.B OK1
branch if actual temp. is above threshold
*
*
BSR HEATON
activate heater
BRA DOVOLTS speeds up interrupt service routine
OK1
MOVE.W SETPT,D0
get temperature setpoint
ADDQ.W #5,D0 compute upper threshold
CMP.W EMP,D0 compare with A/D result
BHI.B DOVOLTS branch if actual temp. is below threshold
*
BSR HEATON
activate heater
Philippe Mabilleau Ing.
22
GEI 437 Laboratoire d’interfaces et microprocesseurs
Fonction de lecture de la tension
DOVOLTS MOVE.W #VREF,D0 load scale numerator (VREF = 5000 mV)
MULU.W VOLTAGE,D0 multiply by A/D ch 4 conversion result
LSR.L #8,D0 divide by 256
LSR.L #2,D0 divide by 4 (total of divide by 1024)
CLR.W D1
ADDX.W D1,D0 round for maximum accuracy, result in D0
BSR.B DISPV display voltage on a digital readout
*
*
RTE
return from interrupt service routine
Philippe Mabilleau Ing.
23
GEI 437 Laboratoire d’interfaces et microprocesseurs
Structure du contenu des mémoires RAM
Philippe Mabilleau Ing.
24
GEI 437 Laboratoire d’interfaces et microprocesseurs
Déroulement des opérations du QSPI
Philippe Mabilleau Ing.
25
GEI 437 Laboratoire d’interfaces et microprocesseurs
Utilisation d’une séquence secondaire
u
u
u
Pour intercaler une opération spécifique d ’entrée ou de
sortie utilisant le QSPI dans le flot normal des
opérations il est possible d ’utiliser une séquence
secondaire
Une écriture directe dans les pointeurs NEWQP et
ENDQP permet de réaliser une rupture dans la
séquence des transferts réalisés par le QSPI
Dans l’exemple un transfert supplémentaire est intercalé
à la demande dans le flot des acquisitions
Philippe Mabilleau Ing.
26
GEI 437 Laboratoire d’interfaces et microprocesseurs
Contenus des mémoires
Philippe Mabilleau Ing.
27
GEI 437 Laboratoire d’interfaces et microprocesseurs
Déroulement des opérations
Philippe Mabilleau Ing.
28