www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik SPI-Problem mit SiLabs C8051F320


Autor: Mario G. (suicided)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Forum,

ich arbeite momentan an einer Verbindung eines Drahtlosnetzwerkes mit 
einem PC mit folgender Konfiguration:

Netzwerk bestehend aus CC2431
|
| SPI
|
USB-Controller (SiLabs C8051F320)
|
| USB (12 Mbps)
|
PC

Die SPI-Übertragung findet mit 250 kbps statt. Allerdings muss ich 
zwischen den einzelnen Bytes eine Pause machen, die der C8051F320 
braucht, um das Byte aus dem Register zu laden. Diese Pause verringert 
die Übertragungsrate auf unter 100 kbps was äußerst ungünstig ist, da 
die Funkdaten im schlimmsten Fall mit 250 kbps ankommen. Selbst 1 Mbps 
aufm SPI wird zu 140 kbps durch die Pause (57 µs) und durch eine kürzere 
Pause gehen Bytes verloren. DMA hat der C8051F320 nicht und die 
auslesende ISR ist so kurz wie möglich:
#pragma vector=SPIF_int
__interrupt void SPI_ISR(void) {
  SPI0CN &= ~0xF0; // alle Flags löschen
  if (!count) { // erstes ankommendes Byte (Länge)
    count = SPI0DAT;
  }
  else {
    SPIbuffer[--count] = SPI0DAT;
  }
  if (!count) { // am Ende des Paketes
    txLock = 0; // freigeben für USB
  }
}

Gibt es irgendeine elegante Möglichkeit sowas zu erledigen oder ist der 
USB-Controller einfach ungeeignet?

VG mario

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.