UM2548 리눅스 드라이버
리눅스® ST25R3916/ST25R3916B용 드라이버
사용자 설명서
UM2548 리눅스 드라이버
소개
STSW-ST25R013 Linux® 드라이버를 사용하면 Raspberry Pi® 4가 ST6R1 및 ST8R1B 장치를 각각 포함하는 X-NUCLEO-NFCO25A3916 및 X-NUCLEO-NFCO25A3916 보드와 작동할 수 있습니다.
이 패키지는 보드 펌웨어와 함께 작동하기 위해 RF 추상화 계층(RFAL)을 Raspberry Pi 4 Linux 플랫폼으로 이식하고 다음을 제공합니다.amp다른 유형의 NFC를 감지하는 파일 애플리케이션 tags 그리고 P2P를 지원하는 모바일 폰. RFAL은 고성능 NFC 범용 장치/EMVCo 리더인 ST25R3916 및 ST25R3916B용 ST 표준 드라이버입니다. 예를 들어 ST25R3916-DISCO 펌웨어(STSW-ST25R010) 및 X-NUCLEO-NFCO06A1 펌웨어(X-CUBE-NFC6)에서 사용됩니다.
STSW-ST25R013 통신을 위한 모든 ST25R3916/ST25R3916B 하위 계층 및 일부 상위 계층 프로토콜을 지원합니다. RFAL은 이식 가능한 방식으로 작성되었으므로 Linux 기반 다양한 장치에서 실행할 수 있습니다. 이 문서에서는 NFC/RF 통신을 위해 RFAL 라이브러리를 표준 Linux 시스템(이 경우 Raspberry Pi 4)에서 사용하는 방법을 설명합니다. 코드는 매우 이식성이 뛰어나며 모든 Linux 플랫폼에서 사소한 변경으로 작동합니다.

위에view
1.1 특징
- ST25R3916 및 ST25R3916B 장치를 사용하여 NFC 지원 애플리케이션을 구축하기 위한 완전한 Linux 사용자 공간 드라이버(RF 추상화 계층)
- SPI 인터페이스를 사용한 ST25R3916/ST25R3916B와의 Linux 호스트 통신
- 모든 주요 기술 및 상위 계층 프로토콜에 대한 완전한 RF/NFC 추상화(RFAL):
– NFC-A(ISO14443-A)
– NFC-B(ISO14443-B)
– NFC-F(FeliCa™)
– NFC-V(ISO15693)
– P2P(ISO18092)
– ISO-DEP(ISO 데이터 교환 프로토콜, ISO14443-4)
– NFC-DEP(NFC 데이터 교환 프로토콜, ISO18092)
– Kovio, B', iClass, Calypso®와 같은 독점 기술 - SampRaspberry Pi 06에 연결된 X-NUCLEO-NFC1A08 및 X-NUCLEO-NFC1A4 확장 보드에서 사용 가능한 le 구현
- Samp여러 NFC를 감지하는 le 응용 프로그램 tag P2P를 지원하는 유형 및 휴대 전화
- 무료 사용자 친화적인 라이선스 조건
1.2 소프트웨어 아키텍처
그림 2는 Linux 플랫폼에서 RFAL 라이브러리의 소프트웨어 아키텍처 세부 사항을 보여줍니다.
RFAL은 소위 플랫폼을 채택하여 다른 플랫폼으로 쉽게 이식할 수 있습니다. files.
헤더 file rfal_platform.h에는 플랫폼 소유자가 제공하고 구현해야 할 매크로 정의가 포함되어 있습니다.
RFAL의 올바른 작동에 필요한 GPIO 할당, 시스템 리소스, 잠금 및 IRQ와 같은 플랫폼별 설정을 제공합니다.
이 데모에서는 플랫폼 기능을 구현하고 RFAL을 Linux 사용자 공간으로 이식합니다.
공유 라이브러리 file RFAL 계층에서 제공하는 기능을 보여주기 위해 시연용 애플리케이션에서 사용됩니다.
Linux 호스트는 Linux 사용자 공간에서 사용 가능한 sysfs 인터페이스를 사용하여 장치와 SPI 통신을 수행합니다. Linux 커널 내부에서 SPI sysfs 인터페이스는 Linux 커널 드라이버 spidev를 사용하여 장치와 SPI 프레임을 주고받습니다.
ST25R3916 및 ST25R3916B 장치의 INT 라인을 처리하기 위해 드라이버는 libpiod sysfs를 사용하여 이 라인의 변경 사항에 대한 알림을 받습니다.

