Hallo,
ich habe ein Problem mit meiner SPI Kommunikation eines Raspberry Pi`s.
Konkret geht es darum viele Messwerte, die mit einem FPGA erfasst
werden, sehr schnell an einen Raspberry zu übermitteln, um dort die
eigentliche Auswertung und anschließende Visualisierung vorzunehmen.
Für die Kommunikation verwende ich auf Raspberry-Seite den Standard SPI
Linux-Treiber .
Die SPI Schnittstelle habe ich wie folgt parametriert:
1 | static const char *device = "/dev/spidev0.0";
|
2 | static uint8_t mode = 1;
|
3 | static uint8_t bits = 8;
|
4 | static uint32_t speed = 30000000;
|
5 | static uint16_t delay = 0;
|
Die Kommunikation mit dem FPGA funktioniert. Jedoch habe ich
festgestellt, dass die Zeit, bis der MISO Port nach dem letzten
gesendeten Bit auf High schaltet, sehr lange dauert (rote Pfeile). Auch
variieren diese Delays je nach Sendezeitpunkt eines SPI-Telegramms
stark.
Wie schon erwähnt funktioniert die Kommunikation, ist aber zeitlich sehr
ineffektiv, da 20 bis 80us lange Pausen enthalten sind, bevor ein neues
Telegramm geschickt werden kann. Dadurch habe ich eine deutlich
langsamere Kommunikation bzw. effektive Datenrate...
Kann mir jemand einen Tipp geben, wie ich diese Delays verkürzen kann,
sodass die Telegramme näher zusammenrutschen und eine schnellere
Kommunikation stattfinden kann?
Oder hat jemand bessere Erfahrungen mit WiringPi o.ä. gemacht?
Vielen Dank für eure Hilfe!
Viele Grüße, MemY