OS 기반 응용 분야에서 NFC 통합을 가속화하는 방법

DigiKey 북미 편집자 제공

개발자는 오래 전부터 NFC(근거리 무선 통신)를 설계하면서 RF, 성능, 하드웨어 설계, 소프트웨어를 최적화하기 위해 수많은 문제를 극복해 왔습니다. 그러나 지금은 모놀리식 NFC 솔루션과 종합적인 소프트웨어 지원 덕분에 가전, 웨어러블 기기, IoT(사물 인터넷) 기기 설계에 NFC 기능을 통합하는 방법이 바뀌었습니다.

이제 개발자들은 실장 면적이나 소비 전력, 프로젝트 일정에 영향을 주지 않으면서 풍부한 응용 제품 기능을 추가할 수 있습니다.

NFC의 양방향 통신은 간단하면서도 본질적으로 안전한 저전력 근거리 무선 연결을 제공한다는 점이 특별합니다. 두 기기가 서로 가까이 있을 경우에만 통신이 가능하므로 메시지가 유출될 가능성이 적고, 사이버 공격 벡터가 될 가능성도 최소화됩니다. 게다가 두 기기 중에 하나만 전원이 켜져 있어도 통신이 가능하므로 평균 전력 소비도 낮습니다.

NFC는 스마트홈 및 IoT 응용 분야에 다양한 혜택을 제공합니다. 사용자는 NFC가 활성화된 스마트폰을 NFC가 활성화된 제품에 가까이 가져가기만 하면 Bluetooth나 Wi-Fi 연결을 완료할 수 있습니다. NFC는 기기 개인화를 지원하며 설정 구성, 데이터 전송, 제품 등록과 같은 스마트폰 작업을 간소화합니다.

내장형 NFC

무선 주파수 식별(RFID)에 속하는 NFC는 13.56MHz로 작동하며 기존 RFID 태그나 무접촉 스마트카드와 같은 기능을 다수 수행합니다. 또한 NFC는 카드 에뮬레이션, 피어 투 피어, 읽기/쓰기 등 세 가지 통신 모드로 작동이 가능하여 더욱 향상된 유연성을 제공합니다.

카드 에뮬레이션 모드에서는 NFC 기기가 무접촉 스마트카드로 작동하므로 티켓 발매, 액세스 제어, 교통, 톨게이트, 무접촉 결제 등 다양한 기존 응용 분야에 사용할 수 있습니다. 피어 투 피어 모드에서는 NFC가 활성화된 두 기기를 연결하여 정보를 교환할 수 있습니다. 예를 들어, NFC가 활성화된 스마트폰으로 다른 기기에서 Bluetooth 또는 Wi-Fi 설정 파라미터를 설정하거나, 신뢰할 수 있는 네트워크에서 사용하도록 설정할 수 있습니다. 읽기/쓰기 모드에서는 NFC 기기로 다른 NFC 기기의 데이터를 읽을 수 있습니다. 예를 들어, NFC가 활성화된 스마트폰으로 URL을 읽거나, 소매점의 홍보용 간판에 포함된 판매 쿠폰 등의 기타 데이터를 읽을 수 있습니다.

제품 내부의 호스트 프로세서에 연결할 경우 내장형 NFC 기기는 태그로 사용되며 듀얼 포트 메모리와 비슷하게 작동합니다. 메모리 포트 하나에는 NFC 인터페이스를 통해 무선으로 액세스합니다. 다른 포트에는 내장형 시스템에서 I2C 인터페이스를 통해 액세스합니다. 따라서 스마트폰과 같은 외부 소스에서 내장 시스템으로 데이터를 전달할 수 있습니다. 또한 호스트 프로세서에서는 NFC 기기에 저장된 데이터를 업데이트하여 제품 전원이 꺼져 있는 동안에도 NFC가 활성화된 외부 기기에 제공할 수 있습니다.

개발자는 내장 시스템과 NFC가 활성화된 스마트폰과 같은 외부 시스템 사이에서 데이터를 전달해야 하는 모든 응용 분야에 이 방법을 사용할 수 있습니다. 실제로 개발자는 이 방법을 통해 NFC 기기의 무선 연결로 통신하고 온칩 메모리를 다운로드 프로세스 중 임시 저장소로 사용하는 등 내장 시스템의 데이터나 펌웨어를 업데이트할 수 있습니다.

모놀리식 NFC 컨트롤러

