STMicroelectronics UM2375 Linux-Treiber-Benutzerhandbuch

STMicroelectronics UM2375 Linux Driver User Manual

STMicroelectronics UM2375 Linux-Treiber-Benutzerhandbuch

STMicroelectronics-Logo

Linux®-Treiber für die Hochleistungs-NFC-Frontends ST25R3911B und ST25R3912/14/15

Einführung

Der Linux®-Treiber STSW-ST25R009 ermöglicht dem Raspberry Pi 4 den Betrieb mit dem X-NUCLEO-NFC05A1, das das leistungsstarke NFC-Universalgerät ST25R3911B enthält.

Dieses Paket portiert die RF-Abstraktionsschicht (RFAL) auf eine Raspberry Pi 4 Linux-Plattform für den Betrieb mit der X-NUCLEO-NFC05A1-Firmware. Das Paket enthält Folgendes:ample Anwendung erkennt verschiedene Arten von NFC tags und Mobiltelefone, die P2P unterstützen. Der RFAL ist der ST-Standardtreiber für die ST25R NFC/RFID-Lese-ICs ST25R3911B, ST25R3912, ST25R3913, ST25R3914 und ST25R3915. Es wird beispielsweise von der ST25R3911B-DISCO-Firmware (STSW-ST25R002) und von der X-NUCLEONFC05A1-Firmware (X-CUBE-NFC5) verwendet.

STSW-ST25R009 unterstützt alle ST25R3911B-Protokolle der unteren Schicht und auch einige Protokolle der höheren Schicht für die Kommunikation. Die RFAL ist portabel geschrieben und kann daher auf einer Vielzahl von Linux®-basierten Geräten ausgeführt werden. Dieses Dokument beschreibt, wie die RFAL-Bibliothek auf einem Standard-Linux-System (in diesem Fall dem Raspberry Pi 4) für die NFC/RF-Kommunikation verwendet werden kann. Der Code ist hochgradig portierbar und funktioniert mit geringfügigen Änderungen auf jeder Linux-Plattform.

Abbildung 1. RFAL-Bibliothek auf der Linux-Plattform

Abbildung 1 RFAL-Bibliothek auf der Linux-Plattform

Überview

