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