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 }
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.