STMicroelectronics UM2375 Linux 드라이버 사용 설명서

ST마이크로일렉트로닉스 로고

ST25R3911B 및 ST25R3912/14/15 고성능 NFC 프런트엔드용 Linux® 드라이버

소개

STSW-ST25R009 Linux® 드라이버를 사용하면 Raspberry Pi 4가 ST05R1B 고성능 NFC 범용 장치가 포함된 X-NUCLEO-NFC25A3911과 함께 작동할 수 있습니다.

이 패키지는 RFAL(RF 추상화 계층)을 Raspberry Pi 4 Linux 플랫폼에 포팅하여 X-NUCLEO-NFC05A1 펌웨어와 함께 작동합니다. 패키지는 다음과 같이 제공됩니다.amp다른 유형의 NFC를 감지하는 파일 애플리케이션 tags P2P를 지원하는 휴대폰 등이 있습니다. RFAL은 ST25R NFC/RFID 리더 IC ST25R3911B, ST25R3912, ST25R3913, ST25R3914 및 ST25R3915용 ST 표준 드라이버입니다. 예를 들어 ST25R3911B-DISCO 펌웨어(STSW-ST25R002) 및 X-NUCLEONFC05A1 펌웨어(X-CUBE-NFC5)에서 사용됩니다.

STSW-ST25R009는 모든 ST25R3911B 하위 계층 프로토콜과 통신을 위한 일부 상위 계층 프로토콜을 지원합니다. RFAL은 이식 가능한 방식으로 작성되었으므로 Linux® 기반의 다양한 장치에서 실행할 수 있습니다. 이 문서에서는 NFC/RF 통신을 위해 표준 Linux 시스템(이 경우 Raspberry Pi 4)에서 RFAL 라이브러리를 사용하는 방법을 설명합니다. 이 코드는 이식성이 뛰어나며 모든 Linux 플랫폼에서 약간만 변경해도 작동합니다.

그림 1. Linux 플랫폼의 RFAL 라이브러리

그림 1 Linux 플랫폼의 RFAL 라이브러리

위에view

특징
  • 최대 25W 출력 전력을 갖춘 ST3911R25B/ST391R1.4x 고성능 NFC 프런트엔드를 사용하여 NFC 지원 애플리케이션을 구축하기 위한 완전한 Linux 사용자 공간 드라이버(RF 추상화 계층)
  • SPI 인터페이스를 사용하여 ST25R3911B/ST25R391x와 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 05에 연결된 X-NUCLEO-NFC1A4 확장 보드를 사용하여 파일 구현 가능
  • Samp여러 NFC를 감지하는 le 응용 프로그램 tag P2P를 지원하는 유형 및 휴대 전화
  • 무료 사용자 친화적인 라이선스 조건
소프트웨어 아키텍처

그림 2는 Linux® 플랫폼에서 RFAL 라이브러리의 소프트웨어 아키텍처 세부 정보를 보여줍니다.

RFAL은 소위 플랫폼을 채택하여 다른 플랫폼으로 쉽게 이식할 수 있습니다. files.

헤더 file rfal_platform.h 플랫폼 소유자가 제공하고 구현해야 하는 매크로 정의가 포함되어 있습니다. 또한 RFAL의 올바른 작동에 필요한 GPIO 할당, 시스템 리소스, 잠금 및 IRQ와 같은 플랫폼별 설정을 제공합니다.

이 데모는 플랫폼 기능을 구현하고 Linux®의 사용자 공간에 RFAL 라이브러리의 포트를 제공합니다. 공유 라이브러리 file RFAL 계층에서 제공하는 기능을 보여주기 위해 데모 애플리케이션에서 사용되는 생성됩니다.

Linux® 호스트는 Linux® 사용자 공간에서 사용 가능한 sysfs 인터페이스를 사용하여 ST25R3911B 장치와의 SPI 통신을 활성화합니다. Linux® 커널 내부에서 SPI sysfs 인터페이스는 Linux® 커널 드라이버 spidev를 사용하여 ST25R3911B와 SPI 프레임을 주고받습니다.

ST25R3911B의 인터럽트 라인을 처리하기 위해 드라이버는 libgpiod를 사용하여 이 라인의 변경 사항을 알립니다.

그림 2. Linux의 RFAL 소프트웨어 아키텍처

그림 2 Linux의 RFAL 소프트웨어 아키텍처

하드웨어 설정

사용 플랫폼

Raspberry Pi OS가 포함된 Raspberry Pi 4 보드는 Linux 플랫폼으로 사용되어 RFAL 라이브러리를 구축하고 SPI를 통해 ST25R3911B와 상호 작용합니다.
ST25R3911B를 사용하면 Linux 플랫폼의 애플리케이션이 NFC 장치를 감지하고 통신할 수 있습니다.

