Hallo Leute, habe ein Problem mit dem LPC1758 und dem SSP0 im SPI Modus. Problem ist folgendes, laut Einstellungen sollte SCLK0 auf high gehen wenn keine Komunikation stattfindet, sie bleibt aber irgendwo bei 2.2 V hängen. Am SCK0 Ausgang hängt im moment nur ein Oszi (Probe auf 1MOhm). Hier noch der Code meiner Initialisierung. [c] //Enable Power SSP0 LPC_SC->PCONP |= (1 << 21); //Pin MUX select LPC_PINCON->PINSEL0 |= 0x2<<30; //SCK0 LPC_PINCON->PINSEL1 |= 0x2<<4; //MOSI0 //Clock selection //LPC_SC->PCLKSEL1 |= CLKPWR_PCLKSEL_CCLK_DIV_4<<10; //Set SSP0 registers LPC_SSP0->CR0 |= 0x7; // Set to 8 Bit Mode LPC_SSP0->CR0 |= 0x0<<4; //Mode is SPI LPC_SSP0->CR0 |= 0xC0; //CPOL = 1 and CPHASE = 1 LPC_SSP0->CR0 |= 0x2 << 8; LPC_SSP0->CPSR |= 0x2; //Prescalar //Enable SSP0 LPC_SSP0->CR1 |= 0x2; [\c] Im Debugger kann ich alle Register mit den hier gesetzten Werten sehen und sie scheinen einwandfrei eingestellt worden zu sein. Auf dem Board ist auch kein Kurzschluss oder ähnliches vorhanden. Grüße, Stefan
Hast Du auch PINSELx kontrolliert? Das hier ist ein integer Überlauf:
1 | //Pin MUX select
|
2 | LPC_PINCON->PINSEL0 |= 0x2<<30; //SCK0 |
Da Konstanten ohne Typ implizit int sind, wird die 2 ins Vorzeichenbit geschoben. Da sollte der Compiler eine Warning ausspucken. So sieht es besser aus:
1 | //Pin MUX select
|
2 | LPC_PINCON->PINSEL0 |= 0x2UL<<30; //SCK0 |
Compiler hat hier keine Warnung ausgegeben, hat das aber so wie es im Assembler aussieht automatisch in die richtige Größe umgewandelt. Auch der Debugger zeigt mir ja das register richtig gesetzt an. Aber so wie es aussieht scheint das Problem an einer ganz anderen Stelle zu liegen. So wie es aussieht hat wohl jemand mein ARM Board ESD Mäßig beschädigt. Mehrere Pins an verschiedenen Ports lassen sich nicht mehr setzen, und bleiben auch wenn sie eigentlich auf low oder high gehen sollten auf 2.2 V. Darunter sind auch die Pins für MOSI0 und SCK0 an PORT0. An Port1 scheint zumindest noch SCK0 zu gehen, der wird nach der Initialisierung auf high gesetzt. Naja muss wohl ein neues Board aufbauen. Das ist echt ärgerlich. Scheinbar ist es beschädigt worden während des Transports in von einem Standort zum Anderen. Dafür war ich nämlich nicht zuständig, kann sein das jemand da nicht auf ESD geachtet hat.
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.