STMicroelectronics UM2548 Linux-Treiber-Benutzerhandbuch

STMicroelectronics UM2548 Linux Driver - Featured Image

STMicroelectronics-LogoUM2548 Linux-Treiber
Linux
® Treiber für ST25R3916/ST25R3916B
Bedienungsanleitung

UM2548 Linux-Treiber

Einführung
STSW-ST25R013 Mithilfe des Linux®-Treibers kann Raspberry Pi® 4 mit den Platinen X-NUCLEO-NFCO6A1 und X-NUCLEO-NFCO8A1 betrieben werden, die die Geräte ST25R3916 bzw. ST25R3916B enthalten.
Dieses Paket portiert die RF-Abstraktionsschicht (RFAL) auf eine Raspberry Pi 4 Linux-Plattform, um mit der Board-Firmware zu arbeiten, und bietetample Anwendung erkennt verschiedene Arten von NFC tags und Mobiltelefone, die P2P unterstützen. RFAL ist der ST-Standardtreiber für ST25R3916 und ST25R3916B, leistungsstarke NFC-Universalgeräte/EMVCo-Lesegeräte. Er wird beispielsweise von der ST25R3916-DISCO-Firmware (STSW-ST25R010) und von der X-NUCLEO-NFCO06A1-Firmware (X-CUBE-NFC6) verwendet.
STSW-ST25R013 unterstützt alle ST25R3916/ST25R3916B-Protokolle der unteren Schicht und einige Protokolle der höheren Schicht für die Kommunikation. RFAL ist portabel geschrieben, sodass es auf einer Vielzahl von Linux-basierten Geräten ausgeführt werden kann. 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 portabel und funktioniert mit geringfügigen Änderungen auf jeder Linux-Plattform.

STMicroelectronics UM2548 Linux-Treiber - Linux-Plattform

Überview

1.1 Funktionen

  • Vollständiger Linux-User-Space-Treiber (RF-Abstraktionsschicht) zum Erstellen von NFC-fähigen Anwendungen unter Verwendung der Geräte ST25R3916 und ST25R3916B
  • Linux-Host-Kommunikation mit dem ST25R3916/ST25R3916B ü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 wie Kovio, B', iClass, Calypso®
  • SampDie Implementierung ist mit den Erweiterungskarten X-NUCLEO-NFC06A1 und X-NUCLEO-NFC08A1 verfügbar, die an einen Raspberry Pi 4 angeschlossen sind.
  • Sample Anwendung zur Erkennung mehrerer NFC tag Typen und Mobiltelefone, die P2P unterstützen
  • Kostenlose benutzerfreundliche Lizenzbedingungen

1.2 Softwarearchitektur
Abbildung 2 zeigt die Details der Softwarearchitektur 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.
Es bietet 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 bietet eine Portierung des RFAL in den Benutzerbereich von Linux.
Eine gemeinsam genutzte Bibliothek file wird generiert, das von einer Demonstrationsanwendung verwendet wird, um die von der RFAL-Schicht bereitgestellten Funktionen vorzuführen.
Der Linux-Host verwendet die im Linux-Benutzerbereich verfügbare Sysfs-Schnittstelle, um die SPI-Kommunikation mit den Geräten durchzuführen. Innerhalb des Linux-Kernels verwendet die SPI-Sysfs-Schnittstelle den Linux-Kerneltreiber spidev, um die SPI-Frames an/von den Geräten zu senden/empfangen.
Zur Handhabung der INT-Leitung der Geräte ST25R3916 und ST25R3916B verwendet der Treiber das libpiod-Sysfs, um über Änderungen in dieser Leitung benachrichtigt zu werden.

STMicroelectronics UM2548 Linux-Treiber - Softwarearchitektur

Hardware-Setup

2.1 Verwendete Plattform
Eine Raspberry Pi 4-Platine mit Raspberry Pi OS wird als Linux-Plattform verwendet, um die RFAL-Bibliothek zu erstellen und über SPI mit dem ST25R3916/ST25R3916B zu interagieren.
Die Geräte ermöglichen einer Anwendung auf der Linux-Plattform, NFC-Geräte zu erkennen und mit ihnen zu kommunizieren.

