Controlador Linux UM2548
Linux® controlador para ST25R3916/ST25R3916B
Manual de usuario
Controlador Linux UM2548
Introdución
STSW-ST25R013 O controlador Linux® permite que o Raspberry Pi® 4 funcione coas placas X-NUCLEO-NFCO6A1 e X-NUCLEO-NFCO8A1, que conteñen, respectivamente, os dispositivos ST25R3916 e ST25R3916B.
Este paquete transporta a capa de abstracción de RF (RFAL) a unha plataforma Linux Raspberry Pi 4, para operar co firmware da placa e ofrece comoampaplicación que detecta diferentes tipos de NFC tags e teléfonos móbiles compatibles con P2P. O RFAL é o controlador estándar ST para ST25R3916 e ST25R3916B, dispositivos universais NFC de alto rendemento/lectores EMVCo. Utilízase, por exemplo, polo firmware ST25R3916-DISCO (STSW-ST25R010) e polo firmware X-NUCLEO-NFCO06A1 (X-CUBE-NFC6).
STSW-ST25R013 admite todos os protocolos ST25R3916/ST25R3916B de capa inferior e algúns de capa superior para a comunicación. O RFAL está escrito de forma portátil, polo que pode executarse nunha ampla gama de dispositivos baseados en Linux. Este documento describe como se pode usar a biblioteca RFAL nun sistema Linux estándar (neste caso o Raspberry Pi 4) para a comunicación NFC/RF. O código é altamente portátil e funciona con pequenos cambios en calquera plataforma Linux.

Acabadoview
1.1 Características
- Controlador de espazo de usuario completo de Linux (capa de abstracción RF) para crear aplicacións habilitadas para NFC usando os dispositivos ST25R3916 e ST25R3916B
- Comunicación do host Linux co ST25R3916/ST25R3916B mediante a interface SPI
- Abstracción completa de RF/NFC (RFAL) para todas as tecnoloxías principais e protocolos de capa superior:
- NFC-A (ISO14443-A)
– NFC-B (ISO14443-B)
– NFC-F (FeliCa™)
- NFC-V (ISO15693)
- P2P (ISO 18092)
– ISO-DEP (protocolo de intercambio de datos ISO, ISO14443-4)
– NFC-DEP (protocolo de intercambio de datos NFC, ISO18092)
– Tecnoloxías propietarias, como Kovio, B', iClass, Calypso® - Sampa implementación dispoñible coas placas de expansión X-NUCLEO-NFC06A1 e X-NUCLEO-NFC08A1, conectadas a un Raspberry Pi 4
- Sample para detectar varios NFC tag tipos e teléfonos móbiles compatibles con P2P
- Condicións de licenza gratuítas fáciles de usar
1.2 Arquitectura do software
A Figura 2 mostra os detalles da arquitectura do software da biblioteca RFAL nunha plataforma Linux.
O RFAL é facilmente portátil a outras plataformas adaptando a chamada plataforma files.
A cabeceira file rfal_platform.h contén definicións de macros, que serán proporcionadas e implementadas polo propietario da plataforma.
Ofrece configuracións específicas da plataforma como a asignación de GPIO, recursos do sistema, bloqueos e IRQ, que son necesarios para o correcto funcionamento do RFAL.
Esta demostración implementa as funcións da plataforma e proporciona un porto do RFAL ao espazo de usuario de Linux.
Unha biblioteca compartida file xérase, que é usado por unha aplicación demostrativa para mostrar as funcionalidades proporcionadas pola capa RFAL.
O host de Linux usa a interface sysfs dispoñible no espazo de usuario de Linux para realizar a comunicación SPI cos dispositivos. Dentro do núcleo de Linux, a interface SPI sysfs usa o controlador do núcleo de Linux spidev para enviar/recibir as tramas SPI a/desde os dispositivos.
Para xestionar a liña INT dos dispositivos ST25R3916 e ST25R3916B, o controlador usa o libpiod sysfs para recibir notificacións dos cambios nesta liña.

