
Driver Linux UM2548
Linux® driver per ST25R3916/ST25R3916B
Manuale d'uso
Driver Linux UM2548
Introduzione
STSW-ST25R013 Il driver Linux® consente a Raspberry Pi® 4 di funzionare con le schede X-NUCLEO-NFCO6A1 e X-NUCLEO-NFCO8A1, che contengono, rispettivamente, i dispositivi ST25R3916 e ST25R3916B.
Questo pacchetto porta lo strato di astrazione RF (RFAL) su una piattaforma Linux Raspberry Pi 4, per operare con il firmware della scheda, e fornisce comeample applicazione che rileva diversi tipi di NFC tags e telefoni cellulari che supportano il P2P. RFAL è il driver standard ST per ST25R3916 e ST25R3916B, dispositivi universali NFC ad alte prestazioni / lettori EMVCo. Viene utilizzato, ad esempio, dal firmware ST25R3916-DISCO (STSW-ST25R010) e dal firmware X-NUCLEO-NFCO06A1 (X-CUBE-NFC6).
STSW-ST25R013 supporta tutti i protocolli di livello inferiore ST25R3916/ST25R3916B e alcuni 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.

Sopraview
1.1 Caratteristiche
- Driver per spazio utente Linux completo (strato di astrazione RF) per creare applicazioni abilitate NFC utilizzando i dispositivi ST25R3916 e ST25R3916B
- Comunicazione host Linux con ST25R3916/ST25R3916B 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, come Kovio, B', iClass, Calypso® - Sample implementazione disponibile con le schede di espansione X-NUCLEO-NFC06A1 e X-NUCLEO-NFC08A1, inserite 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
1.2 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.
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 di RFAL nello spazio utente di Linux.
Una libreria condivisa file viene generato, che viene utilizzato da un'applicazione dimostrativa per mostrare le funzionalità fornite dal livello RFAL.
L'host Linux utilizza l'interfaccia sysfs disponibile dallo spazio utente Linux per eseguire la comunicazione SPI con i dispositivi. All'interno del kernel Linux l'interfaccia SPI sysfs utilizza il driver del kernel Linux spidev per inviare/ricevere i frame SPI da/verso i dispositivi.
Per la gestione della riga INT dei dispositivi ST25R3916 e ST25R3916B, il driver utilizza libpiod sysfs per ricevere notifica delle modifiche su questa riga.

Configurazione hardware
2.1 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 ST25R3916/ST25R3916B tramite SPI.
I dispositivi consentono a un'applicazione su piattaforma Linux di rilevare e comunicare con i dispositivi NFC.
2.2 Requisiti hardware
- Raspberry Pi 4
- Scheda micro SD da 8 GB per avviare il sistema operativo Raspberry Pi (con i suoi ultimi requisiti)
- Lettore di schede SD
- Schede X-NUCLEO-NFC06A1 o X-NUCLEO-NFC08A1
- Bridge per connettere la scheda con l'adattatore Raspberry Pi Arduino™ per Raspberry Pi (numero di parte ARPI600)
2.2.1 Collegamenti hardware
L'adattatore ARPI600 da Raspberry Pi ad Arduino viene utilizzato per collegare le schede con il Raspberry Pi. I jumper della scheda adattatore devono essere modificati per collegarla alle schede X-NUCLEO-NFC06A1 o X-NUCLEO-NFC08A1.
Attenzione:
L'ARPI600 fornisce erroneamente 5 V al pin Arduino IOREF. Il collegamento diretto delle schede restituisce 5 V su alcuni pin, questo può danneggiare la scheda Raspberry Pi. Ci sono segnalazioni di schede distrutte (soprattutto Raspberry Pi 4B+).
Per evitare ciò, adattare l'ARPI600 (operazione piuttosto difficile), o la scheda X-NUCLEO-NFC06A1/X-NUCLEOONFC08A1 (più semplice).
La soluzione più semplice consiste nel tagliare il pin CN6.2 (IOREF) sulle schede X-NUCLEO-NFC06A1/X-NUCLEO-NFC08A1, come mostrato nella Figura 3.
Il taglio di questo pin non influisce sul funzionamento in combinazione con le schede Nucleo (come NUCLEO-L474RG, NUCLEO-F401RE, NUCLEO-8S208RB).

Impostazione del ponticello
I ponticelli per A5, A4, A3, A2, A1 e A0 mostrati in Figura 4 devono essere modificati, rispettivamente, in P25, P24, P23, P22, P21 e CE1. Con questa impostazione, il pin GPIO numero 7 di Raspberry viene utilizzato come linea di interrupt per X-NUCLEO-NFC06A1/X-NUCLEO-NFC08A1.

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 NFC06A1 e X-NUCLEO-NFC08A1 con la scheda Raspberry Pi, come mostrato nelle figure seguenti.

