
Manuale dell'utente del driver Linux STMicroelectronics UM2375

Driver Linux® per i frontend NFC ad alte prestazioni ST25R3911B e ST25R3912/14/15
Introduzione
Il driver Linux® STSW-ST25R009 consente a Raspberry Pi 4 di funzionare con X-NUCLEO-NFC05A1, che contiene il dispositivo universale NFC ad alte prestazioni ST25R3911B.
Questo pacchetto porta lo strato di astrazione RF (RFAL) su una piattaforma Linux Raspberry Pi 4 per operare con il firmware X-NUCLEO-NFC05A1. Il pacchetto prevede comeample applicazione che rileva diversi tipi di NFC tags e telefoni cellulari che supportano il P2P. RFAL è il driver standard ST per i circuiti integrati per lettori NFC/RFID ST25R ST25R3911B, ST25R3912, ST25R3913, ST25R3914 e ST25R3915. Viene utilizzato, ad esempio, dal firmware ST25R3911B-DISCO (STSW-ST25R002) e dal firmware X-NUCLEONFC05A1 (X-CUBE-NFC5).
STSW-ST25R009 supporta tutti i protocolli di livello inferiore ST25R3911B e anche alcuni protocolli di livello superiore per la comunicazione. RFAL è scritto in modo portabile, quindi può essere eseguito su un'ampia gamma di dispositivi basati su Linux®. Questo documento descrive come la libreria RFAL può essere utilizzata su un sistema Linux standard (in questo caso il Raspberry Pi 4) per la comunicazione NFC/RF. Il codice è altamente portabile e funziona con piccole modifiche su qualsiasi piattaforma Linux.
Figura 1. Libreria RFAL su piattaforma Linux