Configuración de hardware
2.1 Plataforma utilizada
Unha placa Raspberry Pi 4 con sistema operativo Raspberry Pi úsase como plataforma Linux para construír a biblioteca RFAL e interactuar co ST25R3916/ST25R3916B a través de SPI.
Os dispositivos permiten que unha aplicación na plataforma Linux detecte e se comunique con dispositivos NFC.
2.2 Requisitos de hardware
- Raspberry Pi 4
- Tarxeta micro SD de 8 GB para iniciar o sistema operativo Raspberry Pi (cos seus últimos requisitos)
- Lector de tarxetas SD
- Placas X-NUCLEO-NFC06A1 ou X-NUCLEO-NFC08A1
- Ponte para conectar a placa co adaptador Arduino™ de Raspberry Pi para Raspberry Pi (número de peza ARPI600)
2.2.1 Conexións de hardware
O adaptador ARPI600 Raspberry Pi a Arduino úsase para conectar as placas coa Raspberry Pi. Os puentes da placa adaptadora deben modificarse para conectala coas placas X-NUCLEO-NFC06A1 ou X-NUCLEO-NFC08A1.
Atención:
O ARPI600 proporciona incorrectamente 5 V ao pin IOREF de Arduino. Ao conectar directamente as placas retroalimenta 5 V nalgúns pinos, isto pode danar a placa Raspberry Pi. Hai informes de placas destruídas (especialmente Raspberry Pi 4B+).
Para evitalo, adapta o ARPI600 (unha operación bastante difícil), ou a placa X-NUCLEO-NFC06A1/X-NUCLEONFC08A1 (máis fácil).
A solución máis sinxela é cortar o pin CN6.2 (IOREF) nas placas X-NUCLEO-NFC06A1/X-NUCLEO-NFC08A1, como se mostra na Figura 3.
O corte deste pasador non afecta o funcionamento en conxunto coas placas Nucleo (como NUCLEO-L474RG, NUCLEO-F401RE, NUCLEO-8S208RB).

Configuración do puente
Os puentes para A5, A4, A3, A2, A1 e A0 mostrados na Figura 4 deben cambiarse, respectivamente, por P25, P24, P23, P22, P21 e CE1. Con esta configuración, o pin GPIO número 7 de Raspberry úsase como liña de interrupción para X-NUCLEONFC06A1/X-NUCLEO-NFC08A1.

Actualmente, este porto de biblioteca RFAL usa o pin GPIO7 como liña de interrupción (segundo a configuración do puente). Se hai un requisito para cambiar a liña de interrupción de GPIO7 a un GPIO diferente, o código específico da plataforma (en file pltf_gpio.h) debe modificarse para cambiar a definición da macro ST25R_INT_PIN de 7 ao novo pin GPIO, que se utilizará como liña de interrupción.
Coa configuración de puente anterior, a placa adaptadora pódese usar para conectar o X-NUCLEO NFC06A1 e o X-NUCLEO-NFC08A1 coa placa Raspberry Pi, como se mostra nas seguintes figuras.

Configuración do entorno Linux
3.1 Arrancar Raspberry Pi
Para configurar o ambiente Linux, primeiro instale e inicie o Raspberry Pi con Raspberry Pi OS, como se explica a continuación:
Paso 1
Descarga a última imaxe do sistema operativo Raspberry Pi desde https://www.raspberrypi.com, despois escolle o sistema operativo Raspberry Pi con escritorio. Para as probas seguintes, utilizouse a versión 2022-09-22-raspios-bullseye-armhf.img.xz (setembro de 2022).
Paso 2
Descomprime a imaxe do sistema operativo Raspberry Pi e escríbea na tarxeta SD seguindo as instrucións dispoñibles na sección "Escribir unha imaxe na tarxeta SD".
Paso 3
Conecta o hardware:
- Conecte o Raspberry Pi 4 a un monitor usando un cable HDMI estándar.
- Conecte o rato e o teclado aos portos USB de Raspberry Pi.
Tamén é posible traballar con Raspberry Pi usando ssh. Neste caso. non é necesario conectar o monitor, o teclado e o rato con Raspberry Pi. O único requisito é ter o PC con ssh dentro da mesma rede que o Raspberry Pi e configurar o enderezo IP en consecuencia.
Paso 4
Arranque o Raspberry Pi 4 cunha tarxeta SD. Despois do arranque, aparece un escritorio Linux baseado en Debian no monitor.
Nota:
Ás veces, despois de iniciar o sistema operativo Raspberry Pi, algunhas teclas do teclado non funcionan. Para facelos funcionar, abra o file /etc/default/keyboard e configure XKBLAYOUT="us", e reinicie o Raspberry Pi.
3.2 Activar SPI en Raspberry Pi
O controlador SPI dentro do núcleo comunícase coas placas X-NUCLEO-NFC06A1/X-NUCLEO-NFC08A1 a través de SPI. É importante comprobar se SPI xa está activado na configuración do núcleo do sistema operativo Raspbian Pi.
Comproba se /dev/spidev0.0 está visible no ambiente Raspberry Pi. Se non está visible, active a interface SPI mediante a utilidade "raspi-config" seguindo os pasos descritos a continuación.
Paso 1
Abre un novo terminal no Raspberry Pi e executa o comando "raspi-config" como root: sudo raspi-config
Este paso abre unha interface gráfica.
Paso 2
Seleccione na interface gráfica a opción denominada "Opcións de interface".
Paso 3
Este paso enumera varias opcións.
Seleccione a opción chamada "SPI".
Aparece unha nova xanela co seguinte texto:
"Quere activar a interface SPI?"
Paso 4
Seleccione nesta xanela para activar SPI.
Paso 5
Reiniciar Raspberry Pi.
Os pasos anteriores habilitarán a interface SPI no ambiente Raspberry Pi despois dun reinicio.
Construír biblioteca e aplicación RFAL
A demostración RFAL de Linux ofrécese nun arquivo, como ST25R3916_v2.8.0_Linux_demo_v1.0.tar.xz.
Para crear a biblioteca e a aplicación RFAL en Raspberry Pi, siga os seguintes pasos:
Paso 1
Descomprime o paquete en Raspberry Pi usando o seguinte comando do directorio de inicio
tar -xJvf ST25R3916_v2.8.0_Linux_demo_v1.0.tar.xz
Paso 2
Instala cmake (se non se fixo antes) usando o comando
apt-get install cmake
A biblioteca RFAL e o sistema de compilación de aplicacións baséanse en cmake, por iso é necesario instalar cmake para compilar o paquete.
Paso 3
Para crear a biblioteca e a aplicación RFAL, vaia ao directorio de compilación
cd ST25R3916_v2.8.0_Linux_demo_v1.0/linux_demo/build
A partir de aí, executa o comando
facer..
No comando anterior ".." indica que CMakeLists.txt de nivel superior existe no directorio principal
(ST25R3916_v2.8.0_Linux_demo_v1.0).
Este comando crea o makefile usado no seguinte paso para construír a biblioteca e a aplicación. A partir de aí, execute o seguinte comando para crear a demostración para ST25R3916B
cmake -DRFAL_VARIANT=st25r3916b ..
Paso 4
Execute o comando make para construír a biblioteca e a aplicación RFAL:
facer
Este comando constrúe primeiro a biblioteca RFAL e despois a aplicación enriba dela.
Como executar a aplicación
Unha compilación exitosa xera un executable chamado "nfc_poller_st25r3916" ou "nfc_poller_st25r3916b" na localización /build/demo.
Por defecto, a aplicación debe executarse con dereitos de root desde a ruta ST25R3916_v2.8.0_Linux_demo_v1.0/linux_demo/build/demo/:
sudo ./nfc_demo_st25r3916
A aplicación comeza a buscar NFC tags e teléfonos móbiles, a continuación mostra os dispositivos atopados co seu UID, como se mostra na Figura 7.