Configurazione dell'ambiente Linux
3.1 Avvio di Raspberry Pi
Per configurare l'ambiente Linux, prima installa e avvia Raspberry Pi con il sistema operativo Raspberry Pi, come spiegato di seguito:
Passo 1
Scarica l'ultima immagine del sistema operativo Raspberry Pi da https://www.raspberrypi.com, quindi scegli Sistema operativo Raspberry Pi con desktop. Per i test di seguito è stata utilizzata la versione 2022-09-22-raspios-bullseye-armhf.img.xz (settembre 2022).
Passo 2
Decomprimi l'immagine del sistema operativo Raspberry Pi e scrivila sulla 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 4 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 questo 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 4 con una scheda SD. Dopo l'avvio, sul monitor appare un desktop Linux basato su Debian.
Nota:
A volte, dopo aver avviato il sistema operativo 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.
3.2 Abilita SPI su Raspberry Pi
Il driver SPI all'interno del kernel comunica con le schede X-NUCLEO-NFC06A1/X-NUCLEO-NFC08A1 tramite SPI. È importante verificare se SPI è già abilitato nella configurazione del kernel del sistema operativo Raspbian 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.
Costruisci la libreria e l'applicazione RFAL
La dimostrazione RFAL di Linux è fornita in un archivio, come ST25R3916_v2.8.0_Linux_demo_v1.0.tar.xz.
Per creare la libreria e l'applicazione RFAL su Raspberry Pi, procedi nel seguente modo:
Passo 1
Decomprimi il pacchetto su Raspberry Pi usando il seguente comando dalla home directory
tar -xJvf ST25R3916_v2.8.0_Linux_demo_v1.0.tar.xz
Passo 2
Installa cmake (se non l'hai fatto prima) usando il comando
apt-get installa cmake
La libreria RFAL e il sistema di compilazione dell'applicazione sono basati su cmake, per questo motivo è necessario installare cmake per compilare il pacchetto.
Passo 3
Per creare la libreria e l'applicazione RFAL, vai alla directory build
cd ST25R3916_v2.8.0_Linux_demo_v1.0/linux_demo/build
Da lì, esegui il comando
fare ..
Nel comando precedente ".." indica che CMakeLists.txt di livello superiore esiste nella directory principale
(ST25R3916_v2.8.0_Linux_demo_v1.0).
Questo comando crea il makefile utilizzato nel passaggio successivo per creare la libreria e l'applicazione. Da lì, esegui il comando seguente per creare la dimostrazione per ST25R3916B
cmake -DRFAL_VARIANT=st25r3916b ..
Passo 4
Eseguire il comando make per creare la libreria e l'applicazione RFAL:
Fare
Questo comando crea prima la libreria RFAL e quindi l'applicazione su di essa.
Come eseguire l'applicazione
Una creazione riuscita genera un eseguibile denominato "nfc_poller_st25r3916" o "nfc_poller_st25r3916b" nella posizione /build/demo.
Per impostazione predefinita, l'applicazione deve essere eseguita con i diritti di root dal percorso ST25R3916_v2.8.0_Linux_demo_v1.0/linux_demo/build/demo/:
sudo ./nfc_demo_st25r3916
L'applicazione avvia il polling per NFC tags e telefoni cellulari, quindi visualizza i dispositivi trovati con il loro UID, come mostrato nella Figura 7.

Per terminare l'applicazione premere Ctrl + C.
Cronologia delle revisioni
Tabella 1. Cronologia delle revisioni del documento
| Data | Revisione | Cambiamenti |
| 1-mar-19 | 1 | Versione iniziale. |
| 4-Apr-23 | 2 | Titolo del documento aggiornato, Sezione Introduzione, Sezione 1.1 Funzionalità, Sezione 1.2 Architettura software, Sezione 2.1 Piattaforma utilizzata, Sezione 2.2 Hardware requisiti, Sezione 2.2.1 Connessioni hardware, Sezione 3.1 Avvio di Raspberry Pi, Sezione 3.2 Abilita SPI su Raspberry Pi, Sezione 4 Crea libreria e applicazione RFAL, e Sezione 5 Come eseguire l'applicazione. Aggiornata Figura 1. Libreria RFAL su piattaforma Linux, Figura 2. Architettura del software RFAL su Linux e Figura 5. Installazione dell'hardware in alto view. Piccole modifiche al testo in tutto il documento. |
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
UM2548 – Rev. 2
Documenti / Risorse
![]() | Driver Linux UM2548 |
Riferimenti
- www.raspberrypi.comwww.raspberrypi.com
- st. comwww.st.com
- st.com/trademarkswww.st.com
- st.com/en/product/stsw-st25r013?ecmp=tt9470_gl_link_feb2019&rt=um&id=UM2548www.st.com
- Manuale d'usomanual.tools
