Forum: Mikrocontroller und Digitale Elektronik LPC1758 SSP0 Probleme im SPI Modus


von Stefan O. (avrstefan)


Lesenswert?

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

von Jim M. (turboj)


Lesenswert?

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

von Stefan O. (avrstefan)


Lesenswert?

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.

von Jörg S. (joerg-s)


Lesenswert?

Gibt's vielleicht nur einen Wackler an einem der Vcc Pins?

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.