과거에 MCU 기반 설계에 NFC 기능을 추가하려고 했던 설계자는 하드웨어와 소프트웨어에서 모두 난관을 겪었습니다. 기존 NFC 기기를 사용하는 하드웨어 엔지니어는 설계가 NFC 기기와 호스트 사이의 중요한 타이밍을 맞추고, 저전력 요구 사항을 충족하며 실장 면적과 BOM을 최소한으로 유지해야 했습니다. 소프트웨어 엔지니어가 겪은 난관은 더 심했습니다. 엔지니어가 응용 제품 수준의 NFC 작업 하나를 구성하기 위해 다수의 낮은 레벨의 트랜잭션을 처리하는 코드를 직접 작성해야 하는 경우가 많았습니다.

NXP Semiconductor PN7150 같은 고급 NFC 기기는 IoT 설계나 모든 내장 시스템에 NFC 기능을 간편하게 포함할 수 있도록 설계되었습니다. PN7150는 RF 프런트 엔드를 저전력 ARM® Cortex®-M0 코어, 메모리 및 I/O 주변 장치와 결합합니다(그림 1).

NXP Semiconductors PN7150 NFC 컨트롤러 구성도

그림 1: NXP Semiconductors PN7150 NFC 컨트롤러는 완전한 RF 프런트 엔드와 ARM Cortex-M0 기기 호스트, 통합 펌웨어를 결합합니다. (이미지 출처: NXP Semiconductors)

이 기기는 내장 기기 호스트와 RF 프런트 엔드 간에 최적의 타이밍을 보장하고 높은 RF 출력 전력을 지원하여 기존 하드웨어 통합의 문제를 크게 해소합니다. 또한 통합된 I2C 인터페이스는 스마트홈 네트워크와 관련된 센서, 조명 기구 및 기타 기기의 NXP NTAG I2C Plus와 호환됩니다. 이 기기는 전력 요구 사항을 줄이는 데에도 유용합니다. PN7150은 자동으로 저전력 모드로 전환해서 RF 통신이 필요할 때까지 호스트를 절전 모드로 유지할 수 있습니다.

PN7150은 하드웨어 설계를 간소화할 뿐만 아니라 소프트웨어 면에서도 큰 이점을 제공합니다. NXP는 NFC 컨트롤러 인터페이스(NCI)를 본격적으로 지원하며 기기의 내장 데이터 및 코드 메모리를 사전 로드합니다. NFC Forum에서 관리하는 NCI 기술 사양은 Android, Linux 또는 Windows IoT와 같은 높은 수준의 OS를 실행하는 기기 호스트(DH)와 NFC 컨트롤러(NFCC) 사이의 논리 인터페이스를 정의합니다.

PN7150의 내장형 NCI 펌웨어는 특정 호스트 상호 작용을 줄이고 NFC 응용 소프트웨어 개발자에게 더 높은 추상화 수준을 지원하여 소프트웨어 개발 부담을 덜어 줍니다. PN7150은 또한 하위 수준 코드를 펌웨어로 이전하여 호스트 측에서 애플리케이션 코드가 차지하는 공간을 줄여 줍니다.

드롭인 솔루션

하드웨어 및 소프트웨어가 통합되어 있는 PN7150은 Android, Linux 또는 Windows 환경에서 작업하는 개발자를 위한 드롭인 NFC 솔루션입니다(그림 2). NFC 개발에 익숙하지 않은 개발자는 Arduino(NXP OM5578/PN7150ARDM), BeagleBone Black(NXP OM5578/PN7150BBBM), Raspbery Pi(NXP OM5578/PN7150RPIM)용으로 출시된 PN7150 데모 키트를 활용할 수 있습니다. 각 키트에는 PN7150 NFC 컨트롤러 보드, 전용 인터페이스 보드, NFC 샘플 카드가 포함되어 있습니다.

NXP PN7150 구성도(전체 크기로 보려면 클릭)

그림 2: NXP PN7150은 추가 부품을 거의 사용하지 않고도 간단한 하드웨어 인터페이스를 통해 호스트 MCU와, NCI 프로토콜을 통해 호스트 소프트웨어와 쉽게 통합되는 완전한 NFC 서브 시스템을 제공할 수 있습니다. (이미지 출처: NXP Semiconductors)

