LPC1758 SSP0 Probleme im SPI Modus

OP #2642155
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
#2642181
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
OP #2642228
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.