LinuxCNC Documentation

SYNOPSIS

loadrt hm2_rpspi

config [Voreinstellung: ""]

HostMot2-Konfigurationsstrings, beschrieben in der hostmot2(9) Manpage.

spiclk_rate [Voreinstellung: 31250]

Geben Sie die SPI-Taktrate in kHz an. Siehe SPI-TAKTRATE (engl. SPI clock rates) unten.

spiclk_rate_rd [Voreinstellung: -1 (wie spiclk_rate)]

Geben Sie die SPI-Lesetaktrate in kHz an. Normalerweise lesen und schreiben Sie mit der gleichen Geschwindigkeit. Es kann jedoch sinnvoll sein, die Lesegeschwindigkeit zu verringern, wenn der Hin- und Rückweg zu lang ist (siehe SPI-TAKTRATEN unten).

spiclk_base [Voreinstellung: 400000000]

Dies ist der Fallback-Wert für die Berechnung des SPI-Taktteilers. Normalerweise wird die Basisrate aus /sys/kernel/debug/clk/vpu/clk_rate gelesen und in der Teilerberechnung verwendet (für den Rpi3 sollte sie 250 MHz betragen). Die spiclk_base wird nur als Fallback verwendet, wenn die des Systems nicht gelesen werden kann. Normalerweise ist es sicher (und empfehlenswert), diesen Parameter so zu lassen, wie er ist.
Sie sollten diesen manuell auf 250000000 setzen wenn Ihr System keinen Zugang zu den clock Einstellungen des Kernels zulässt. Ansonsten wird die SPI clock Frequenz bei nur 62.5% des verlangten Wertes liegen.

spi_pull_miso [Voreinstellung: 1 (pull-down)]
spi_pull_mosi [Voreinstellung: 1 (pull-down)]
spi_pull_sclk [Voreinstellung: 1 (pull-down)]

Aktivieren oder deaktivieren Sie Pull-up/Pull-down auf den SPI-Leitungen. Ein Wert von 0 deaktiviert jeglichen Pull-up/Down an dem Pin. Ein Wert von 1 bedeutet Pull-down und 2 bedeutet Pull-up. Die Chip-Enable-Leitung(en) sind immer Pull-up-aktiviert.

+spi_probe* [Voreinstellung: 1]

Testet den SPI-Port und die CE-Leitungen für eine Karte. Dies ist ein Bit-Feld, das angibt, welche Kombinationen von SPI und CE geprüft werden sollen:

  • 1 = SPI0/CE0,

  • 2 = SPI0/CE1,

  • 4 = SPI1/CE0,

  • 8 = SPI1/CE1,

  • 16 = SPI1/CE2.

Die Prüfung wird genau in der oben genannten Reihenfolge durchgeführt. Alle gefundenen Platinen werden in der Reihenfolge 0…​4 nummeriert. Siehe auch SCHNITTSTELLEN-KONFIGURATION (engl. interface configuration) unten.

Wenn eine Prüfung fehlschlägt, ist dies ein Fehler und der Treiber bricht ab. Die SPI0/SPI1 Peripheriegeräte befinden sich an GPIO-Pins (mit 40-Pin-I/O-Header-Pin-Nummern in Klammern): - SPI0: MOSI=10(19), MISO=9(21), SCLK=11(23), CE0=8(24), CE1=7(26) - SPI1: MOSI=20(38), MISO=19(35), SCLK=21(40), CE0=18(12), CE1=17(11), CE2=16(36)

spi_debug [Voreinstellung: -1]

Setzt den Meldungspegel des laufenden Prozesses. Die Meldungsebene wird gesetzt, wenn spi_debug auf einen positiven Wert zwischen 0 und 5 gesetzt wird, wobei 0 bedeutet, dass es keine Meldungen gibt und 5 alles. Ein Wert von -1 berührt die aktuelle Meldungsebene nicht.

Caveat Emptor: Das Ändern der Meldungsebene ist prozessweit und alle Module innerhalb des Prozesses werden Meldungen auf der gewünschten Ebene ausspucken. Dies kann ein ziemliches Durcheinander in Ihrem Terminal verursachen.

BESCHREIBUNG

hm2_rpspi ist ein Gerätetreiber für den Raspberry Pi 2/3, der die SPI-basierten Anything-I/O-Karten von Mesa (mit der HostMot2-Firmware) mit der LinuxCNC-HAL verbindet. Dieser Treiber basiert nicht auf dem linux spidev-Treiber, sondern auf einem speziellen BCM2835-SPI-Treiber.

The kernel’s spi_bcm2835 driver conflicts with this user-space driver and must be disabled before hm2_rpspi will load. Use raspi-config (Interface Options → SPI → Disable) and reboot. If the kernel module is still present at load time the driver will refuse to start with "Kernel SPI driver spi_bcm2835 is loaded and conflicts" rather than fight the kernel for the bus. Having both kernel and user-space SPI drivers installed otherwise leads to unexpected interactions and system instabilities.

Die unterstützten Karten sind: 7I90HD.