2.2 Hardwareanforderungen

  • Himbeer-Pi 4
  • 8 GB Micro-SD-Karte zum Booten des Raspberry Pi-Betriebssystems (mit den neuesten Anforderungen)
  • SD-Kartenleser
  • X-NUCLEO-NFC06A1- oder X-NUCLEO-NFC08A1-Karten
  • Brücke zum Verbinden der Platine mit Raspberry Pi Arduino™-Adapter für Raspberry Pi (Teilenummer ARPI600)

2.2.1 Hardware-Anschlüsse
Der ARPI600 Raspberry Pi zu Arduino Adapter dient zum Verbinden der Boards mit dem Raspberry Pi. Um es mit den Boards X-NUCLEO-NFC06A1 oder X-NUCLEO-NFC08A1 verbinden zu können, müssen die Jumper des Adapterboards angepasst werden.
Vorsicht:
Der ARPI600 liefert fälschlicherweise 5 V an den Arduino IOREF-Pin. Durch direktes Anschließen der Platinen werden 5 V an einige Pins zurückgespeist, was die Raspberry Pi-Platine beschädigen kann. Es gibt Berichte über zerstörte Platinen (insbesondere Raspberry Pi 4B+).
Um dies zu vermeiden, passen Sie den ARPI600 (ein ziemlich schwieriger Vorgang) oder die Platine X-NUCLEO-NFC06A1/X-NUCLEONFC08A1 (einfacher) an.
Die einfachste Lösung besteht darin, den CN6.2-Pin (IOREF) auf den X-NUCLEO-NFC06A1/X-NUCLEO-NFC08A1-Platinen zu durchtrennen, wie in Abbildung 3 gezeigt.
Das Abschneiden dieses Pins hat keine Auswirkungen auf den Betrieb in Verbindung mit Nucleo-Boards (wie etwa NUCLEO-L474RG, NUCLEO-F401RE, NUCLEO-8S208RB).

STMicroelectronics UM2548 Linux-Treiber - Hardwareverbindung

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

STMicroelectronics UM2548 Linux-Treiber - Adapterplatine

Derzeit verwendet dieser RFAL-Bibliotheksport den Pin GPIO7 als Interruptleitung (entsprechend den Jumpereinstellungen). Wenn die Interruptleitung von GPIO7 auf einen anderen GPIO geändert werden muss, 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 obigen Jumpereinstellungen kann die Adapterplatine verwendet werden, um X-NUCLEO NFC06A1 und X-NUCLEO-NFC08A1 mit der Raspberry Pi-Platine zu verbinden, wie in den folgenden Abbildungen gezeigt.

STMicroelectronics UM2548 Linux-Treiber - Hardware-Setup

Einrichtung der Linux-Umgebung

3.1 Raspberry Pi booten
Um die Linux-Umgebung einzurichten, installieren und booten Sie zuerst den Raspberry Pi mit Raspberry Pi OS, wie unten erläutert:
Schritt 1
Laden Sie das neueste Raspberry Pi OS-Image herunter von https://www.raspberrypi.com, dann wählen Sie Raspberry Pi OS mit Desktop. Für die folgenden Tests wurde die Version 2022-09-22-raspios-bullseye-armhf.img.xz (September 2022) verwendet.
Schritt 2
Entpacken Sie das Raspberry Pi OS-Image und schreiben Sie es auf die SD-Karte. Folgen Sie dazu den Anweisungen im Abschnitt „Ein Image auf die SD-Karte schreiben“.
Schritt 3
Schließen Sie die Hardware an:

  • Verbinden Sie den Raspberry Pi 4 mit einem 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 über SSH zu arbeiten. In diesem Fall ist es nicht erforderlich, Monitor, Tastatur und Maus mit Raspberry Pi zu verbinden. Die einzige Voraussetzung ist, dass sich der PC mit SSH im selben Netzwerk wie Raspberry Pi befindet und die IP-Adresse entsprechend konfiguriert ist.
Schritt 4
Booten Sie den Raspberry Pi 4 mit einer SD-Karte. Nach dem Booten erscheint ein Debian-basierter Linux-Desktop auf dem Monitor.
Notiz:
Manchmal funktionieren nach dem Booten von Raspberry Pi OS einige Tasten nicht. Um sie wieder zum Laufen zu bringen, öffnen Sie das file /etc/default/keyboard und setzen Sie XKBLAYOUT=”us” und starten Sie den Raspberry Pi neu.
3.2 SPI auf Raspberry Pi aktivieren
Der SPI-Treiber im Kernel kommuniziert über SPI mit den X-NUCLEO-NFC06A1/X-NUCLEO-NFC08A1-Karten. Es ist wichtig zu prüfen, ob SPI in der Kernelkonfiguration von Raspbian Pi OS 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 den Befehl „raspi-config“ als Root 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.

