Driver Linux UM2548
Linux® driver pentru ST25R3916/ST25R3916B
Manual de utilizare
Driver Linux UM2548
Introducere
STSW-ST25R013 Driverul Linux® permite Raspberry Pi® 4 să funcționeze cu plăcile X-NUCLEO-NFCO6A1 și X-NUCLEO-NFCO8A1, care conțin, respectiv, dispozitivele ST25R3916 și ST25R3916B.
Acest pachet portează stratul de abstractizare RF (RFAL) pe o platformă Linux Raspberry Pi 4, pentru a funcționa cu firmware-ul plăcii și oferă caampaplicația care detectează diferite tipuri de NFC tags și telefoane mobile care acceptă P2P. RFAL este driverul standard ST pentru ST25R3916 și ST25R3916B, dispozitive universale NFC de înaltă performanță / cititoare EMVCo. Este utilizat, de exemplu, de firmware-ul ST25R3916-DISCO (STSW-ST25R010) și de firmware-ul X-NUCLEO-NFCO06A1 (X-CUBE-NFC6).
STSW-ST25R013 acceptă toate protocoalele ST25R3916/ST25R3916B de nivel inferior și unele protocoale de nivel superior pentru comunicare. RFAL este scris într-o manieră portabilă, astfel încât să poată rula pe o gamă largă de dispozitive bazate pe Linux. Acest document descrie modul în care biblioteca RFAL poate fi utilizată pe un sistem Linux standard (în acest caz Raspberry Pi 4) pentru comunicarea NFC/RF. Codul este foarte portabil și funcționează cu modificări minore pe orice platformă Linux.

Pesteview
1.1 Caracteristici
- Driver complet pentru spațiul utilizatorului Linux (stratul de abstractizare RF) pentru a construi aplicații compatibile NFC folosind dispozitivele ST25R3916 și ST25R3916B
- Comunicare gazdă Linux cu ST25R3916/ST25R3916B utilizând interfața SPI
- Abstracție completă RF/NFC (RFAL) pentru toate tehnologiile majore și protocoalele de nivel superior:
– NFC-A (ISO14443-A)
– NFC-B (ISO14443-B)
– NFC-F (FeliCa™)
– NFC-V (ISO15693)
– P2P (ISO18092)
– ISO-DEP (protocol de schimb de date ISO, ISO14443-4)
– NFC-DEP (protocol de schimb de date NFC, ISO18092)
– Tehnologii proprietare, cum ar fi Kovio, B', iClass, Calypso® - Sampimplementare disponibilă cu plăcile de expansiune X-NUCLEO-NFC06A1 și X-NUCLEO-NFC08A1, conectate la un Raspberry Pi 4
- Sampaplicație pentru a detecta mai multe NFC tag tipuri și telefoane mobile care acceptă P2P
- Termeni gratuiti de licență ușor de utilizat
1.2 Arhitectura software
Figura 2 prezintă detaliile arhitecturii software ale bibliotecii RFAL pe o platformă Linux.
RFAL este ușor de portat pe alte platforme prin adaptarea așa-numitei platforme files.
Antetul file rfal_platform.h conține definiții macro, care urmează să fie furnizate și implementate de proprietarul platformei.
Acesta oferă setări specifice platformei, cum ar fi atribuirea GPIO, resurse de sistem, blocări și IRQ-uri, care sunt necesare pentru funcționarea corectă a RFAL.
Această demonstrație implementează funcțiile platformei și oferă un port al RFAL în spațiul utilizator al Linux.
O bibliotecă comună file este generat, care este utilizat de o aplicație demonstrativă pentru a prezenta funcționalitățile oferite de stratul RFAL.
Gazda Linux folosește interfața sysfs disponibilă din spațiul utilizatorului Linux pentru a realiza comunicarea SPI cu dispozitivele. În interiorul nucleului Linux, interfața SPI sysfs folosește driverul Linux kernel spidev pentru a trimite/primi cadrele SPI către/de la dispozitive.
Pentru a gestiona linia INT a dispozitivelor ST25R3916 și ST25R3916B, driverul folosește libpiod sysfs pentru a primi notificări cu privire la modificările pe această linie.