Das Board muss eine kompatible Firmware (z.B.: 7i90_spi_svst4_8.bit) haben, die mit dem Programm mesaflash(1) auf das Board geladen wurde.

hm2_rpspi ist nur verfügbar, wenn LinuxCNC mit "uspace"-Echtzeit konfiguriert ist. Es funktioniert mit Raspian und PREEMPT_RT Kernel.

SCHNITTSTELLENKONFIGURATION

Es werden bis zu fünf Geräte (7i90-Boards) unterstützt. Zwei an SPI0 und drei an SPI1. Es wird empfohlen, höchstens zwei Geräte zu verwenden und jedes Gerät an einen separaten SPI-Port anzuschließen. Sie können wählen, welche CE-Leitungen Sie bevorzugen, oder Sie passen das Design an und richten den Parameter spi_probe ein, um den Treiber anzuweisen, wo er nach der/den Karte(n) suchen soll.

ECHTZEIT-LEISTUNG DES BCM2835-SPI TREIBERS

Muss noch geschrieben werden.

SPI-TAKTRATEN

Der maximale SPI-Takt des BCM2835-SPI-Treibers und des 7i90 ist mit über 32 MHz dokumentiert. Der SPI-Treiber kann Frequenzen liefern, die weit über das hinausgehen, was für den 7i90 akzeptabel ist. Ein sicherer Wert für den Anfang wäre 12,5 MHz (spiclk_rate=12500), von dem aus man sich dann hocharbeiten kann.

Der SPI-Treiber erzeugt (sehr) diskrete Taktfrequenzwerte, insbesondere im MHz-Bereich, aufgrund einer einfachen Clock-Teiler-Struktur. Die Basisfrequenz beträgt 250 MHz und der Teiler für SPI0/SPI1 skaliert mit diskreten Faktoren. Die folgende Liste spezifiziert die Einstellung spiclk_rate und die diskrete SPI Taktfrequenz (250 MHz / (2n) for n > 1):

Table 1. SPI-Taktrate und entsprechende SPI-Taktfrequenz

Teiler

spiclk_rate (kHz)

tatsächliche Frequenz

2

62500

62.500 MHz

3

41667

41.667 MHz

4

31250

31.250 MHz

5

25000

25.000 MHz

6

20834

20.833 MHz

7

17858

17.857 MHz

8

15625

15.625 MHz

9

13889

13.889 MHz

10

12500

12.500 MHz

11

11364

11.364 MHz

12

10417

10.417 MHz

13

9616

9.615 MHz

14+

…​.

…​.

Die niedrigste wählbare SPI-Taktfrequenz ist 30 kHz (spiclk_rate=30) für SPI0 und SPI1. Theoretisch könnte der SPI0-Port auch langsamer getaktet werden, aber das ist nicht sinnvoll. Sie sollten bei einer derart langsamen Einstellung keine Echtzeitleistung erwarten, es sei denn, Ihr Rechner befindet sich in der Nähe eines schwarzen Lochs.

Die höchste SPI-Taktfrequenz liegt theoretisch bei 125 MHz. Mit dieser Frequenz können Sie jedoch keine zuverlässige Hardware-Schnittstelle aufbauen. Der Treiber begrenzt den Takt auf 62,5 MHz (cpiclk_rate=62500). Die Chancen, dass die Schnittstelle bei dieser Frequenz zuverlässig funktioniert, sind eher gering. Die 7i90-Schnittstelle unterstützt nur Frequenzen bis zu 50 MHz, und das auch nur bei perfekter Verkabelung und Impedanzanpassung (nur in Schreibrichtung).

Das Schreiben auf den 7i90 kann schneller erfolgen als das Lesen. Dies ist besonders wichtig, wenn Sie "lange" Drähte oder irgendwelche Puffer auf dem SPI-Bus Pfad haben . Sie können die Lesetaktfrequenz auf einen niedrigeren Wert einstellen (mit spiclk_rate_rd), um den Auswirkungen des SPI-Bus-Roundtrips entgegenzuwirken, der für Lesevorgänge erforderlich ist. Zum Beispiel können Sie mit 41,67 MHz schreiben und mit 25 MHz lesen.

Es sollte beachtet werden, dass der RPi3 über eine angemessene 5-V-Stromversorgung verfügen muss und die Stromversorgung sollte direkt am 40-poligen I/O-Header ordnungsgemäß entkoppelt sein. Bei hohen Geschwindigkeiten und Rauschen auf der Versorgung besteht die Möglichkeit, dass das Rauschen die PLL(s) des SoC stört, was zu einem seltsamen Verhalten führt.

Für eine optimale Leistung des RPi3 müssen Sie die "On-Demand"-CPU-Frequenzregelung deaktivieren. Sie können Folgendes in Ihre /etc/rc.local-Datei einfügen:

Achten Sie darauf, dass ein geeigneter Kühlkörper auf dem SoC montiert ist, sonst wird er zu warm und stürzt ab.

== NOTE

Dieser Treiber ist nun überholt, für die meisten Zwecke ist der hm2_spix Treiber vorzuziehen.

== SIEHE AUCH

hostmot2(9) hm2_spix(9)

== LIZENZ

GPL