하드웨어 설정
2.1 사용된 플랫폼
Raspberry Pi OS가 탑재된 Raspberry Pi 4 보드는 Linux 플랫폼으로 사용되어 RFAL 라이브러리를 빌드하고 SPI를 통해 ST25R3916/ST25R3916B와 상호 작용합니다.
이 장치를 사용하면 Linux 플랫폼의 애플리케이션이 NFC 장치를 감지하고 이 장치와 통신할 수 있습니다.
2.2 하드웨어 요구 사항
- 라즈베리파이4
- Raspberry Pi OS를 부팅하기 위한 8GB 마이크로 SD 카드(최신 요구 사항 포함)
- SD 카드 리더
- X-NUCLEO-NFC06A1 또는 X-NUCLEO-NFC08A1 보드
- Raspberry Pi용 Arduino™ 어댑터(부품 번호 ARPI600)와 보드를 연결하기 위한 브리지
2.2.1 하드웨어 연결
ARPI600 Raspberry Pi to Arduino 어댑터는 보드를 Raspberry Pi와 연결하는 데 사용됩니다. 어댑터 보드의 점퍼는 X-NUCLEO-NFC06A1 또는 X-NUCLEO-NFC08A1 보드와 연결하도록 수정해야 합니다.
주의:
ARPI600은 Arduino IOREF 핀에 5V를 잘못 공급합니다. 보드를 직접 부착하면 일부 핀에 5V가 피드백되어 Raspberry Pi 보드가 손상될 수 있습니다. 파괴된 보드(특히 Raspberry Pi 4B+)에 대한 보고가 있습니다.
이를 방지하려면 ARPI600(다소 어려운 작업)이나 X-NUCLEO-NFC06A1/X-NUCLEONFC08A1 보드(더 쉬움)를 적용하세요.
가장 쉬운 해결책은 그림 6.2과 같이 X-NUCLEO-NFC06A1/X-NUCLEO-NFC08A1 보드의 CN3(IOREF) 핀을 절단하는 것입니다.
이 핀을 절단해도 Nucleo 보드(NUCLEO-L474RG, NUCLEO-F401RE, NUCLEO-8S208RB 등)와 함께 사용하는 데는 영향을 미치지 않습니다.

점퍼 설정
그림 5에 표시된 A4, A3, A2, A1, A0 및 A4의 점퍼는 각각 P25, P24, P23, P22, P21 및 CE1로 변경해야 합니다. 이 설정에서는 Raspberry의 GPIO 핀 번호 7이 X-NUCLEONFC06A1/X-NUCLEO-NFC08A1의 인터럽트 라인으로 사용됩니다.

