STMicroelectronics UM2375 Linux Driver Manual de utilizare

Logo STMicroelectronics

Driver Linux® pentru frontend-urile NFC de înaltă performanță ST25R3911B și ST25R3912/14/15

Introducere

Driverul STSW-ST25R009 Linux® permite Raspberry Pi 4 să funcționeze cu X-NUCLEO-NFC05A1, care conține dispozitivul universal NFC de înaltă performanță ST25R3911B.

Acest pachet portează stratul de abstractizare RF (RFAL) pe o platformă Linux Raspberry Pi 4 pentru a funcționa cu firmware-ul X-NUCLEO-NFC05A1. Pachetul prevede caampaplicația care detectează diferite tipuri de NFC tags și telefoane mobile care acceptă P2P. RFAL este driverul standard ST pentru CI cititoare ST25R NFC/RFID ST25R3911B, ST25R3912, ST25R3913, ST25R3914 și ST25R3915. Este utilizat, de exemplu, de firmware-ul ST25R3911B-DISCO (STSW-ST25R002) și de firmware-ul X-NUCLEONFC05A1 (X-CUBE-NFC5).

STSW-ST25R009 acceptă toate protocoalele de nivel inferior ST25R3911B și, de asemenea, 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.

Figura 1. Biblioteca RFAL pe platforma Linux

Figura 1 Biblioteca RFAL pe platforma Linux

Pesteview