설계자는 부품을 거의 사용하지 않고도 기존 MCU 기반 설계에 맞는 완전한 NFC 서브 시스템을 만들 수 있습니다. 엔지니어는 안테나 매칭 회로의 수동 소자 몇 개를 결합하거나 제거하여 BOM을 더 줄일 수도 있습니다(그림 3).

NFC 컨트롤러(NFCC)로 사용되는 PN7150 구성도

그림 3: 설계자는 PN7150을 NFC 컨트롤러(NFCC)로 사용하여 안테나 매칭 회로를 간소화하는 방식으로 몇몇 응용 분야에서 BOM을 더 줄일 수 있습니다. (이미지 출처: NXP Semiconductors)

일반적인 안테나 회로 설계에서는 과도하게 높아 신호 형태에 부정적인 영향을 미칠 수 있는 안테나 품질 계수를 낮추기 위해 안테나 리드에 RQ 댐핑 저항이 필요합니다. 공칭 안테나 품질 계수가 설정된 설계에서는 안테나 쪽에서 이러한 RQ 감폭 저항기를 제거할 수 있습니다. 매칭 회로 자체에서도 특정 설계의 안테나 리드에서 피크 투 피크 전압의 최대값이 충분히 낮다면 병렬 커패시터 한 쌍을 커패시터 한 개로 대체할 수 있습니다(EMC 필터와의 연결 제거됨). 일반적으로 소형 안테나를 PN7150에 연결하는 경우 안테나 리드에서 생성되는 피크 투 피크 전압이 비교적 낮습니다. 따라서 설계자는 감결합 Crx 커패시터를 제거하고 Rrx 저항을 안테나에 직접 연결하여 Rx 경로를 간소화할 수도 있습니다.

간소화된 소프트웨어

소프트웨어 면에서 PN7150은 단순한 실행 모델을 제공하여 빠른 제품 개발을 지원합니다(그림 4). 기기 호스트 아키텍처에서는 트랜스포트 계층 드라이버와 NCI 드라이버를 읽기/쓰기, 피어 투 피어 또는 카드 에뮬레이션 라이브러리가 포함된 NFC 실행 환경(NFCEE)과 결합합니다. NFC 작업의 경우는 호스트에서 I2C 인터페이스를 통해 PN7150에 높은 수준의 NCI 작업만 보내면 됩니다. 그러면 PN7150 펌웨어에서 NFC 프로토콜에 필요한 세부 트랜잭션을 실행합니다.

NXP PN7150의 내장형 NCI 펌웨어 구성도

그림 4: NXP PN7150 내장형 NCI 펌웨어는 I2C 하드웨어 인터페이스를 통해 NCI 명령만 보내도 PN7150 NFC 컨트롤러(NFCC)에서 세부 트랜잭션을 실행할 수 있으므로 기기 호스트(DH)에서 소프트웨어가 차지하는 공간을 줄일 수 있습니다. (이미지 출처: NXP Semiconductors)

개발자 관점에서 보면, NXP에서 사용할 수 있는 종합적인 소프트웨어 플랫폼 덕분에 높은 수준에서 NFC 애플리케이션 개발이 진행됩니다. NFC가 활성화된 IoT 애플리케이션에서 일반적인 작업을 수행하려면 NFC 데이터 교환 형식(NDEF) 데이터를 교환해야 합니다. NFC Forum에서 관리하는 NDEF는 호환되는 모든 NFC 기기와 다른 NFC 기기 또는 태그 사이에서 URI나 일반 텍스트와 같은 정보를 교환하는 데 사용할 수 있는 표준화된 데이터 형식입니다.

NXP linux_libnfc-nci 라이브러리에서는 낮은 수준의 트랜잭션을 높은 수준의 애플리케이션 지향 작업으로 추상화하는 간단한 애플리케이션 프로그래밍 인터페이스(API)를 제공합니다. 예를 들어 개발자는 WriteTag 루틴을 호출하는 간단한 태그를 작성할 수 있습니다(목록 1). 라이브러리에서는 낮은 수준의 루틴 여러 개를 사용하여 애플리케이션 수준의 요청을 데이터 확인, 포맷, 전송에 필요한 여러 단계로 분해합니다(목록 1의 msgToPush).

int WriteTag(nfc_tag_info_t TagInfo, unsigned char* msgToPush, unsigned int len)

{

            int res = 0x00;

           

            res = nfcTag_writeNdef(TagInfo.handle, msgToPush, len);

            if(0x00 != res)

            {

                        printf("Write Tag Failed\n");

                        res = 0xFF;

            }

            else

            {

                        res = 0x00;

            }

            return res;

}