하드웨어 요구 사항
  • 라즈베리파이4
  • Raspberry Pi OS를 부팅하기 위한 8GB 마이크로 SD 카드
  • SD 카드 리더
  • X-NUCLEO-NFC05A1을 Raspberry Pi용 Raspberry Pi Arduino 어댑터(부품 번호 ARPI600)와 연결하기 위한 브리지 보드입니다.
  • X-NUCLEO-NFC05A1. 최신 Raspberry Pi OS 요구 사항을 참조하십시오.

하드웨어 연결

ARPI600 Raspberry Pi-Arduino 어댑터 보드는 X-NUCLEO-NFC05A1을 Raspberry Pi와 연결하는 데 사용됩니다. X-NUCLEO-NFC05A1과 연결하기 위해서는 어댑터 보드의 점퍼를 수정해야 합니다.

주의: ARPI600은 Arduino IOREF 핀에 5V를 잘못 공급합니다. X-NUCLEO-NFC05A1을 직접 연결하면 일부 핀에서 5V가 피드백되어 Raspberry Pi 보드가 손상될 수 있습니다. 특히 Raspberry Pi 4B+가 실제로 파괴되었다는 보고가 있습니다. 이러한 상황을 방지하려면 ARPI600(다소 어려운 작업) 또는 X-NUCLEO-NFC05A1(더 쉬운 작업)을 채택하십시오.

가장 쉬운 수정은 그림 6.2과 같이 X-NUCLEO-NFC05A1에서 CN3(IOREF) 핀을 자르는 것입니다.

이 핀을 자르는 것은 Nucleo 보드(NUCLEO-L474RG, NUCLEO-F401RE, NUCLEO-8S208RB 등)와 함께 작동하는 데 영향을 미치지 않습니다.

그림 3. 하드웨어 연결 수정

그림 3 하드웨어 연결 수정

점퍼 설정

그림 5에 표시된 A4, A3, A2, A1, A0 및 A4의 점퍼를 P23, P22, P21 및 CE1로 변경해야 합니다. 이러한 점퍼 설정으로 Raspberry의 GPIO 핀 번호 7은 X-NUCLEO-NFC05A1의 인터럽트 라인으로 사용됩니다.

그림 4. 어댑터 보드에서 점퍼 A5, A4, A3, A2, A1 및 A0의 위치

그림 4 점퍼 위치

현재 이 RFAL 라이브러리 포트는 점퍼 설정에 따라 핀 GPIO7을 인터럽트 라인으로 사용합니다. 인터럽트 라인을 GPIO7에서 다른 GPIO로 변경해야 하는 경우 플랫폼별 코드(in file pltf_gpio.h) 매크로 "ST25R_INT_PIN"의 정의를 7에서 새로운 GPIO 핀으로 변경하여 인터럽트 라인으로 사용하도록 수정해야 합니다.

위의 점퍼 설정으로 어댑터 보드를 사용하여 그림 05와 같이 X-NUCLEO-NFC1A5을 Raspberry Pi 보드와 연결할 수 있습니다.

그림 5. 하드웨어 설정 상단 view

그림 5 하드웨어 설정 상단 view

그림 6. 하드웨어 설정 측면 view

그림 6 하드웨어 설정 측면 view

리눅스 환경 설정

라즈베리파이 부팅

Linux 환경을 설정하기 위한 첫 번째 단계는 아래 설명된 대로 Raspberry Pi OS로 Raspberry Pi 4를 설치하고 부팅하는 것입니다.

1단계

다음 링크에서 최신 Raspberry Pi OS 이미지를 다운로드합니다.

데스크톱이 있는 Raspberry Pi OS를 선택합니다. 아래 테스트에는 2022년 2022월(09-22-XNUMX-raspios-bullseye-armhf.img.xz) 버전이 사용되었습니다.

2단계

라즈베리 파이 이미지의 압축을 풀고 "SD 카드에 이미지 쓰기" 섹션에 있는 지침에 따라 SD 카드에 씁니다.

3단계

하드웨어 연결:

  • 표준 HDMI 케이블을 사용하여 Raspberry Pi를 모니터에 연결합니다.
  • 마우스와 키보드를 Raspberry Pi의 USB 포트에 연결합니다.

ssh를 사용하여 Raspberry Pi와 작업하는 것도 가능합니다. 이 경우 라즈베리 파이에 모니터, 키보드, 마우스를 연결할 필요가 없습니다. 유일한 요구 사항은 Raspberry Pi와 동일한 네트워크 내부에 ssh가 있는 PC를 두고 그에 따라 IP 주소를 구성하는 것입니다.

4단계

SD 카드로 라즈베리파이를 부팅합니다.

부팅 후 Debian 기반 Linux 데스크탑이 모니터에 나타납니다.

참고: 때로는 Raspberry Pi를 부팅한 후 일부 키보드 키가 작동하지 않는 경우가 있습니다. 작동하게 하려면 file /etc/default/keyboard XKBLAYOUT=”us”로 설정하고 Raspberry Pi를 재부팅합니다.

Raspberry Pi에서 SPI 활성화