Sopraview
Caratteristiche
- Driver per spazio utente Linux completo (strato di astrazione RF) per creare applicazioni abilitate NFC utilizzando i front-end NFC ad alte prestazioni ST25R3911B/ST25R391x con potenza di uscita fino a 1.4 W
- Comunicazione host Linux con ST25R3911B/ST25R391x tramite interfaccia SPI
- Astrazione RF/NFC completa (RFAL) per tutte le principali tecnologie e protocolli di livello superiore:
- NFC-A (ISO14443-A)
- NFC-B (ISO14443-B)
- NFC-F (FeliCa™)
- NFC-V (ISO15693)
- P2P (ISO18092)
- ISO-DEP (protocollo di scambio dati ISO, ISO14443-4)
- NFC-DEP (protocollo di scambio dati NFC, ISO18092)
- Tecnologie proprietarie (Kovio, B', iClass, Calypso®, …)
- Sample implementazione disponibile con la scheda di espansione X-NUCLEO-NFC05A1, inserita in un Raspberry Pi 4
- Sample applicazione per rilevare diversi NFC tag tipi e telefoni cellulari che supportano P2P
- Termini di licenza gratuiti facili da usare
Architettura software
La Figura 2 mostra i dettagli dell'architettura software della libreria RFAL su una piattaforma Linux®.
L'RFAL è facilmente trasferibile su altre piattaforme adattando la cosiddetta piattaforma files.
L'intestazione file rfal_platform.h contiene definizioni di macro, che devono essere fornite e implementate dal proprietario della piattaforma. Inoltre, fornisce impostazioni specifiche della piattaforma come assegnazione GPIO, risorse di sistema, blocchi e IRQ, necessari per il corretto funzionamento di RFAL.
Questa dimostrazione implementa le funzioni della piattaforma e fornisce un porting della libreria RFAL nello spazio utente di Linux®. Una libreria condivisa file viene generato, che viene utilizzato dall'applicazione demo per mostrare le funzionalità fornite dal livello RFAL.
L'host Linux® utilizza l'interfaccia sysfs disponibile nello spazio utente Linux® per abilitare la comunicazione SPI con il dispositivo ST25R3911B. All'interno del kernel Linux® l'interfaccia SPI sysfs utilizza il driver del kernel Linux® spidev per inviare/ricevere frame SPI a/da ST25R3911B.
Per gestire la riga di interruzione di ST25R3911B, il driver utilizza libgpiod per ricevere notifica delle modifiche su questa riga.
Figura 2. Architettura del software RFAL su Linux

Configurazione hardware
Piattaforma utilizzata
Una scheda Raspberry Pi 4 con sistema operativo Raspberry Pi viene utilizzata come piattaforma Linux per creare la libreria RFAL e interagire con ST25R3911B tramite SPI.
ST25R3911B consente a un'applicazione su piattaforma Linux di rilevare e comunicare con i dispositivi NFC.
Requisiti hardware
- Raspberry Pi 4
- Scheda micro SD da 8 GBytes per avviare il sistema operativo Raspberry Pi
- Lettore di schede SD
- Scheda bridge per connettere X-NUCLEO-NFC05A1 con l'adattatore Raspberry Pi Arduino per Raspberry Pi, numero parte ARPI600.
- X-NUCLEO-NFC05A1. Fare riferimento agli ultimi requisiti del sistema operativo Raspberry Pi.
Collegamenti hardware
La scheda adattatore ARPI600 da Raspberry Pi ad Arduino viene utilizzata per collegare X-NUCLEO-NFC05A1 con Raspberry Pi. È necessario modificare i ponticelli della scheda adattatore per collegarlo con X-NUCLEO-NFC05A1.
Attenzione: L'ARPI600 fornisce erroneamente 5 V al pin Arduino IOREF. Il collegamento diretto di X-NUCLEO-NFC05A1 restituisce 5 V su alcuni pin, ciò potrebbe danneggiare la scheda Raspberry Pi. Ci sono segnalazioni in particolare di Raspberry Pi 4B+ effettivamente distrutto. Per evitare questa situazione adattare l'ARPI600 (un'operazione piuttosto difficile) o l'X-NUCLEO-NFC05A1 (operazione più semplice).
La soluzione più semplice consiste nel tagliare il pin CN6.2 (IOREF) su X-NUCLEO-NFC05A1 come mostrato nella Figura 3.
Il taglio di questo pin non influisce sul funzionamento in combinazione con le schede Nucleo (NUCLEO-L474RG, NUCLEO-F401RE, NUCLEO-8S208RB, ecc.).
Figura 3. Correzione della connessione hardware

Impostazione del ponticello
I ponticelli per A5, A4, A3, A2, A1 e A0 mostrati nella Figura 4 devono essere cambiati in P23, P22, P21 e CE1. Con queste impostazioni del ponticello, il pin GPIO numero 7 di Raspberry viene utilizzato come linea di interruzione per X-NUCLEO-NFC05A1.
Figura 4. Posizione dei ponticelli A5, A4, A3, A2, A1 e A0 sulla scheda adattatore

Attualmente, questa porta della libreria RFAL utilizza il pin GPIO7 come linea di interruzione, in base alle impostazioni del jumper. Se è necessario modificare la riga di interruzione da GPIO7 a un altro GPIO, il codice specifico della piattaforma (in file pltf_gpio.h) deve essere modificato per cambiare la definizione della macro “ST25R_INT_PIN” da 7 al nuovo pin GPIO, da utilizzare come linea di interrupt.
Con le suddette impostazioni dei jumper, la scheda adattatore può essere utilizzata per collegare X-NUCLEO-NFC05A1 con la scheda Raspberry Pi come mostrato nella Figura 5.
Figura 5. Installazione dell'hardware in alto view

Figura 6. Lato configurazione hardware view

Configurazione dell'ambiente Linux
Avvio di Raspberry Pi
Per configurare l'ambiente Linux, il primo passo è installare e avviare Raspberry Pi 4 con il sistema operativo Raspberry Pi come spiegato di seguito:
Passo 1
Scarica l'ultima immagine del sistema operativo Raspberry Pi dal link:
Scegli il sistema operativo Raspberry Pi con desktop. Per i test seguenti è stata utilizzata la seguente versione: settembre 2022 (2022-09-22-raspios-bullseye-armhf.img.xz).
Passo 2
Decomprimi l'immagine Raspberry Pi e scrivila nella scheda SD seguendo le istruzioni disponibili nella sezione denominata "Scrittura di un'immagine sulla scheda SD".
Passo 3
Collegare l'hardware:
- Collega il Raspberry Pi a un monitor utilizzando un cavo HDMI standard.
- Collega mouse e tastiera alle porte USB di Raspberry Pi.
È anche possibile lavorare con Raspberry Pi usando ssh. In tal caso non è necessario collegare il monitor, la tastiera e il mouse con Raspberry Pi. L'unico requisito è avere il PC con ssh all'interno della stessa rete del Raspberry Pi e configurare l'indirizzo IP di conseguenza.
Passo 4
Avvia il Raspberry Pi con la scheda SD.
Dopo l'avvio, sul monitor appare un desktop Linux basato su Debian.
Nota: a volte, si osserva che dopo l'avvio di Raspberry Pi, alcuni tasti della tastiera non funzionano. Per farli funzionare, apri il file file /etc/default/keyboard e imposta XKBLAYOUT=”us” e riavvia il Raspberry Pi.
Abilita SPI su Raspberry Pi
Il driver SPI all'interno del kernel comunica con X-NUCLEO-NFC05A1 tramite SPI. È importante verificare se SPI è già abilitato nella configurazione del sistema operativo/kernel Raspberry Pi.
Controlla se /dev/spidev0.0 è visibile nell'ambiente Raspberry Pi. Se non è visibile, abilitare l'interfaccia SPI utilizzando l'utilità "raspi-config" seguendo i passaggi descritti di seguito.
Passo 1
Apri un nuovo terminale sul Raspberry Pi ed esegui il comando "raspi-config" come root:
sudo raspi-config
Questo passaggio apre un'interfaccia grafica.
Passo 2
Selezionare nell'interfaccia grafica l'opzione denominata "Opzioni di interfacciamento".
Passo 3
Questo passaggio elenca varie opzioni.
Selezionare l'opzione denominata "SPI".
Viene visualizzata una nuova finestra con il seguente testo:
"Vuoi abilitare l'interfaccia SPI?"
Passo 4
Selezionare in questa finestra per abilitare SPI.
Passo 5
Riavvia Raspberry Pi.
I passaggi precedenti abiliteranno l'interfaccia SPI nell'ambiente Raspberry Pi dopo un riavvio.
Realizzazione della libreria e dell'applicazione RFAL
La demo RFAL di Linux è fornita in un archivio. Supponiamo che il suo nome sia:
ST25R3911B_v2.8.0_Linux_demo_v1.0.tar.xz.
Per creare la libreria e l'applicazione RFAL su Raspberry Pi, attenersi alla seguente procedura:
Passo 1
Decomprimi il pacchetto su Raspberry Pi usando il comando seguente dalla home directory:
tar -xJvf ST25R3911B_v2.8.0_Linux_demo_v1.0.tar.xz
Passo 2
Se non l'hai fatto prima, installa cmake, usando il comando seguente:
apt-get installa cmake
Il sistema di compilazione della libreria e dell'applicazione RFAL è basato su cmake, per questo motivo è necessario installare cmake per la compilazione del pacchetto.
Passo 3
Per creare la libreria e l'applicazione RFAL, vai alla directory "build":
cd ST25R3911B_v2.8.0_Linux_demo_v1.0/Linux_demo/build
ed esegui il comando seguente da lì:
fare ..
Nel comando precedente ".." indica che CMakeLists.txt esiste nella directory principale, ad es
ST25R3911B_v2.8.0_Linux_demo_v1.0.
Il comando cmake crea il makefile utilizzato nel passaggio successivo per creare la libreria e l'applicazione.
Passo 4
Eseguire il comando "make" per creare la libreria e l'applicazione RFAL:
Fare
Il comando "make" crea prima la libreria RFAL e quindi crea l'applicazione su di essa.
Come eseguire l'applicazione
La compilazione riuscita genera un eseguibile denominato "nfc_demo_st25r3911b" nella seguente posizione:
/build/applicazioni.
Per impostazione predefinita, l'applicazione deve essere eseguita con i diritti di root dal percorso: ST25R3911B_v2.8.0_Linux_demo_v1.0/linux_demo/build:
sudo ./demo/nfc_demo_st25r3911b
L'applicazione avvia il polling per NFC tags e telefoni cellulari. Visualizza i dispositivi trovati con il loro UID come mostrato nella Figura 7.
Figura 7. Visualizzazione dei dispositivi trovati

Per terminare l'applicazione premere Ctrl + C.
Cronologia delle revisioni
Tabella 1. Cronologia delle revisioni del documento

Elenco delle tabelle
Tabella 1. Cronologia delle revisioni del documento. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Elenco delle figure
Figura 1. Libreria RFAL su piattaforma Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Figura 2. Architettura del software RFAL su Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Figura 3. Correzione della connessione hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Figura 4. Posizione dei ponticelli A5, A4, A3, A2, A1 e A0 sulla scheda adattatore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Figura 5. Installazione dell'hardware in alto view . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Figura 6. Lato configurazione hardware view . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Figura 7. Visualizzazione dei dispositivi trovati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
AVVISO IMPORTANTE – LEGGERE ATTENTAMENTE
STMicroelectronics NV e le sue consociate ("ST") si riservano il diritto di apportare modifiche, correzioni, miglioramenti, migliorie e migliorie ai prodotti ST e/o al presente documento in qualsiasi momento e senza preavviso. Gli acquirenti devono ottenere le ultime informazioni rilevanti sui prodotti ST prima di effettuare ordini. I prodotti ST sono venduti in conformità ai termini e alle condizioni di vendita di ST in vigore al momento della conferma dell'ordine.
Gli acquirenti sono gli unici responsabili della scelta, della selezione e dell'uso dei prodotti ST e ST non si assume alcuna responsabilità per l'assistenza applicativa o la progettazione dei prodotti degli acquirenti.
Nel presente documento ST non concede alcuna licenza, espressa o implicita, su alcun diritto di proprietà intellettuale.
La rivendita di prodotti ST con disposizioni diverse dalle informazioni qui stabilite invaliderà qualsiasi garanzia concessa da ST per tale prodotto.
ST e il logo ST sono marchi di ST. Per ulteriori informazioni sui marchi ST, fare riferimento a www.st.com/trademarksTutti gli altri nomi di prodotti o servizi sono di proprietà dei rispettivi proprietari.
Le informazioni contenute nel presente documento annullano e sostituiscono le informazioni fornite in precedenza in qualsiasi versione precedente del documento.
© 2023 STMicroelectronics – Tutti i diritti riservati
Documenti / Risorse
![]() | Driver Linux UM2375 |
Riferimenti
- www.raspberrypi.comwww.raspberrypi.com
- st. comwww.st.com
- st.com/trademarkswww.st.com
- Manuale d'usomanual.tools