Caracteristici
  • Driver complet pentru spațiul utilizatorului Linux (stratul de abstractizare RF) pentru a construi aplicații compatibile NFC utilizând frontend-urile NFC de înaltă performanță ST25R3911B/ST25R391x cu o putere de ieșire de până la 1.4 W
  • Comunicarea gazdă Linux cu ST25R3911B/ST25R391x 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 (Kovio, B', iClass, Calypso®, …)
  • Sampimplementare disponibilă cu placa de expansiune X-NUCLEO-NFC05A1, conectată 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
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 trebuie furnizate și implementate de proprietarul platformei. În plus, 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 bibliotecii RFAL în spațiul utilizator al Linux®. O bibliotecă comună file este generat, care este folosit de aplicația demo 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 permite comunicarea SPI cu dispozitivul ST25R3911B. În interiorul nucleului Linux®, interfața SPI sysfs folosește driverul de kernel Linux® spidev pentru a trimite/primi cadre SPI către/de la ST25R3911B.

Pentru a gestiona linia de întrerupere a ST25R3911B, driverul folosește libgpiod pentru a primi notificări cu privire la modificările pe această linie.

Figura 2. Arhitectura software RFAL pe Linux

Figura 2 Arhitectura software RFAL pe Linux

Configurare hardware

Platforma folosita

O placă Raspberry Pi 4 cu sistemul de operare Raspberry Pi este folosită ca platformă Linux pentru a construi o bibliotecă RFAL și a interacționa cu ST25R3911B prin SPI.
ST25R3911B permite unei aplicații pe platforma Linux să detecteze și să comunice cu dispozitivele NFC.

Cerințe hardware
  • Raspberry Pi 4
  • Card micro SD de 8 GB pentru a porni sistemul de operare Raspberry Pi
  • Cititor de carduri SD
  • Placă bridge pentru conectarea X-NUCLEO-NFC05A1 cu adaptorul Arduino Raspberry Pi pentru Raspberry Pi, număr de piesă ARPI600.
  • X-NUCLEO-NFC05A1. Consultați cele mai recente cerințe ale sistemului de operare Raspberry Pi.

Conexiunile hardware

Placa adaptorului ARPI600 Raspberry Pi la Arduino este folosită pentru a conecta X-NUCLEO-NFC05A1 cu Raspberry Pi. Este necesar să modificați jumperii plăcii adaptoare pentru a o conecta la X-NUCLEO-NFC05A1.

Atenţie: ARPI600 furnizează incorect 5 V pinului Arduino IOREF. Atașarea directă a X-NUCLEO-NFC05A1 alimentează 5 V pe unii pini, acest lucru poate deteriora placa Raspberry Pi. Există rapoarte în special despre Raspberry Pi 4B+ care a fost efectiv distrus. Pentru a evita această situație, adaptați fie ARPI600 (o operare destul de dificilă), fie X-NUCLEO-NFC05A1 (operare mai ușoară).

Cea mai ușoară remediere este să tăiați pinul CN6.2 (IOREF) de pe X-NUCLEO-NFC05A1, așa cum se arată în Figura 3.

Tăierea acestui știft nu afectează funcționarea împreună cu plăcile Nucleo (NUCLEO-L474RG, NUCLEO-F401RE, NUCLEO-8S208RB etc.).

Figura 3. Remedierea conexiunii hardware

Figura 3 Remedierea conexiunii hardware

Setare jumper

Jumperele pentru A5, A4, A3, A2, A1 și A0 prezentate în Figura 4 trebuie schimbate în P23, P22, P21 și CE1. Cu aceste setări de jumper, pinul GPIO numărul 7 al lui Raspberry este folosit ca linie de întrerupere pentru X-NUCLEO-NFC05A1.

Figura 4. Poziția jumperilor A5, A4, A3, A2, A1 și A0 pe placa adaptorului

Figura 4 Poziția jumperilor

În prezent, acest port de bibliotecă RFAL utilizează pinul GPIO7 ca linie de întrerupere, conform setărilor jumper-ului. 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-NFC05A1 cu placa Raspberry Pi, așa cum se arată în Figura 5.

Figura 5. Configurarea hardware-ului de sus view

Figura 5 Configurarea hardware-ului de sus view

Figura 6. Partea de configurare hardware view

Figura 6 Partea de configurare hardware view

Configurarea mediului Linux

Pornirea Raspberry Pi

Pentru a configura mediul Linux, primul pas este să instalați și să porniți Raspberry Pi 4 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 pe link:

Alegeți sistemul de operare Raspberry Pi cu desktop. Pentru testele de mai jos a fost folosită următoarea versiune: septembrie 2022 (2022-09-22-raspios-bullseye-armhf.img.xz).

Pasul 2

Dezarhivați imaginea 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 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 cu Raspberry Pi și să configurați adresa IP în consecință.

Pasul 4

Porniți Raspberry Pi cu un card SD.

După pornire, pe monitor apare un desktop Linux bazat pe Debian.

Notă: Uneori, se observă că după pornirea 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.

Activați SPI pe Raspberry Pi

Driverul SPI din interiorul nucleului comunică cu X-NUCLEO-NFC05A1 prin SPI. Este important să verificați dacă SPI este deja activat în configurația Raspberry Pi OS/kernel.
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.

Construirea bibliotecii și a aplicației RFAL

Demo-ul RFAL de Linux este furnizat într-o arhivă. Să presupunem că numele lui este:
ST25R3911B_v2.8.0_Linux_demo_v1.0.tar.xz.
Pentru a construi biblioteca și aplicația RFAL pe Raspberry Pi, urmați pașii de mai jos:

Pasul 1

Dezarhivați pachetul de pe Raspberry Pi folosind comanda de mai jos din directorul principal:

tar -xJvf ST25R3911B_v2.8.0_Linux_demo_v1.0.tar.xz

Pasul 2

Dacă nu ați făcut-o înainte, instalați cmake, folosind comanda de mai jos:

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 compilarea pachetului.

Pasul 3

Pentru a construi biblioteca și aplicația RFAL, mergeți la directorul „build”:

cd ST25R3911B_v2.8.0_Linux_demo_v1.0/Linux_demo/build

și rulați comanda de mai jos de acolo:

face ..

În comanda de mai sus „..” indică faptul că CMakeLists.txt de nivel superior există în directorul părinte, adică
ST25R3911B_v2.8.0_Linux_demo_v1.0.

Comanda cmake creează make-ulfile care este utilizat în pasul următor pentru a construi biblioteca și aplicația.

Pasul 4

Rulați comanda „make” pentru a construi biblioteca și aplicația RFAL:

face

Comanda „make” construiește mai întâi biblioteca RFAL și apoi construiește aplicația deasupra acesteia.

Cum se rulează aplicația

Construirea cu succes generează un executabil numit „nfc_demo_st25r3911b” în următoarea locație:
/build/applications.

În mod implicit, aplicația trebuie să fie rulată cu drepturi root din calea: ST25R3911B_v2.8.0_Linux_demo_v1.0/linux_demo/build:

sudo ./demo/nfc_demo_st25r3911b

Aplicația începe să caute NFC tags si telefoane mobile. Afișează dispozitivele găsite cu UID-ul lor, așa cum se arată în Figura 7.

Figura 7. Afișarea dispozitivelor găsite

Figura 7 Afișarea dispozitivelor găsite

Pentru a închide aplicația, apăsați Ctrl + C.

Istoricul reviziilor

Tabelul 1. Istoricul revizuirilor documentului

Tabelul 1 Istoricul revizuirilor documentului

Lista de tabele

Tabelul 1. Istoricul revizuirilor documentului . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

Lista figurilor

Figura 1. Biblioteca RFAL pe platforma Linux. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Figura 2. Arhitectura software RFAL pe Linux. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Figura 3. Remedierea conexiunii hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Figura 4. Poziția jumperilor A5, A4, A3, A2, A1 și A0 pe placa adaptorului. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Figura 5. Configurarea hardware-ului de sus view . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Figura 6. Partea de configurare hardware view . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Figura 7. Afișarea dispozitivelor găsite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

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

Documente/Resurse

Driver Linux STMicroelectronics UM2375 [pdfManual de utilizare
Driver Linux UM2375, UM2375, Driver Linux, Driver

Referințe

Lasă un comentariu

Adresa ta de e-mail nu va fi publicată. Câmpurile obligatorii sunt marcate *