커널 내부의 SPI 드라이버는 SPI를 통해 X-NUCLEO-NFC05A1과 통신합니다. Raspberry 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 데모는 아카이브로 제공됩니다. 이름이 다음과 같다고 가정해 보겠습니다.
ST25R3911B_v2.8.0_Linux_demo_v1.0.tar.xz.
Raspberry Pi에서 RFAL 라이브러리 및 애플리케이션을 빌드하려면 다음 단계를 따르세요.

1단계

홈 디렉터리에서 아래 명령을 사용하여 Raspberry Pi에서 패키지의 압축을 풉니다.

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

2단계

이전에 수행하지 않았다면 아래 명령을 사용하여 cmake를 설치하십시오.

apt-get 설치 cmake

RFAL 라이브러리 및 애플리케이션 빌드 시스템은 cmake를 기반으로 하므로 패키지 컴파일을 위해 cmake를 설치해야 합니다.

3단계

RFAL 라이브러리 및 애플리케이션을 빌드하려면 "build" 디렉터리로 이동합니다.

cd ST25R3911B_v2.8.0_Linux_demo_v1.0/Linux_demo/build

거기에서 아래 명령을 실행하십시오.

cmake ..

위 명령에서 ".."는 최상위 CMakeLists.txt가 상위 디렉터리에 있음을 나타냅니다. 즉,
ST25R3911B_v2.8.0_Linux_demo_v1.0.

cmake 명령은 make를 생성합니다.file 이는 다음 단계에서 라이브러리 및 애플리케이션을 빌드하는 데 사용됩니다.

4단계

"make" 명령을 실행하여 RFAL 라이브러리 및 애플리케이션을 빌드합니다.

만들다

"make" 명령은 먼저 RFAL 라이브러리를 빌드한 다음 그 위에 애플리케이션을 빌드합니다.

응용 프로그램을 실행하는 방법

성공적인 빌드업은 다음 위치에 "nfc_demo_st25r3911b"라는 실행 파일을 생성합니다.
/빌드/응용 프로그램.

기본적으로 애플리케이션은 ST25R3911B_v2.8.0_Linux_demo_v1.0/linux_demo/build 경로에서 루트 권한으로 실행되어야 합니다.

sudo ./demo/nfc_demo_st25r3911b

애플리케이션이 NFC 폴링을 시작합니다. tags 그리고 휴대폰. 그림 7과 같이 UID와 함께 발견된 장치를 표시합니다.

그림 7. 찾은 장치 표시

그림 7 검색된 장치 표시

응용 프로그램을 종료하려면 Ctrl + C를 누릅니다.

개정 내역

표 1. 문서 개정 내역

표 1 문서 개정 내역

테이블 목록

표 1. 문서 개정 내역 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

그림 목록

그림 1. Linux 플랫폼의 RFAL 라이브러리. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
그림 2. Linux의 RFAL 소프트웨어 아키텍처. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 삼
그림 3. 하드웨어 연결 수정. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
그림 4. 어댑터 보드의 점퍼 A5, A4, A3, A2, A1 및 A0 위치. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
그림 5. 하드웨어 설정 상단 view . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
그림 6. 하드웨어 설정 측면 view . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
그림 7. 발견된 장치 표시. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

중요 공지 – 주의 깊게 읽어보세요

STMicroelectronics NV 및 그 자회사("ST")는 언제든지 통지 없이 ST 제품 및/또는 이 문서를 변경, 수정, 개선, 수정 및 개선할 권리를 보유합니다. 구매자는 주문하기 전에 ST 제품에 대한 최신 관련 정보를 얻어야 합니다. ST 제품은 주문 확인 시점에 적용되는 ST의 판매 약관에 따라 판매됩니다.

구매자는 ST 제품의 선택, 선정 및 사용에 대한 전적인 책임을 지며, ST는 구매자의 제품 설계나 애플리케이션 지원에 대한 책임을 지지 않습니다.

ST는 본 계약에 따라 어떠한 지적 재산권에 대한 명시적 또는 묵시적 라이센스도 부여하지 않습니다.

여기에 명시된 정보와 다른 조항이 적용된 ST 제품을 재판매할 경우, ST가 해당 제품에 대하여 부여한 모든 보증은 무효화됩니다.

ST 및 ST 로고는 ST의 상표입니다. ST 상표에 대한 추가 정보는 다음을 참조하십시오. www.st.com/trademarks. 다른 모든 제품 또는 서비스 이름은 해당 소유자의 자산입니다.

이 문서의 정보는 이 문서의 이전 버전에서 제공된 정보를 대체하고 교체합니다.

© 2023 STMicroelectronics – 모든 권리 보유

문서 / 리소스

STMicroelectronics UM2375 Linux 드라이버 [PDF 파일] 사용자 매뉴얼
UM2375 리눅스 드라이버, UM2375, 리눅스 드라이버, 드라이버

참고문헌

댓글을 남겨주세요

이메일 주소는 공개되지 않습니다. 필수 항목은 표시되어 있습니다. *