현재 이 RFAL 라이브러리 포트는 GPIO7 핀을 인터럽트 라인으로 사용합니다(점퍼 설정에 따라). 인터럽트 라인을 GPIO7에서 다른 GPIO로 변경해야 하는 요구 사항이 있는 경우 플랫폼별 코드( file (pltf_gpio.h)를 수정하여 매크로 ST25R_INT_PIN의 정의를 7에서 새로운 GPIO 핀으로 변경하고 인터럽트 라인으로 사용해야 합니다.
위의 점퍼 설정을 사용하면 다음 그림과 같이 어댑터 보드를 사용하여 X-NUCLEO NFC06A1 및 X-NUCLEO-NFC08A1을 Raspberry Pi 보드에 연결할 수 있습니다.

리눅스 환경 설정
3.1 라즈베리파이 부팅하기
Linux 환경을 설정하려면 먼저 아래 설명한 대로 Raspberry Pi OS로 Raspberry Pi를 설치하고 부팅합니다.
1단계
최신 Raspberry Pi OS 이미지를 다운로드하세요 https://www.raspberrypi.com, 그런 다음 데스크톱이 있는 Raspberry Pi OS를 선택합니다. 아래 테스트의 경우 버전 2022-09-22-raspios-bullseye-armhf.img.xz(2022년 XNUMX월)가 사용되었습니다.
2단계
Raspberry Pi OS 이미지의 압축을 풀고 "SD 카드에 이미지 쓰기" 섹션에 나와 있는 지침에 따라 SD 카드에 씁니다.
3단계
하드웨어 연결:
- 표준 HDMI 케이블을 사용하여 Raspberry Pi 4를 모니터에 연결합니다.
- 마우스와 키보드를 Raspberry Pi의 USB 포트에 연결합니다.
ssh를 사용하여 Raspberry Pi로 작업하는 것도 가능합니다. 이 경우 모니터, 키보드, 마우스를 Raspberry Pi에 연결할 필요가 없습니다. 유일한 요구 사항은 ssh가 있는 PC를 Raspberry Pi와 동일한 네트워크 내에 두고 IP 주소를 적절히 구성하는 것입니다.
4단계
SD 카드로 Raspberry Pi 4를 부팅합니다. 부팅 후, Debian 기반 Linux 데스크톱이 모니터에 나타납니다.
메모:
때때로 Raspberry Pi OS를 부팅한 후 일부 키보드 키가 작동하지 않습니다. 작동하게 하려면 다음을 엽니다. file /etc/default/keyboard를 열고 XKBLAYOUT=”us”로 설정한 뒤 Raspberry Pi를 재부팅합니다.
3.2 Raspberry Pi에서 SPI 활성화
커널 내부의 SPI 드라이버는 SPI를 통해 X-NUCLEO-NFC06A1/X-NUCLEO-NFC08A1 보드와 통신합니다. Raspbian Pi OS 커널 구성에서 SPI가 이미 활성화되어 있는지 확인하는 것이 중요합니다.
Raspberry Pi 환경에서 /dev/spidev0.0이 보이는지 확인합니다. 표시되지 않으면 아래 설명된 단계에 따라 "raspi-config" 유틸리티를 사용하여 SPI 인터페이스를 활성화합니다.
1단계
Raspberry Pi에서 새 터미널을 열고 루트로 "raspi-config" 명령을 실행합니다: sudo raspi-config
이 단계는 그래픽 인터페이스를 엽니다.
2단계
그래픽 인터페이스에서 "인터페이스 옵션"이라는 옵션을 선택합니다.
3단계
이 단계에는 다양한 옵션이 나열됩니다.
"SPI"라는 옵션을 선택합니다.
다음 텍스트가 포함된 새 창이 나타납니다.
"SPI 인터페이스를 활성화하시겠습니까?"
4단계
선택하다 이 창에서 SPI를 활성화합니다.
5단계
라즈베리 파이를 재부팅합니다.
위의 단계는 재부팅 후 Raspberry Pi 환경에서 SPI 인터페이스를 활성화합니다.
RFAL 라이브러리 및 애플리케이션 빌드
Linux의 RFAL 데모는 ST25R3916_v2.8.0_Linux_demo_v1.0.tar.xz와 같은 아카이브로 제공됩니다.
Raspberry Pi에서 RFAL 라이브러리와 애플리케이션을 빌드하려면 다음 단계를 따르세요.
1단계
홈 디렉토리에서 다음 명령을 사용하여 Raspberry Pi에서 패키지의 압축을 풉니다.
tar -xJvf ST25R3916_v2.8.0_Linux_demo_v1.0.tar.xz
2단계
다음 명령을 사용하여 cmake를 설치합니다(이전에 설치하지 않은 경우)
apt-get 설치 cmake
RFAL 라이브러리와 애플리케이션 빌드 시스템은 cmake 기반이기 때문에 패키지를 컴파일하려면 cmake를 설치해야 합니다.
3단계
RFAL 라이브러리와 애플리케이션을 빌드하려면 빌드 디렉토리로 이동하세요.
cd ST25R3916_v2.8.0_Linux_demo_v1.0/linux_demo/빌드
거기에서 명령을 실행하세요
cmake ..
위 명령에서 “..”는 상위 디렉토리에 최상위 CMakeLists.txt가 존재함을 나타냅니다.
(ST25R3916_v2.8.0_Linux_demo_v1.0).
이 명령은 make를 생성합니다file 다음 단계에서 라이브러리와 애플리케이션을 빌드하는 데 사용됩니다. 거기에서 다음 명령을 실행하여 ST25R3916B에 대한 데모를 빌드합니다.
다음 명령어를 사용하여 cmake를 다시 설치합니다.
4단계
RFAL 라이브러리와 애플리케이션을 빌드하려면 make 명령을 실행하세요.
만들다
이 명령은 먼저 RFAL 라이브러리를 빌드한 다음, 그 위에 애플리케이션을 빌드합니다.
응용 프로그램을 실행하는 방법
빌드가 성공적으로 완료되면 /build/demo 위치에 “nfc_poller_st25r3916” 또는 “nfc_poller_st25r3916b”라는 실행 파일이 생성됩니다.
기본적으로 애플리케이션은 ST25R3916_v2.8.0_Linux_demo_v1.0/linux_demo/build/demo/ 경로에서 루트 권한으로 실행해야 합니다.
sudo ./nfc_demo_st25r3916
애플리케이션이 NFC 폴링을 시작합니다. tags 그리고 휴대전화의 경우 그림 7과 같이 발견된 기기를 해당 UID와 함께 표시합니다.

응용 프로그램을 종료하려면 Ctrl + C를 누릅니다.
개정 내역
표 1. 문서 개정 내역
| 날짜 | 개정 | 변화 |
| 1년 19월 XNUMX일 | 1 | 최초 출시. |
| 4-23-XNUMX | 2 | 업데이트된 문서 제목, 섹션 소개, 섹션 1.1 기능 섹션 1.2 소프트웨어 아키텍처, 섹션 2.1 사용 플랫폼, 섹션 2.2 하드웨어 요구 사항, 섹션 2.2.1 하드웨어 연결, 섹션 3.1 Raspberry Pi 부팅, 섹션 3.2 Raspberry Pi에서 SPI 활성화, 섹션 4 RFAL 라이브러리 및 애플리케이션 빌드 섹션 5 응용프로그램을 실행하는 방법. 업데이트된 그림 1. Linux 플랫폼의 RFAL 라이브러리, 그림 2. RFAL 소프트웨어 아키텍처 Linux에서 그림 5. 하드웨어 설정 상단 view. 전체 문서에 대한 사소한 텍스트 편집. |
중요 공지 – 주의 깊게 읽어보세요
STMicroelectronics NV 및 그 자회사("ST")는 언제든지 통지 없이 ST 제품 및/또는 이 문서를 변경, 수정, 개선, 수정 및 개선할 권리를 보유합니다. 구매자는 주문하기 전에 ST 제품에 대한 최신 관련 정보를 얻어야 합니다. ST 제품은 주문 확인 시점에 적용되는 ST의 판매 약관에 따라 판매됩니다.
구매자는 ST 제품의 선택, 선정 및 사용에 대한 전적인 책임을 지며, ST는 구매자의 제품 설계나 애플리케이션 지원에 대한 책임을 지지 않습니다.
ST는 본 계약에 따라 어떠한 지적 재산권에 대한 명시적 또는 묵시적 라이센스도 부여하지 않습니다.
여기에 명시된 정보와 다른 조항이 적용된 ST 제품을 재판매할 경우, ST가 해당 제품에 대하여 부여한 모든 보증은 무효화됩니다.
ST 및 ST 로고는 ST의 상표입니다. ST 상표에 대한 추가 정보는 다음을 참조하십시오. www.st.com/trademarks. 다른 모든 제품 또는 서비스 이름은 해당 소유자의 자산입니다.
이 문서의 정보는 이 문서의 이전 버전에서 제공된 정보를 대체하고 교체합니다.
© 2023 STMicroelectronics – 모든 권리 보유
UM2548 – 개정판 2
문서 / 리소스
![]() |
STMicroelectronics UM2548 Linux 드라이버 [PDF 파일] 사용자 매뉴얼 UM2548 리눅스 드라이버, UM2548, 리눅스 드라이버, 드라이버 |




