Hallo Leute, ich versuche die SPI Schnittstelle auf dem lpc1115(NXP LPCEperesso Board) zum Laufen zu bringen. Leider hab ich ein Fehler den ich nicht finde. Meine CLK Konfiguration funktioniert nicht richtig, sie wird nur auf High gezogen und taktet nicht. Was mache ich falsch oder was übersehe ich? Der volle Source Code befindet sich im Anhang. Danke euch. void CLK_Einstellen{ LPC_SYSCON->SYSPLLCLKSEL =(1<<0); LPC_SYSCON->SYSPLLCLKUEN =(0<<0); LPC_SYSCON->SYSPLLCLKUEN =(1<<0); LPC_SYSCON->MAINCLKSEL =(1<<0); LPC_SYSCON->MAINCLKUEN =(0<<0); LPC_SYSCON->MAINCLKUEN =(1<<0); LPC_SYSCON->SYSAHBCLKDIV =(1<<0); } void CLK_Configuration(); LPC_SYSCON->CLKOUTCLKSEL =(1<<0); LPC_SYSCON->CLKOUTUEN =(0<<0); LPC_SYSCON->CLKOUTUEN =(1<<0); LPC_SYSCON->CLKOUTDIV =(1<<0); LPC_IOCON->PIO0_1 |=(1<<0)|(1<<4); }
Ohne ins Manual zu schauen: Du scheinst da die Clock kommplett abzuschalten. Dann taktet da nix mehr. Die vielen magischen Bits sollte man durch Beschreibende Flags ersetzen. PLL Umschalten sieht normalerweise ganz anders aus...
Hi Jim, zunächst einmal bedanke ich mich für deine Antwort. Ich habe die konfiguration versucht, wie sie im Datenblatt beschrieben wird, zu konfigurieren. "Die vielen magischen Bits sollte man durch Beschreibende Flags ersetzen." Da ich noch neu auf diesem Gebiet bin, verstehe ich das leider nicht ganz, könntest du mir mit einem Beispiel weiter helfen. Danke
Hallo Leute, Ich habe bei meine SPI Konfiguration, für den LPC1115 von NXP, Probleme damit mein CLK richtig einzustellen. Da ich noch sehr neu auf diesem Gebiet bin, frage ich euch ob ihr mir mit einem Code Beispiel oder einer Lösung weiter helfen könntet? Hier ist was ich bis jetzt nach der Anleitung hinbekommen konnte. Danke für eure Hilfe im voraus. void CLK_Einstellungen(){ //CLK Einstellung LPC_SYSCON->SYSPLLCLKSEL =(1<<0); //S27 Externen Takt als System Oszilator wählen LPC_SYSCON->SYSPLLCLKUEN =(0<<0); LPC_SYSCON->SYSPLLCLKUEN =(1<<0); //S28 Externer takt wird als Main CkL eingestellt LPC_SYSCON->MAINCLKSEL =(1<<0); LPC_SYSCON->MAINCLKUEN =(0<<0); LPC_SYSCON->MAINCLKUEN =(1<<0); LPC_SYSCON->SYSAHBCLKDIV =(1<<0); } void CLK_OutPinCfg(){ //CKLOUT PIN CFG LPC_SYSCON->CLKOUTCLKSEL =(1<<0); //S33 CLKOUT clock source select System oscillator LPC_SYSCON->CLKOUTUEN =(0<<0); //S33 CLKOUT clock source update LPC_SYSCON->CLKOUTUEN =(1<<0); LPC_SYSCON->CLKOUTDIV =(1<<0); //S34 CLKOUT clock divider Div by 1 LPC_IOCON->PIO0_1 |=(1<<0)|(1<<4); }
:
Verschoben durch User
Es nützt auch nichts, wenn du es zweimal postest. Also beschreibe ersmal, was du eigentlich willst, was du bereits hast und was du bereits kannst. Ganz generell kann ich dir eine systematische Vorgehensweise anraten: 1. Pins aufsetzen wie gewünscht, also welche Peripheriefunktion usw. 2. Clock bzw. PLL aufsetzen, wie gewünscht 3. Clock-Freigaben machen für alle Peripherie, die du aktiv haben willst 4. die einzelnen Peripherie-Cores aufsetzen Die Positionen 1..3 macht man am besten in einer separaten Unit config.c oder so ähnlich, denn sie bezieht sich ja auf das konkrete Projekt. Die Position 4 hingegen macht man im jeweiligen zugehörigen Low-Level-Treiber. In main.c hat sowas alles nichts zu suchen. Dort steht dann bloß sowas: Init_ADC(); Init_UART0(9600); Init_USB(); Init_SysTick(); und so weiter. Klaro? W.S.
Hi, danke dir für deine tipps und deine Antwort. Mein problem liegt darin ein CLK zu generieren. Es wird zwar auf High gezogen aber es taktet nicht, dass das alles nicht in der main.c geschrieben wird weiß ich auch, das war nur provisorisch. Ich habe es lediglich bereits hinbekommen das meine Daten einwandfrei gesendet werden können. Ein weiteres Porblem scheint zu sein, das ich das Datenblatt nicht ganz verstanden habe. Ich habe auch die letzten Tage damit verbracht in Foren danach zu suchen, ob das jemand mal gelöst hat.
Du hast in einem Header die Definition für LPC_SYSCON. Die Bits stehen da normalerweise in der Nähe, wenn nicht im selben File. Dein geposteter Source Code hat übrigens gar keine Header. So geht das bestimmt nicht durch den Compiler. Peter S. schrieb: > Ich habe die konfiguration versucht, wie sie im Datenblatt beschrieben > wird, zu konfigurieren. Die PLL muss man erst programieren und dann warten bis das entsprechende Lock Bit gesetzt ist, erst dann darf man die Main Clock darauf umschalten. Peter S. schrieb: > "Die vielen magischen Bits sollte man durch Beschreibende Flags > ersetzen." > > Da ich noch neu auf diesem Gebiet bin, verstehe ich das leider nicht > ganz, könntest du mir mit einem Beispiel weiter helfen So ähnlich:
1 | LPC_SYSCON->MAINCLKUEN = MAINCLKUEN_ENA; |
Die genaue Bit Definition kann anders heissen, da muss man kurz nach suchen. man grep
Peter S. schrieb: > Da ich noch neu auf diesem Gebiet bin, verstehe ich das leider nicht > ganz, könntest du mir mit einem Beispiel weiter helfen. Verwende am besten erst einmal LPCopen und schaue dort wie du mit dem Mikrocontroller umgehst. http://www.nxp.com/products/software-and-tools/hardware-development-tools/lpcxpresso-boards/lpcopen-software-development-platform-lpc11xx:LPCOPEN-SOFTWARE-FOR-LPC11XX Schaue nach der Version für LPCXpresso LPC11C24, die unterstüzt auch den LPC1115.
Genau. Importiere einfach mal die o.g. Beispiele in die LPCXpresso-IDE und gehe sie durch. Mit F3 und/oder Maus draufhalten kann man sich dann wunderbar durch die ganzen Funktionen und defines hangeln.
Ich danke Euch für eure Unterstützung. Ich habe Euch im Anhang ein Oszi. Bild angefügt, damit Ihr Euch mein Problem vielleicht besser vorstellen könnt. Der Blaue Chanal soll den SCK darstellen und der Gelbe den MOSI. danke für den Link WaddeHaddeDuDeDa, leider hilft mir das nicht wirklich weiter. Also noch mal das Programm lässt sich problemlos Compilieren, dass was ich Euch hier geschickt habe, ist nur ein Ausschnitt der so auch nicht Compilierbar ist Jim Meba. Was mich noch ein bisschen verwirrt ist mein I2C funktioniert auch einwandfrei mit dem SCL, also muss doch der innerer CLK richtig eingestellt sein oder?
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.