Communication entre un microcontrôleur M32C87 et une mémoire
Transcription
Communication entre un microcontrôleur M32C87 et une mémoire
Projet AB12 Suivit Solaire Note d’application Communication entre un microcontrôleur M32C87 et une mémoire SRAM IS61LV25616AL Rémi LARAINE Communication entre un M32C87 Décembre 2007 et une SRAM IS61LV25616AL Page 1 sur 12 Projet AB12 Suivit Solaire Note d’application Sommaire Sommaire.................................................................................................................................... 2 1.Vue d’ensemble....................................................................................................................3 2.Alimentation de l’ensemble................................................................................................. 3 3.Configuration du M32C87................................................................................................... 4 3.1.Les modes du processeur.............................................................................................. 4 3.1.1.Configuration du registre PM0............................................................................ 5 3.1.2.Configuration du registre PM1............................................................................ 6 3.2.BUS............................................................................................................................... 7 3.2.1.Configuration du registre DS............................................................................... 7 4.Connexion du M32C87 et de la SRAM............................................................................... 8 5.Codage d’initialisation du M32C87..................................................................................... 9 6.Protocoles de validations................................................................................................... 10 6.1.Test du bus de donnée ............................................................................................... 10 6.2.Test du bus d’adresse.................................................................................................. 11 Annexe : Plan mémoire pour chaque mode processeur............................................................ 12 Rémi LARAINE Communication entre un M32C87 Décembre 2007 et une SRAM IS61LV25616AL Page 2 sur 12 Projet AB12 Suivit Solaire Note d’application 1. Vue d’ensemble Le suivi solaire est une problématique qui a son mot à. Cette note d’application détail la mise en oeuvre et l'élaboration d'un filtre permettant des résultats optimales. 2. Alimentation de l’ensemble La SRAM IS61LV25616AL ne peut être alimenter seulement en 3.3V. Le M32C87 propose deux entrées d’alimentations VCC1 et VCC2. Dans le cas présent VCC1 sera alimenter en 5V et VCC2 en 3.3V. Il faut alors faire attention au port d’entrée/sortie du M32C87 qui sont relié a la SRAM. Figure 1 : diagramme block du M32C87 La communication avec la SRAM devra se faire impérativement avec les ports alimentés par VCC2 (3.3V). Rémi LARAINE Communication entre un M32C87 Décembre 2007 et une SRAM IS61LV25616AL Page 3 sur 12 Projet AB12 Suivit Solaire Note d’application 3. Configuration du M32C87 3.1. Les modes du processeur Le M32C87 dispose de différents mode de fonctionnement mode dont un intégrant la capacité de pouvoir dialoguer et se servir d’une mémoire externe. Figure 2 : mode du processeur La configuration du mode d’extension mémoire se fait grâce au registre de configuration de mode du processeur, PMi. Remarque importante : il faut impérativement déverrouiller les registres PMi en écriture à l’aide du registre de protection PRCR. Ce dernier protège en écriture les registres importants dans le cas ou le programme devient hors de contrôle. Pour pouvoir écrire dans les registres PMi, il faut d’abord mettre PRC1 à 1. Rémi LARAINE Communication entre un M32C87 Décembre 2007 et une SRAM IS61LV25616AL Page 4 sur 12 Projet AB12 Suivit Solaire Note d’application 3.1.1. Configuration du registre PM0 Figure 3 : registre PM0 PM00 = 1 Sélection du mode expansion mémoire. PM01 = 0 PM02 = 0 PM03 = 0 Sélection des bits de R/W (/RD, /BHE, /WR) Bite de reset. PM04 = 0 Utilisation d’un bus non multiplexé. PM05 = 0 PM06 = 0 Mettre à 0. PM07 = 1 Pour le mode expansion mémoire BCLK n’est pas une sortie. Si PM07 est mis a 1 et que les bits CM01 et CM00 sont mis a 00 la sortie du port p53 est mis a l’état bas (« L »). Le port P53 ne peut pas être utilisé en port d’entrée sortie. Rémi LARAINE Communication entre un M32C87 Décembre 2007 et une SRAM IS61LV25616AL Page 5 sur 12 Projet AB12 Suivit Solaire Note d’application 3.1.2. Configuration du registre PM1 Figure 4 : registre PM1 PM10 = 0 PM11 = 1 Sélection du mode 2 d’expansion mémoire car la mémoire utilisé a une capacité de 4 Mbyte. Permet d’avoir un seul chip select (/CS1) pour toute la SRAM. (Cf. Annexe plan mémoire) PM12 = 0 Internal memory wait bit PM13 = 0 SFR area wait bit PM14 = 0 PM15 = 0 Pas d’utilisation du signal ALE. Le port P56 renvoi un état indéterminé lorsque les bits PM15 et PM14 sont mis a 00. Le port P56 ne peut pas être utilisé en entrée/sortie. PM16 = 0 Mettre a 0. PM17 = 0 Rémi LARAINE Communication entre un M32C87 Décembre 2007 et une SRAM IS61LV25616AL Page 6 sur 12 Projet AB12 Suivit Solaire Note d’application 3.2. BUS Dans le mode expansion de mémoire comme dans le mode microprocesseur, certaines pins fonctionnent comme des pins de contrôle du bus pour contrôler les adresses et les données. A0 à A22, /A23, D0 à D15, /CS0 à /CS3, /WRL/WR, /WRH/BHE, /RD, BCLK ALE, /HLDA ALE, HOLD, ALE, /RDY sont utilisé comme des pins de contrôle du bus. Les caractéristiques du bus sont déterminées par différents registres. Figure 5 : Caractéristiques du bus Les registres PM0 et PM1 ont déjà été configuré. (cf. 2.1. les modes du processeur) 3.2.1. Configuration du registre DS Figure 6 : registre DS DS0 = 1 DS1 = 1 DS2 = 1 DS3 = 1 Les données stockées sur la mémoire sont en 16 bits. Rémi LARAINE Communication entre un M32C87 Décembre 2007 et une SRAM IS61LV25616AL Page 7 sur 12 Projet AB12 Suivit Solaire Note d’application 4. Connexion du M32C87 et de la SRAM SRAM IS61LV25616AL M32C83 P2[0..7] A[0..7] P3[0..7] A[8..15] P4[0 1] A[16 17] P0[0..7] D[0..7] P1[0..7] D[8..15] /UB /LB ///////// /CS1 (P4_6) /CE /RD (P5_2) /OE /WR (P5_0) /WE Figure 7 : connexion entre M32C87 et la SRAM Rémi LARAINE Communication entre un M32C87 Décembre 2007 et une SRAM IS61LV25616AL Page 8 sur 12 Projet AB12 Suivit Solaire Note d’application 5. Codage d’initialisation du M32C87 Le codage de l’application est fait sous le logiciel HEW. Pour éviter de changer les valeurs des registres par inadvertance il est plus judicieux de coder l’initialisation du microcontrôleur en assembleur dans le fichier ncrt0.a30. start: ;--------------------------------------------------------------------; after reset, this program will start ;--------------------------------------------------------------------ldc #istack_top, isp ; set istack pointer mov.b #02h,0ah ; unlock processor mode mov.b #81h,04h ; set processor mode in extended memory mov.b #02h,05h ; mode 2 active mov.b #00h,0ah ; lock processor mode mov.b #0fh,0bh ; memory access in 16 bits mode ; mov.b mov.b mov.b mov.b #01h,0ah #02h,0ch #12h,0ch #00h,0ah ; unlock processor mode ; Clock divided by 2 ; Clock not divided ; lock processor mode ldc ldc ldc #0080h, flg #stack_top, sp #data_SE_top,sb ;set stack pointer ;set sb register fset ldc fclr b #data_SE_top,sb b ;switch to bank 1 ;set sb register ;switch to bank 0 ldc #VECTOR_ADR,intb Rémi LARAINE Communication entre un M32C87 Décembre 2007 et une SRAM IS61LV25616AL Page 9 sur 12 Projet AB12 Suivit Solaire Note d’application 6. Protocoles de validations Ces protocoles servent à vérifier la bonne communication entre le M32C87 et la mémoire. 6.1. Test du bus de donnée L’algorithme suivant a été élaboré pour vérifier que tous les ports du bus de données fonctionnent. Fonction_test_donnée Affecter les valeurs des variables a1 et a2 a deux adresses différentes de la mémoire, Mettre la valeur maximal dans a1 (a1 = 11111111111111111), Mettre la valeur minimal dans a2 (a2 = 00000000000000000) pour forcer tous les ports du bus de donnée a l’état bas, Aller chercher la valeur de a1, Si a1 = 11111111111111111 alors le bus de donné est bon, Si a1 = 11111111111011111 alors la pin 6 du bus est défaillante. Le codage correspondant est le suivant #include "sfr32c87.h" void main(void) { long B=0; short *a1; short *a2; a1=(int *)(0x10002); //address 2 of ram a2=(int *)(0x10004); //address 4 of ram while(1) { *a1=13171; *a2=0; B=*a1; B=0; } // affectation de la valeur 11111111111111111 //nouvelle affectation 00000000000000000 //lecture de la valeur 11111111111111111 //initialisation de B } Rémi LARAINE Communication entre un M32C87 Décembre 2007 et une SRAM IS61LV25616AL Page 10 sur 12 Projet AB12 Suivit Solaire Note d’application 6.2. Test du bus d’adresse L’algorithme suivant a été élaboré pour vérifier que tous les ports du bus d’adresse fonctionnent. Fonction_test_adresse Initialiser toutes les données de la mémoire à 0, Affecter une valeur V à la dernière adresse du plan mémoire (111111111111111111), Scruter une par une toutes les valeurs de toutes les adresses de la mémoire en commençant par la première, et les comparer avec la valeur V définie, Si la valeur V est à la dernière adresse, alors le bus d’adresse est bon, Si la valeur est à l’adresse 11111111011111111 alors la pins 9 du bus d’adresse est défaillante. Le codage correspondant est le suivant #include "sfr32c87.h" void main(void) { long i=0; long B=0; short *a1; short *a2; a1=(int *)(0x3FFFFE); //avant dernière adresse de la mémoire a2=(int *)(0x10000); //première adresse de la mémoire (cf. plan mémoire) //reset de la mémoire for (i=65536;i<2097151;i++) //variation de l’adresse 010000 à 3FFFFE/2******* { *a2=0;a2++; } //initialisation *a1=-2; //valeur V a2=(int *)(0x10000); while (*a2!=-2 && a1 > a2) //Boucle de lecture des données { a2++; } while(1){} //Boucle de vérification } *******Les données mémoires sont en 8 bit ????? Rémi LARAINE Communication entre un M32C87 Décembre 2007 et une SRAM IS61LV25616AL Page 11 sur 12 Projet AB12 Suivit Solaire Note d’application Annexe : Plan mémoire pour chaque mode processeur Rémi LARAINE Communication entre un M32C87 Décembre 2007 et une SRAM IS61LV25616AL Page 12 sur 12