Para finalizar a aplicación, prema Ctrl + C.
Historial de revisións
Táboa 1. Historial de revisións de documentos
| Data | Revisión | Cambios |
| 1-mar-19 | 1 | Lanzamento inicial. |
| 4-abr-23 | 2 | Título do documento actualizado, Sección Introdución, Sección 1.1 Características, Sección 1.2 Arquitectura de software, Sección 2.1 Plataforma utilizada, Sección 2.2 Hardware requisitos, Sección 2.2.1 Conexións de hardware, Sección 3.1 Arrancar Raspberry Pi, Sección 3.2 Activar SPI en Raspberry Pi, Sección 4 Construír biblioteca e aplicación RFAL, e Sección 5 Como executar a aplicación. Actualizada Figura 1. Biblioteca RFAL na plataforma Linux, Figura 2. Arquitectura do software RFAL en Linux, e Figura 5. Configuración de hardware superior view. Pequenas edicións de texto en todo o documento. |
AVISO IMPORTANTE - LEA ATENTAMENTE
STMicroelectronics NV e as súas subsidiarias (“ST”) resérvanse o dereito de realizar cambios, correccións, melloras, modificacións e melloras nos produtos ST e/ou neste documento en calquera momento sen previo aviso. Os compradores deben obter a información relevante máis recente sobre produtos ST antes de facer pedidos. Os produtos ST véndense de acordo cos termos e condicións de venda de ST existentes no momento do recoñecemento da orde.
Os compradores son os únicos responsables da elección, selección e uso dos produtos ST e ST non asume ningunha responsabilidade pola asistencia á aplicación ou o deseño dos produtos dos compradores.
ST non concede ningunha licenza, expresa ou implícita, a ningún dereito de propiedade intelectual.
A revenda de produtos ST con disposicións diferentes da información aquí establecida anulará calquera garantía concedida por ST para tal produto.
ST e o logotipo de ST son marcas comerciais de ST. Para obter información adicional sobre as marcas rexistradas ST, consulte www.st.com/trademarks. Todos os outros nomes de produtos ou servizos son propiedade dos seus respectivos propietarios.
A información deste documento substitúe e substitúe a información proporcionada anteriormente en calquera versión anterior deste documento.
© 2023 STMicroelectronics – Todos os dereitos reservados
UM2548 - Rev 2
Documentos/Recursos
![]() |
Controlador Linux STMicroelectronics UM2548 [pdfManual do usuario Controlador UM2548 Linux, UM2548, Controlador Linux, Controlador |




