SPI-Problem mit SiLabs C8051F320

OP #1554335
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:
1
#pragma vector=SPIF_int
2
__interrupt void SPI_ISR(void) {
3
  SPI0CN &= ~0xF0; // alle Flags löschen
4
  if (!count) { // erstes ankommendes Byte (Länge)
5
    count = SPI0DAT;
6
  }
7
  else {
8
    SPIbuffer[--count] = SPI0DAT;
9
  }
10
  if (!count) { // am Ende des Paketes
11
    txLock = 0; // freigeben für USB
12
  }
13
}

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

VG mario

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 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.