Forum: Mikrocontroller und Digitale Elektronik Probleme mit SPI-Flash Schaltung (Code)


von Torsten W. (torstenw)


Angehängte Dateien:

Lesenswert?

Hallo,
Ich bin Grade dabei ein Flash SST25VF016B an einen ATMEGA88 zu 
betreiben.
Das ganze lief erst recht gut aber hat dann schlagartig den Geist 
aufgegeben, habe die Schaltung 2 mal neu aufgebaut alle Bauteile 
ausgetauscht.
Ich versuche erstmal nur die Seriennummer auszulesen , wiegesagt hat 
alles wunderbar geklappt.

Habe das Flash folgendermaßen angeschlossen:
CE  -> PB1(+Pullup 10k)
SO  -> MISO
SI -> MOSI
WP -> VCC
HOLD -> VCC
SCK -> SCK


Brauche da eine Anstoß einzige Idee die ich habe ist das evtl. mein 
Programmer USBprog mir mit den 5V den Flash zerstört . da die ja an 
selben SPI-BUS sind . Flash kann max 3.6V

Danke hoffe jemand kann mir helfen, wie gesagt das ganze ging vorher, 
hängt jetzt beim lesen..

von Oha (Gast)


Lesenswert?

Aeh, ja. Die Spannung ... Da sollte man allenfalls einen Levelkonverter 
zwischenschalten. Du hast in echter Kamikatze Manier einfach mal 
probiert ? Ja. das kann man machen...

von Torsten W. (torstenw)


Lesenswert?

Also meinst du ich habe 3 meiner Flash's zerstört?

von Oha (Gast)


Lesenswert?

Tja. Ich weiss es nicht, aber wenn die Teile nur 3.6V koennen... weshalb 
wuerde der Hersteller eine so niedrige Spannung anschreiben wenn mehr 
drinliegen wuerde ? Um die Entwickler zu knechten ?

von Torsten W. (torstenw)


Lesenswert?

Habe den Controller jetzt ohne Flash(Neues Flash) Programmiert, ihn ca 
20 mal Resetet einmal habe ich die richtigen Registerwerte bekommen.
Ich verstehe das alles nicht irgend eine Idee was ich falsch mache 
Schaltung wird mit 16mhz betrieben

von Oha (Gast)


Lesenswert?

Ja, Da scheint noch was anderes nicht gut zu sein. Wie schaut es mit den 
Messmitteln aus ? Sind die Spannungen nicht gut ? Sind die signale nicht 
gut ?

von Torsten W. (torstenw)


Lesenswert?

Momentan schlecht. habe den Quarz getauscht, und einen 1uf Keramik 
Kondensator  diereckt an das VSS/VDD vom Flash
habe jetzt bemerkt wenn ich das Flash mit den Finger
berühre empfängt er etwas aber nur Schrott, andernfalls macht er nichts 
erhängt halt immer beim lesen.

von Torsten W. (torstenw)


Lesenswert?

juhuu lalalala...
heute schmeiss ich ne Party!
Also CE auf PB2 muss als Ausgang definiert werden auch wenn ich  PB1 
verwende .. keine Ahnung warum jemand Ahnung wo das im Datenblatt steht 
.
es geht ! .. alle meine Flashs sind trotz überdosis  nicht gestorben.


Hier die abgeänderte SpiINIT

[code]
void SPI_MasterInit(void)
{
  /* Set MOSI and SCK output, && SS all others input */
  DDR_SPI = (1<<DD_MOSI)|(1<<DD_SCK)|(1<<PB1)|(1<<PB2);

  Flash_Disable();

  for(unsigned char a=0;a<200;a++){
  nop(); //#define nop()  _asm__ __volatile_ ("nop" ::)
  };    //Wartennn

  /* Enable SPI, Master, set clock rate fck/2 */
  SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPI2X);

}
[code/]

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.