Configurare hardware
2.1 Platforma utilizată
O placă Raspberry Pi 4 cu sistemul de operare Raspberry Pi este folosită ca platformă Linux pentru a construi biblioteca RFAL și a interacționa cu ST25R3916/ST25R3916B prin SPI.
Dispozitivele permit unei aplicații pe platforma Linux să detecteze și să comunice cu dispozitivele NFC.
2.2 Cerințe hardware
- Raspberry Pi 4
- Card micro SD de 8 GB pentru a porni sistemul de operare Raspberry Pi (cu cele mai recente cerințe)
- Cititor de carduri SD
- plăci X-NUCLEO-NFC06A1 sau X-NUCLEO-NFC08A1
- Punte pentru conectarea plăcii cu adaptorul Raspberry Pi Arduino™ pentru Raspberry Pi (număr de piesă ARPI600)
2.2.1 Conexiuni hardware
Adaptorul ARPI600 Raspberry Pi la Arduino este folosit pentru a conecta plăcile cu Raspberry Pi. Jumperele plăcii adaptoare trebuie modificate pentru a o conecta cu plăcile X-NUCLEO-NFC06A1 sau X-NUCLEO-NFC08A1.
Atenţie:
ARPI600 furnizează incorect 5 V pinului Arduino IOREF. Atașarea directă a plăcilor alimentează 5 V pe unii pini, acest lucru poate deteriora placa Raspberry Pi. Există rapoarte de plăci distruse (în special Raspberry Pi 4B+).
Pentru a evita acest lucru, adaptați ARPI600 (o operațiune destul de dificilă) sau placa X-NUCLEO-NFC06A1/X-NUCLEONFC08A1 (mai ușoară).
Cea mai ușoară remediere este să tăiați pinul CN6.2 (IOREF) de pe plăcile X-NUCLEO-NFC06A1/X-NUCLEO-NFC08A1, așa cum se arată în Figura 3.
Tăierea acestui știft nu afectează funcționarea împreună cu plăcile Nucleo (cum ar fi NUCLEO-L474RG, NUCLEO-F401RE, NUCLEO-8S208RB).

Setare jumper
Jumperele pentru A5, A4, A3, A2, A1 și A0 prezentate în Figura 4 trebuie schimbate, respectiv, în P25, P24, P23, P22, P21 și CE1. Cu această setare, pinul GPIO numărul 7 al Raspberry este folosit ca linie de întrerupere pentru X-NUCLEONFC06A1/X-NUCLEO-NFC08A1.

În prezent, acest port de bibliotecă RFAL folosește pinul GPIO7 ca linie de întrerupere (conform setărilor jumperului). Dacă există o cerință de a schimba linia de întrerupere de la GPIO7 la un alt GPIO, codul specific platformei (în file pltf_gpio.h) trebuie modificat pentru a schimba definiția macro ST25R_INT_PIN de la 7 la noul pin GPIO, pentru a fi folosit ca linie de întrerupere.
Cu setările de jumper de mai sus, placa adaptorului poate fi utilizată pentru a conecta X-NUCLEO NFC06A1 și X-NUCLEO-NFC08A1 cu placa Raspberry Pi, așa cum se arată în figurile următoare.

Configurarea mediului Linux
3.1 Pornirea Raspberry Pi
Pentru a configura mediul Linux, mai întâi instalați și porniți Raspberry Pi cu sistemul de operare Raspberry Pi, așa cum este explicat mai jos:
Pasul 1
Descărcați cea mai recentă imagine a sistemului de operare Raspberry Pi de la https://www.raspberrypi.com, apoi alegeți sistemul de operare Raspberry Pi cu desktop. Pentru testele de mai jos a fost folosită versiunea 2022-09-22-raspios-bullseye-armhf.img.xz (septembrie 2022).
Pasul 2
Dezarhivați imaginea sistemului de operare Raspberry Pi și scrieți-o pe cardul SD urmând instrucțiunile disponibile în secțiunea numită „Scrierea unei imagini pe cardul SD”.
Pasul 3
Conectați hardware-ul:
- Conectați Raspberry Pi 4 la un monitor folosind un cablu HDMI standard.
- Conectați mouse-ul și tastatura la porturile USB ale Raspberry Pi.
De asemenea, este posibil să lucrați cu Raspberry Pi folosind ssh. În acest caz. nu este necesar să conectați monitorul, tastatura și mouse-ul cu Raspberry Pi. Singura cerință este să aveți PC-ul cu ssh în aceeași rețea ca Raspberry Pi și să configurați adresa IP în consecință.
Pasul 4
Porniți Raspberry Pi 4 cu un card SD. După pornire, pe monitor apare un desktop Linux bazat pe Debian.
Nota:
Uneori, după pornirea sistemului de operare Raspberry Pi, unele taste de la tastatură nu funcționează. Pentru a le face să funcționeze, deschideți file /etc/default/keyboard și setați XKBLAYOUT="noi", și reporniți Raspberry Pi.
3.2 Activați SPI pe Raspberry Pi
Driverul SPI din interiorul nucleului comunică cu plăcile X-NUCLEO-NFC06A1/X-NUCLEO-NFC08A1 prin SPI. Este important să verificați dacă SPI este deja activat în configurația kernel-ului Raspbian Pi OS.
Verificați dacă /dev/spidev0.0 este vizibil în mediul Raspberry Pi. Dacă nu este vizibil, activați interfața SPI folosind utilitarul „raspi-config” urmând pașii descriși mai jos.
Pasul 1
Deschideți un nou terminal pe Raspberry Pi și rulați comanda „raspi-config” ca root: sudo raspi-config
Acest pas deschide o interfață grafică.
Pasul 2
Selectați în interfața grafică opțiunea numită „Opțiuni de interfață”.
Pasul 3
Acest pas enumeră diverse opțiuni.
Selectați opțiunea numită „SPI”.
Apare o fereastră nouă cu următorul text:
„Ați dori ca interfața SPI să fie activată?”
Pasul 4
Selectați în această fereastră pentru a activa SPI.
Pasul 5
Reporniți Raspberry Pi.
Pașii de mai sus vor activa interfața SPI în mediul Raspberry Pi după o repornire.
Construiți biblioteca și aplicația RFAL
Demonstrația RFAL a Linux este furnizată într-o arhivă, cum ar fi ST25R3916_v2.8.0_Linux_demo_v1.0.tar.xz.
Pentru a construi biblioteca și aplicația RFAL pe Raspberry Pi, parcurgeți următorii pași:
Pasul 1
Dezarhivați pachetul pe Raspberry Pi utilizând următoarea comandă din directorul principal
tar -xJvf ST25R3916_v2.8.0_Linux_demo_v1.0.tar.xz
Pasul 2
Instalați cmake (dacă nu ați făcut-o înainte) folosind comanda
apt-get install cmake
Biblioteca RFAL și sistemul de construire a aplicației se bazează pe cmake, din acest motiv este necesar să instalați cmake pentru a compila pachetul.
Pasul 3
Pentru a construi biblioteca și aplicația RFAL, mergeți la directorul de compilare
cd ST25R3916_v2.8.0_Linux_demo_v1.0/linux_demo/build
De acolo, rulați comanda
face ..
În comanda de mai sus „..” indică faptul că CMakeLists.txt de nivel superior există în directorul părinte
(ST25R3916_v2.8.0_Linux_demo_v1.0).
Această comandă creează marcafile utilizat în pasul următor pentru a construi biblioteca și aplicația. De acolo, rulați următoarea comandă pentru a construi demonstrația pentru ST25R3916B
cmake -DRFAL_VARIANT=st25r3916b ..
Pasul 4
Rulați comanda make pentru a construi biblioteca și aplicația RFAL:
face
Această comandă construiește mai întâi biblioteca RFAL și apoi aplicația pe deasupra.
Cum se rulează aplicația
O compilare reușită generează un executabil numit „nfc_poller_st25r3916” sau „nfc_poller_st25r3916b” la locația /build/demo.
În mod implicit, aplicația trebuie să fie rulată cu drepturi root din calea ST25R3916_v2.8.0_Linux_demo_v1.0/linux_demo/build/demo/:
sudo ./nfc_demo_st25r3916
Aplicația începe să caute NFC tags și telefoane mobile, apoi afișează dispozitivele găsite cu UID-ul lor, așa cum se arată în Figura 7.