Merkmale
  • Vollständiger Linux-User-Space-Treiber (RF-Abstraktionsschicht) zum Erstellen von NFC-fähigen Anwendungen mit den leistungsstarken NFC-Frontends ST25R3911B/ST25R391x mit bis zu 1.4 W Ausgangsleistung
  • Linux-Host-Kommunikation mit dem ST25R3911B/ST25R391x über die SPI-Schnittstelle
  • Vollständige RF/NFC-Abstraktion (RFAL) für alle wichtigen Technologien und Protokolle höherer Schichten:
    • NFC-A (ISO14443-A)
    • NFC-B (ISO14443-B)
    • NFC-F (FeliCa™)
    • NFC-V (ISO15693)
    • P2P (ISO18092)
    • ISO-DEP (ISO-Datenaustauschprotokoll, ISO14443-4)
    • NFC-DEP (NFC-Datenaustauschprotokoll, ISO18092)
    • Proprietäre Technologien (Kovio, B', iClass, Calypso®, …)
  • Sample-Implementierung verfügbar mit der Erweiterungskarte X-NUCLEO-NFC05A1, angeschlossen an einen Raspberry Pi 4
  • Sample Anwendung zur Erkennung mehrerer NFC tag Typen und Mobiltelefone, die P2P unterstützen
  • Kostenlose benutzerfreundliche Lizenzbedingungen
Softwarearchitektur

Abbildung 2 zeigt die Softwarearchitekturdetails der RFAL-Bibliothek auf einer Linux®-Plattform.

Der RFAL ist durch Anpassung der sogenannten Plattform leicht auf andere Plattformen portierbar files.

Der Header file rfal_platform.h enthält Makrodefinitionen, die vom Plattformbesitzer bereitgestellt und implementiert werden müssen. Darüber hinaus bietet es plattformspezifische Einstellungen wie GPIO-Zuweisung, Systemressourcen, Sperren und IRQs, die für den korrekten Betrieb des RFAL erforderlich sind.

Diese Demonstration implementiert die Plattformfunktionen und stellt eine Portierung der RFAL-Bibliothek in den Benutzerbereich von Linux® bereit. Eine gemeinsame Bibliothek file generiert, das von der Demoanwendung verwendet wird, um die von der RFAL-Schicht bereitgestellten Funktionalitäten zu demonstrieren.

Der Linux®-Host verwendet die im Linux®-Benutzerbereich verfügbare sysfs-Schnittstelle, um die SPI-Kommunikation mit dem ST25R3911B-Gerät zu ermöglichen. Innerhalb des Linux®-Kernels verwendet die SPI-SYSFS-Schnittstelle den Linux®-Kernel-Treiber spidev, um SPI-Frames an/von ST25R3911B zu senden/empfangen.

Für die Verarbeitung der Interrupt-Leitung von ST25R3911B verwendet der Treiber libgpiod, um über Änderungen in dieser Leitung benachrichtigt zu werden.

Abbildung 2. RFAL-Softwarearchitektur unter Linux

Abbildung 2 RFAL-Softwarearchitektur unter Linux

Hardware-Setup

Plattform verwendet

Ein Raspberry Pi 4-Board mit Raspberry Pi OS wird als Linux-Plattform zum Aufbau einer RFAL-Bibliothek und zur Interaktion mit ST25R3911B über SPI verwendet.
ST25R3911B ermöglicht einer Anwendung auf der Linux-Plattform die Erkennung und Kommunikation mit NFC-Geräten.

Hardwareanforderungen
  • Himbeer-Pi 4
  • 8 GByte Micro-SD-Karte zum Booten des Raspberry Pi OS
  • SD-Kartenleser
  • Brückenplatine zur Verbindung von X-NUCLEO-NFC05A1 mit Raspberry Pi. Arduino-Adapter für Raspberry Pi, Teilenummer ARPI600.
  • X-NUCLEO-NFC05A1. Weitere Informationen finden Sie in den neuesten Betriebssystemanforderungen für Raspberry Pi.

Hardware-Verbindungen

Die ARPI600 Raspberry Pi-zu-Arduino-Adapterplatine dient zur Verbindung des X-NUCLEO-NFC05A1 mit dem Raspberry Pi. Es ist erforderlich, die Jumper der Adapterplatine zu ändern, um sie mit dem X-NUCLEO-NFC05A1 zu verbinden.

Vorsicht: Der ARPI600 liefert fälschlicherweise 5 V an den IOREF-Pin des Arduino. Durch direktes Anschließen des X-NUCLEO-NFC05A1 werden an einigen Pins 5 V zurückgekoppelt, wodurch die Raspberry Pi-Platine beschädigt werden kann. Es gibt insbesondere Berichte über die tatsächliche Zerstörung des Raspberry Pi 4B+. Um diese Situation zu vermeiden, passen Sie entweder den ARPI600 (ein ziemlich schwieriger Vorgang) oder den X-NUCLEO-NFC05A1 (einfacherer Vorgang) an.

Die einfachste Lösung besteht darin, den CN6.2-Pin (IOREF) am X-NUCLEO-NFC05A1 abzuschneiden, wie in Abbildung 3 dargestellt.

Das Schneiden dieses Stifts hat keinen Einfluss auf den Betrieb in Verbindung mit Nucleo-Boards (NUCLEO-L474RG, NUCLEO-F401RE, NUCLEO-8S208RB usw.).

Abbildung 3. Behebung der Hardwareverbindung

Abbildung 3 Behebung der Hardwareverbindung

Jumper-Einstellung

Die in Abbildung 5 gezeigten Jumper für A4, A3, A2, A1, A0 und A4 müssen auf P23, P22, P21 und CE1 geändert werden. Mit dieser Jumper-Einstellung wird Raspberrys GPIO-Pin Nummer 7 als Interrupt-Leitung für X-NUCLEO-NFC05A1 verwendet.

Abbildung 4. Position der Jumper A5, A4, A3, A2, A1 und A0 auf der Adapterplatine

Abbildung 4 Position der Jumper

Derzeit verwendet dieser RFAL-Bibliotheksport den Pin GPIO7 gemäß den Jumper-Einstellungen als Interrupt-Leitung. Wenn es erforderlich ist, die Interrupt-Leitung von GPIO7 auf einen anderen GPIO zu ändern, muss der plattformspezifische Code (in file pltf_gpio.h) muss geändert werden, um die Definition des Makros „ST25R_INT_PIN“ von 7 auf den neuen GPIO-Pin zu ändern, der als Interrupt-Leitung verwendet werden soll.

Mit den oben genannten Jumper-Einstellungen kann die Adapterplatine verwendet werden, um X-NUCLEO-NFC05A1 mit der Raspberry Pi-Platine zu verbinden, wie in Abbildung 5 gezeigt.

Abbildung 5. Hardware-Setup oben view

Abbildung 5 Hardware-Setup oben view

Abbildung 6. Hardware-Setup-Seite view

Abbildung 6 Hardware-Setup-Seite view

Einrichtung der Linux-Umgebung

Booten des Raspberry Pi

Um die Linux-Umgebung einzurichten, besteht der erste Schritt darin, den Raspberry Pi 4 mit Raspberry Pi OS zu installieren und zu starten, wie unten beschrieben:

Schritt 1

Laden Sie das neueste Raspberry Pi OS-Image über den Link herunter:

Wählen Sie Raspberry Pi OS mit Desktop. Für die folgenden Tests wurde die folgende Version verwendet: September 2022 (2022-09-22-raspios-bullseye-armhf.img.xz).

Schritt 2

Entpacken Sie das Raspberry Pi-Image und schreiben Sie es auf die SD-Karte, indem Sie den Anweisungen im Abschnitt „Schreiben eines Images auf die SD-Karte“ folgen.

Schritt 3

Schließen Sie die Hardware an:

  • Verbinden Sie den Raspberry Pi über ein Standard-HDMI-Kabel mit einem Monitor.
  • Schließen Sie Maus und Tastatur an die USB-Anschlüsse des Raspberry Pi an.

Es ist auch möglich, mit Raspberry Pi per SSH zu arbeiten. In diesem Fall ist es nicht erforderlich, Monitor, Tastatur und Maus mit dem Raspberry Pi zu verbinden. Die einzige Voraussetzung besteht darin, dass sich der PC mit SSH im selben Netzwerk wie der Raspberry Pi befindet und die IP-Adresse entsprechend konfiguriert wird.

Schritt 4

Starten Sie den Raspberry Pi mit der SD-Karte.

Nach dem Booten erscheint auf dem Monitor ein Debian-basierter Linux-Desktop.

Hinweis: Manchmal wird beobachtet, dass nach dem Booten des Raspberry Pi einige Tastaturtasten nicht funktionieren. Damit sie funktionieren, öffnen Sie die file /etc/default/keyboard und setzen Sie XKBLAYOUT=“us“ und starten Sie den Raspberry Pi neu.

SPI auf Raspberry Pi aktivieren

Der SPI-Treiber im Kernel kommuniziert über SPI mit X-NUCLEO-NFC05A1. Es ist wichtig zu prüfen, ob SPI in der Betriebssystem-/Kernelkonfiguration des Raspberry Pi bereits aktiviert ist.
Überprüfen Sie, ob /dev/spidev0.0 in der Raspberry Pi-Umgebung sichtbar ist. Wenn es nicht sichtbar ist, aktivieren Sie die SPI-Schnittstelle mit dem Dienstprogramm „raspi-config“, indem Sie die unten beschriebenen Schritte ausführen.

Schritt 1

Öffnen Sie ein neues Terminal auf dem Raspberry Pi und führen Sie als Root den Befehl „raspi-config“ aus:

sudo raspi-config

Dieser Schritt öffnet eine grafische Oberfläche.

Schritt 2

Wählen Sie in der grafischen Oberfläche die Option „Schnittstellenoptionen“ aus.

Schritt 3

In diesem Schritt werden verschiedene Optionen aufgeführt.
Wählen Sie die Option „SPI“.
Es erscheint ein neues Fenster mit folgendem Text:
„Möchten Sie, dass die SPI-Schnittstelle aktiviert wird?“

Schritt 4

Wählen in diesem Fenster, um SPI zu aktivieren.

Schritt 5

Starten Sie den Raspberry Pi neu.
Die oben genannten Schritte aktivieren die SPI-Schnittstelle in der Raspberry Pi-Umgebung nach einem Neustart.

Erstellung einer RFAL-Bibliothek und -Anwendung

Die RFAL-Demo von Linux wird in einem Archiv bereitgestellt. Nehmen wir an, der Name lautet:
ST25R3911B_v2.8.0_Linux_demo_v1.0.tar.xz.
Um die RFAL-Bibliothek und -Anwendung auf Raspberry Pi zu erstellen, führen Sie die folgenden Schritte aus:

Schritt 1

Entpacken Sie das Paket auf dem Raspberry Pi mit dem folgenden Befehl aus dem Home-Verzeichnis:

tar -xJvf ST25R3911B_v2.8.0_Linux_demo_v1.0.tar.xz

Schritt 2

Falls noch nicht geschehen, installieren Sie cmake mit dem folgenden Befehl:

apt-get install cmake

Das RFAL-Bibliotheks- und Anwendungserstellungssystem basiert auf cmake. Aus diesem Grund ist es erforderlich, cmake für die Kompilierung des Pakets zu installieren.

Schritt 3

Um die RFAL-Bibliothek und -Anwendung zu erstellen, wechseln Sie in das Verzeichnis „build“:

cd ST25R3911B_v2.8.0_Linux_demo_v1.0/Linux_demo/build

und führen Sie von dort aus den folgenden Befehl aus:

cmake..

Im obigen Befehl gibt „..“ an, dass CMakeLists.txt der obersten Ebene im übergeordneten Verzeichnis vorhanden ist, d. h
ST25R3911B_v2.8.0_Linux_demo_v1.0.

Der Befehl cmake erstellt das Makefile Dies wird im nächsten Schritt zum Erstellen der Bibliothek und Anwendung verwendet.

Schritt 4

Führen Sie den Befehl „make“ aus, um die RFAL-Bibliothek und -Anwendung zu erstellen:

machen

Der Befehl „make“ erstellt zunächst die RFAL-Bibliothek und baut dann darauf die Anwendung auf.

So führen Sie die Anwendung aus

Bei erfolgreicher Erstellung wird am folgenden Speicherort eine ausführbare Datei mit dem Namen „nfc_demo_st25r3911b“ generiert:
/build/applications.

Standardmäßig muss die Anwendung mit Root-Rechten unter folgendem Pfad ausgeführt werden: ST25R3911B_v2.8.0_Linux_demo_v1.0/linux_demo/build:

sudo ./demo/nfc_demo_st25r3911b

Die Anwendung beginnt mit der Abfrage nach NFC tags und Mobiltelefone. Es zeigt die gefundenen Geräte mit ihrer UID an, wie in Abbildung 7 dargestellt.

Abbildung 7. Anzeige der gefundenen Geräte

Abbildung 7 Anzeige der gefundenen Geräte

Um die Anwendung zu beenden, drücken Sie Strg + C.

Versionsgeschichte

Tabelle 1. Revisionsverlauf des Dokuments

Tabelle 1 Dokumentrevisionsverlauf

Tabellenverzeichnis

Tabelle 1. Dokumentversionsverlauf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

Abbildungsverzeichnis

Abbildung 1. RFAL-Bibliothek auf der Linux-Plattform. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Abbildung 2. RFAL-Softwarearchitektur unter Linux. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Abbildung 3. Behebung der Hardwareverbindung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Abbildung 4. Position der Jumper A5, A4, A3, A2, A1 und A0 auf der Adapterplatine. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Abbildung 5. Hardware-Setup oben view . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Abbildung 6. Hardware-Setup-Seite view . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Abbildung 7. Anzeige der gefundenen Geräte. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

WICHTIGER HINWEIS – SORGFÄLTIG LESEN

STMicroelectronics NV und seine Tochtergesellschaften („ST“) behalten sich das Recht vor, jederzeit und ohne Vorankündigung Änderungen, Korrekturen, Erweiterungen, Modifikationen und Verbesserungen an ST-Produkten und/oder diesem Dokument vorzunehmen. Käufer sollten sich vor der Bestellung die neuesten relevanten Informationen zu ST-Produkten besorgen. ST-Produkte werden gemäß den zum Zeitpunkt der Auftragsbestätigung gültigen Verkaufsbedingungen von ST verkauft.

Die alleinige Verantwortung für die Auswahl und Verwendung von ST-Produkten liegt beim Käufer. ST übernimmt keine Haftung für Anwendungsunterstützung oder das Design der Produkte des Käufers.

ST gewährt hiermit keine ausdrückliche oder stillschweigende Lizenz an geistigen Eigentumsrechten.

Der Weiterverkauf von ST-Produkten unter anderen als den hier aufgeführten Bedingungen führt zum Erlöschen jeglicher von ST für das jeweilige Produkt gewährter Garantie.

ST und das ST-Logo sind Marken von ST. Weitere Informationen zu ST-Marken finden Sie unter www.st.com/trademarks. Alle anderen Produkt- oder Servicenamen sind Eigentum ihrer jeweiligen Inhaber.

Die Informationen in diesem Dokument ersetzen alle zuvor in früheren Versionen dieses Dokuments enthaltenen Informationen.

© 2023 STMicroelectronics – Alle Rechte vorbehalten

Dokumente / Ressourcen

PDF thumbnailUM2375 Linux-Treiber
User Manual · UM2375 Linux Driver, UM2375, Linux Driver, Driver

Verweise

Eine Frage stellen

Use this section to ask about setup, compatibility, troubleshooting, or anything missing from this manual.

Eine Frage stellen

Ask about setup, compatibility, troubleshooting, or anything missing from this manual. Name and email are optional.