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