CS-Leitung von SRAM geht 3x auf 0V pro Zugriff

Gast #2615426
Lesenswert?

Moin,

ich bin grad dabei von einem STM32F103ZE Prozessor ein 8Bit SRAM 
anzusprechen.

1
#define    SRAM_FIRST_ADDR   (*((volatile unsigned int *) 0x64000000))
2

3
int main (void)
4
{
5
  unsigned char data; 
6
   
7
  /* do some initializations */
8
  /*
9
   ..........
10
  */
11
   
12
  data = SRAM_FIRST_ADDR;
13
  delay(100); 
14
  SRAM_FIRST_ADDR = 0x05; 
15
  delay(100);
16
  data = SRAM_FIRST_ADDR;
17
  delay(100);
18

19
  while(1)
20
  {
21
     data = SRAM_FIRST_ADDR;
22
     delay(100);
23

24
  } 
25
}

Die CS-Leitung wird angesprochen, allerdings geht diese 3x nacheinander 
auf low -> dann kommt der Break (delay(100)) und dann geht die 
CS-Leitung wieder 3x auf low.

Dieses Verhalten verstehe ich leider nicht ganz. Ich dachte, dass die 
CS-Leitung pro SRAM-Zugriff nur einmal auf low geht. Dieses Verhalten 
hab ich auch, wenn ich nicht debugge.

Als Modus hab ich beim STM32 Prozessor FSMC_AccessMode_A ausgewählt

Gruß
Lars
Moderator (Firma: Titel) Persönliche Seite #2615430
Lesenswert?

Lars schrieb:
> Dieses Verhalten verstehe ich leider nicht ganz. Ich dachte, dass die
> CS-Leitung pro SRAM-Zugriff nur einmal auf low geht.
Und was sagt der Assemblercode zu diesem Thema?

Und was macht der Compiler, wenn du den Pointer auch mit 8 Bit Breite 
definierst:
1
#define    SRAM_FIRST_ADDR   (*((volatile unsigned char *) 0x64000000))
Gast #2615455
Lesenswert?

1
#define    SRAM_FIRST_ADDR   (*((volatile unsigned char *) 0x64000000))
2
#define    SRAM_SEC_ADDR   (*((volatile unsigned char *) 0x64000001))
3
#define    SRAM_THIRD_ADDR   (*((volatile unsigned char *) 0x64000001))

so dachte ich das, aber die Addr-Pins bewegen sich leider noch nicht, 
falls das hier stimmen sollte.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren