Forum: Mikrocontroller und Digitale Elektronik ARM7 LPC2131 SPI Schnittstelle


von Werner Muchitsch (Gast)


Lesenswert?

Hallo Leute,
ich bin schon recht verzweifelt.
Ich habe das Forum bereits durchgeschaut doch nichts Hilfreiches
gefunden. daher schreibe ich nun persönlich.

Ich habe mich durch durch das manual gewühlt und codebeispiele
durchforstet aber bei mir funktioniert das empfangen über SPI einfach
nicht.
Das Senden von Daten geht ohne Probleme. nur wenn ich Daten empfangen
möchte kommt nichts zurück. Ich möchte Ein externen Flash ansprechen
und testweise mal das Status Register auslesen.

Nachdem ich die notwendige Instruction Sequence geschickt habe möchte
ich ein Byte zurücklesen.
Meine empfangsroutine schaut folgendermassen aus:

unsigned char SPI_ReadByte(void)
{
unsigned byte = 0;
    S0SPDR       =   0xFF;
    while(!(S0SPSR & SPIF));
    byte = S0SPSR;
    byte = S0SPDR;

  status      =  0x05;        //set next state
    return(0);        //read data

}

von Werner Muchitsch (Gast)


Lesenswert?

Entschuldigt habe versehentlich den Beitrag abgeschickt bevor ich noch
fertig war.

Ich schicke auf jeden Fall ein Dummy Write mit dem data 0xFF damit ich
die Clockimpulse generiere, danach warte ich bis die 8 Bit geschickt
wurden und lese anschließend das S0SPDR register wieder aus wo
eigentlich das empfangene Byte geschickt werden sollte, aber es kommt
nichts daher. ich verstehe das nicht ganz und hoffe um eure mithilfe.
Danke

lg
Werner

von mthomas (Gast)


Lesenswert?

Ok, der Codeschnippsel ist wohl nicht wirklich ernst gemeint.
- Wie sieht die Initialisierungsroutine aus (Pin-Connection, SPI)?
- Wie sieht die funktionierende Sende-Routine aus?
- Wie ist SPIF definiert (Maske oder Bitnummer)?
- CPOL, CPHA variiert?

Code meines LPC2000-Interfaces fuer die efsl ist vielleicht hilfreich:
http://www.siwawi.arubi.uni-kl.de/avr_projects/arm_projects/efsl_arm/index.html
-> Quellcodearchiv -> src/interfaces/lpc2000_spi.c

Martin Thomas

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.