목록 1: NXP는 PN7150용 Linux NFC 라이브러리 linux_libnfc-nci와 같은 NCI 소프트웨어를 제공합니다. 개발자는 NFC 메시징 프로토콜 세부 정보를 처리하기 위해 낮은 수준의 루틴을 호출하는 WriteTag 등의 간단한 호출을 사용하여 NFC 애플리케이션을 만들 수 있습니다. (목록 출처: NXP Semiconductors)

기기 호스트에서는 NCI 제어 메시지를 사용하여 NFC 컨트롤러와 상호 작용합니다. 특히 중요한 NCI 명령 시퀀스에서는 NFC 컨트롤러로 다른 카드, 리더기 또는 피어를 찾을 수 있는 메커니즘을 제공합니다. RF 디스커버리라고 하는 이 명령 시퀀스에서는 PN7150과 같은 호환 NFC 기기가 다른 전송 기기 신호 수신과 전송(폴링 단계) 사이를 전환하며 원격 카드나 태그를 찾도록 합니다.

다른 RF 기술과 마찬가지로 전송에는 무선 수신보다 훨씬 큰 전력이 필요합니다(그림 5). 폴링 단계에서 PN7150은 안테나 특성에 따라 약 30mA를 소비합니다. 수신 단계에서 PN7150은 외부에서 생성된 RF 신호를 기다리며, 대기 모드가 활성화된 상태에서는 소비 전류가 약 20μA로 떨어집니다.

NXP NFC 기기 구성도

그림 5: NFC 기기는 표준 NFC Forum RF 디스커버리 시퀀스에서 폴링 단계로 보내는 시간이 길기 때문에 전력 요구 사항이 비교적 높을 수 있습니다. (이미지 출처: NXP Semiconductors)

일반적으로 폴링 단계는 20ms 정도, 수신 단계는 300ms~500ms 정도 지속됩니다. 수신 단계가 500ms인 경우의 평균 전력 소비는 다음과 같습니다.

(30 x 20 + 0.02 x 500) / 520 = 1.17mA

RF 디스커버리의 전력 요구 사항을 줄이기 위해, NXP N7150은 저전력 카드 탐지(LPCD) 모드라는 고유 메커니즘을 제공합니다. LPCD 모드에서 PN7150은 다른 기기가 범위 안에 들어왔을 때 자기 커플링 때문에 발생하는 안테나 임피던스의 변화를 찾습니다. 임피던스 변화가 미리 정의된 임계값보다 높은 경우에는 PN7150이 자동으로 표준 NFC Forum RF 디스커버리 시퀀스에 들어갑니다. 따라서, 이 "이벤트 구동" 방식을 사용하면 RF 디스커버리 단계의 지속 시간을 크게 줄이고, 결과적으로 평균 전력 소비를 줄일 수 있습니다(그림 6).

NXP PN7150 구성도

그림 6: NXP PN7150은 특별 탐지 모드를 사용하여 전력을 많이 소비하는 폴링 단계의 지속 시간을 줄여서 RF 디스커버리 루프의 전력 소비를 크게 줄일 수 있습니다. (이미지 출처: NXP)

결론

NFC에서는 가전 기기, 웨어러블 기기 및 기타 IoT 기기 분야의 연결된 제품에서 편의성을 크게 향상할 수 있는 안전한 저전력 연결을 제공합니다. 사용자는 NFC가 활성화된 스마트폰을 연결된 제품 근처에 가져가기만 하면 제품을 발주하고, 접근 정보를 로드하고, 제품에 저장된 정보를 검색할 수 있습니다. 과거에는 MCU 기반 시스템에서 NFC를 구현하려면 하드웨어 및 소프트웨어 모두에서 난관을 겪어야 했습니다. 그러나 NXP PN7150과 같은 통합 NFC 기기를 사용하면 NFC 설계에 근거리 드롭인 솔루션을 제공하고 NFC가 활성화된 애플리케이션의 하드웨어 및 소프트웨어 개발을 모두 간소화할 수 있습니다. 

DigiKey logo

면책 조항: 이 웹 사이트에서 여러 작성자 및/또는 포럼 참가자가 명시한 의견, 생각 및 견해는 DigiKey의 의견, 생각 및 견해 또는 DigiKey의 공식 정책과 관련이 없습니다.

게시자 정보

DigiKey 북미 편집자