SPI Initialisierung

Gast #662763
Lesenswert?
• ▲
▼
Hey
hab mal ne Frage zur Initialisierung des SPI. Verwende einen LPC2148 und 
programmiere in C. Ich habe nun auf meinem Evaluationboard MCB2140 ein 
digitales Poti(AD8400) angebracht, welches über SPI mit dem Controller 
verbunden ist.Controller soll als Master Poti als Slave arbeiten.Kann 
ich nun, wenn ich an das Poti ein Messgerät anschließe Werte des 
Controllers über SPI auslesen?Hat jemand eine "Beispielinitialisierung 
des SPI" für einen ähnlichen Fall?oder zufällig den gleichen...;)
Es geht mir um das Prinzip der Initialisierung des SPI und wie ich über 
diesen Daten von einem Master zu einem Slave und anderum sende.Vielen 
Dank
Gast #662933
Lesenswert?
• ▲
▼
ja okey das ist klar, aber zu der Vorgehensweise mit dem Poti....versteh 
ich das richtig, dass ich am Poti den Messwert abgreifen kann den ich 
über SPI schicke?weil das poti als ausgabe dient?
Gast #663004
Lesenswert?
• ▲
▼
okey ich stell mal mein code hierrein...vll sieht ja jemand einen 
Fehler.



void SPI_Init(void)
{
  // Setup SPI Clock Counter Register
  //
  // one SPI clock will be 8 PCLK (where PCLK = CCLK)
  SPI0_PCCR = 8; // 128

  // Setup SPI Control Register
  //
  // BitEnable  = 0    => 8 Bits per transfer
  // CPHA      = 1
  // CPOL      = 1
  // MSTR      = 1    => select master mode
  // LSBF      = 0    => transfered MSB first
  // SPIE      = 0    => interrupt disable
  // BITS      = 1000  => 8 bits (but not used)
  SPI0_SPCR = 0x838;
  // after here: a write to SPI0_SPDR will start transfer
}

/****************************************************
**  Writes the specified byte on the SPI interface.
*******************************************************/

void SPI_Write(unsigned char my_value)
{
  // put given value into the output buffer register
  SPI0_SPDR = my_value;
  // wait for SPIF bit to be set to 1
  while (0 == (SPI0_SPSR & SPSR_SPIF))
  {}
  // causes the SPIF flag to get cleared again
  my_value = SPI0_SPDR;
}


egal was ich dem SPI_write für einen Wert gebe, ich bekomme immer 
Vollausschlag (3.3V ) am Mittelabgriff des Potis als Ausgabewert
kann jemand einen Fehler entdecken? wenn nicht auch gut möglich dass es 
sich um ein Hardwareproblem handelt.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.