Erstellen Sie eine RFAL-Bibliothek und -Anwendung

Die RFAL-Demonstration von Linux wird in einem Archiv bereitgestellt, beispielsweise ST25R3916_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 Raspberry Pi mit dem folgenden Befehl aus dem Home-Verzeichnis
tar -xJvf ST25R3916_v2.8.0_Linux_demo_v1.0.tar.xz
Schritt 2
Installieren Sie cmake (falls noch nicht geschehen) mit dem Befehl
apt-get install cmake
Die RFAL-Bibliothek und das Anwendungs-Build-System basieren auf cmake. Aus diesem Grund ist es erforderlich, cmake zu installieren, um das Paket zu kompilieren.
Schritt 3
Um die RFAL-Bibliothek und -Anwendung zu erstellen, gehen Sie in das Build-Verzeichnis
cd ST25R3916_v2.8.0_Linux_demo_v1.0/linux_demo/build
Führen Sie dort den Befehl aus
cmake..
Im obigen Befehl zeigt „..“ an, dass die Datei CMakeLists.txt der obersten Ebene im übergeordneten Verzeichnis vorhanden ist.
(ST25R3916_v2.8.0_Linux_demo_v1.0).
Dieser Befehl erzeugt das makefile wird im nächsten Schritt zum Erstellen der Bibliothek und Anwendung verwendet. Führen Sie von dort aus den folgenden Befehl aus, um die Demonstration für ST25R3916B zu erstellen
cmake -DRFAL_VARIANT=st25r3916b ..
Schritt 4
Führen Sie den Befehl „make“ aus, um die RFAL-Bibliothek und -Anwendung zu erstellen:
machen
Dieser Befehl erstellt zuerst die RFAL-Bibliothek und dann die darauf aufbauende Anwendung.

So führen Sie die Anwendung aus

Ein erfolgreicher Build generiert eine ausführbare Datei mit dem Namen „nfc_poller_st25r3916“ oder „nfc_poller_st25r3916b“ am Speicherort /build/demo.
Standardmäßig muss die Anwendung mit Root-Rechten vom Pfad ST25R3916_v2.8.0_Linux_demo_v1.0/linux_demo/build/demo/ ausgeführt werden:
sudo ./nfc_demo_st25r3916
Die Anwendung beginnt mit der Abfrage nach NFC tags und Mobiltelefone und zeigt dann die gefundenen Geräte mit ihrer UID an, wie in Abbildung 7 dargestellt.

STMicroelectronics UM2548 Linux-Treiber - gefundene Geräte

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

Versionsgeschichte
Tabelle 1. Revisionsverlauf des Dokuments

Datum Revision Änderungen
1. März 19 1 Erstveröffentlichung.
4. April 23 2 Aktualisierter Dokumenttitel, Abschnitt Einführung, Abschnitt 1.1 Funktionen,
Abschnitt 1.2 Softwarearchitektur, Abschnitt 2.1 Verwendete Plattform, Abschnitt 2.2 Hardware
Voraussetzungen, Abschnitt 2.2.1 Hardware-Anschlüsse, Abschnitt 3.1 Raspberry Pi booten,
Abschnitt 3.2 SPI auf Raspberry Pi aktivieren, Abschnitt 4 RFAL-Bibliothek und -Anwendung erstellen,
und Abschnitt 5: So führen Sie die Anwendung aus.
Aktualisierte Abbildung 1. RFAL-Bibliothek auf Linux-Plattform, Abbildung 2. RFAL-Softwarearchitektur
unter Linux und Abbildung 5. Hardware-Setup nach oben view.
Kleinere Textänderungen im gesamten Dokument.

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

UM2548 – Rev. 2

Dokumente / Ressourcen

PDF thumbnailUM2548 Linux-Treiber
User Manual · UM2548 Linux Driver, UM2548, Linux Driver, Driver

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.