Pentru a închide aplicația, apăsați Ctrl + C.
Istoricul reviziilor
Tabelul 1. Istoricul revizuirilor documentului
| Data | Revizuire | Schimbări |
| 1-mar-19 | 1 | Lansare inițială. |
| 4-apr-23 | 2 | Titlul documentului actualizat, Secțiunea Introducere, Secțiunea 1.1 Caracteristici, Secțiunea 1.2 Arhitectura software, Secțiunea 2.1 Platforma utilizată, Secțiunea 2.2 Hardware cerințe, Secțiunea 2.2.1 Conexiuni hardware, Secțiune 3.1 Pornirea Raspberry Pi, Secțiunea 3.2 Activați SPI pe Raspberry Pi, Secțiunea 4 Construiți biblioteca și aplicația RFAL, și Secțiunea 5 Cum să rulați aplicația. Actualizată Figura 1. Biblioteca RFAL pe platforma Linux, Figura 2. Arhitectura software RFAL pe Linux și Figura 5. Configurarea hardware-ului de sus view. Modificări minore ale textului în întregul document. |
NOTIFICARE IMPORTANT – CITIȚI CU ATENTIE
STMicroelectronics NV și filialele sale („ST”) își rezervă dreptul de a face modificări, corecții, îmbunătățiri, modificări și îmbunătățiri produselor ST și/sau acestui document în orice moment, fără notificare. Cumpărătorii trebuie să obțină cele mai recente informații relevante despre produsele ST înainte de a plasa comenzi. Produsele ST sunt vândute în conformitate cu termenii și condițiile de vânzare ale ST în vigoare la momentul confirmării comenzii.
Cumpărătorii sunt singurii responsabili pentru alegerea, selecția și utilizarea produselor ST, iar ST nu își asumă nicio responsabilitate pentru asistența la aplicare sau proiectarea produselor cumpărătorilor.
Nicio licență, expresă sau implicită, pentru niciun drept de proprietate intelectuală nu este acordată de către ST prin prezenta.
Revânzarea produselor ST cu prevederi diferite de informațiile prezentate aici va anula orice garanție acordată de ST pentru un astfel de produs.
ST și sigla ST sunt mărci comerciale ale ST. Pentru informații suplimentare despre mărcile comerciale ST, consultați www.st.com/trademarks. Toate celelalte nume de produse sau servicii sunt proprietatea proprietarilor respectivi.
Informațiile din acest document înlocuiesc și înlocuiesc informațiile furnizate anterior în orice versiuni anterioare ale acestui document.
© 2023 STMicroelectronics – Toate drepturile rezervate
UM2548 – Rev 2
Documente/Resurse
![]() |
Driver Linux STMicroelectronics UM2548 [pdfManual de utilizare Driver Linux UM2548, UM2548, Driver Linux, Driver |




