如何加速作業系統應用程式中的 NFC 整合

資料提供者:DigiKey 北美編輯群

在近場通訊 (NFC) 設計中,開發人員在最佳化無線射頻效能、硬體設計以及軟體時,向來都會面臨許多挑戰。 但是現在,由於單晶片 NFC 解決方案的出現,以及各種可用的軟體支援,開發人員在將 NFC 功能整合進家用電子設備、穿戴式設備以及各種物聯網 (IoT) 裝置的設計中時,本質上已有重大的改變。

開發人員能夠加入各種應用功能,而且對設計覆蓋區、耗電量或專案時程造成的影響微乎其微。

NFC 的雙向通訊能力相當獨特,能夠提供簡單、本質安全並且功耗相當低的近場無線連線能力。 當兩部裝置彼此之間的距離夠近時才能進行這類通訊,因此訊息不太可能被攔截,潛在的網路攻擊向量也能降到最低。 而且進行通訊時,兩部裝置中只有其中一部需要通電,因此平均電力消耗量能夠維持在相當低的水準。

NFC 確實能夠對多種智慧型家用與物聯網應用提供相當明顯的好處。 使用者只要將啟用 NFC 功能的智慧型手機放在另一部啟用 NFC 功能的裝置附近,便能夠完成藍牙或 Wi-Fi 配對。 NFC 可以用作裝置個人化的基層技術,並且可簡化智慧型手機的各種操作,像是進行設定、傳輸資料或註冊產品等。

嵌入式 NFC

NFC 是無線射頻識別 (RFID) 的子集,運作頻率為 13.56 MHz,能夠執行與傳統 RFID 標籤與非接觸式智慧卡相同的許多功能。 同時,NFC 具備更高的彈性,能夠執行以下三種通訊方式之一:卡片模擬、點對點以及讀/寫。

在卡片模擬模式下,NFC 裝置可作為非接觸式智慧卡使用,因而能夠用於多種現有的應用當中,包含票務、門禁控制、運輸、收費口以及非接觸式支付等。 點對點模式能夠讓兩部啟用 NFC 功能的裝置彼此連線並交換資料。 例如,使用者能夠使用已啟用 NFC 功能的智慧型手機,來設定另一部裝置上的藍牙或 Wi-Fi 設定參數,或者在信任網路中調試使用另一裝置。 在讀/寫模式中,NFC 裝置能夠讀取另一部 NFC 裝置的資料。 例如,啟用 NFC 功能的智慧型手機能夠讀取網址或其他資料,像是嵌入零售店面中促銷招牌內的折價券。

用作標籤的嵌入式 NFC 裝置連接到產品內的主機處理器後,其工作類似於雙埠記憶體。 其中一個記憶體埠可透過 NFC 介面進行無線存取。 另一個記憶體埠會透過 I2C 介面,由嵌入式系統存取。 因此,智慧型手機等外部來源便能藉此將資料傳至嵌入式系統中。 相對而言,主機處理器也能更新儲存在 NFC 裝置中的資料,使啟用 NFC 功能的外部裝置即使在產品電源關閉時,也能存取其中的資料。

對於需要在嵌入式系統以及外部系統(例如啟用 NFC 功能的智慧型手機)之間傳輸資料的任何應用,開發人員都能採用這種通訊方式。 事實上,利用 NFC 裝置用於通訊的無線連線能力及其用於在下載過程中暫時儲存資料的晶片上記憶體,開發人員可以使用這種方法更新嵌入式系統的資料,甚至韌體。

單晶片 NFC 控制器

在過去,設計人員嘗試將 NFC 功能新增到 MCU 架構的設計中,但在硬體和軟體層面都面臨極大挑戰。 使用傳統式 NFC 裝置的硬體工程師,必須確保設計滿足 NFC 裝置與主機之間的關鍵時序、維持低耗電量需求,並且將設計覆蓋區與物料清單 (BOM) 都減至最低。 但最大的影響可能存在於軟體端,工程師通常需要自行編寫程式碼,以處理許多低階資料交換作業,而這些作業本身便可構成單一應用層級的 NFC 操作。

進階的 NFC 裝置(例如 NXP SemiconductorPN7150專門用於簡化將 NFC 功能整合進物聯網裝置或任何嵌入式系統設計的作業。 PN7150 將無線射頻前端與低功耗 ARM® Cortex®-M0 核心、記憶體以及 I/O 週邊裝置結合在一起(圖 1)。

NXP Semiconductors 的 PN7150 NFC 控制器圖示

圖 1:NXP Semiconductors 的 PN7150 NFC 控制器結合完整的無線射頻前端、ARM Cortex-M0 裝置主機及內建韌體。 (圖片來源:NXP Semiconductors)

藉由確保內嵌式裝置主機與無線射頻前端之間有最佳的通訊時序,此元件能夠大幅消除傳統的硬體整合問題,同時還可支援較高的無線射頻輸出功率。 另外,整合式 I2C 介面相容於 NXP 的 NTAG I2C Plus,可用於感測器、燈具以及其他與智慧家庭網路關聯的裝置。 此外,此元件有助於降低耗電量需求:PN7150 能夠自動轉換至低功耗模式,並讓主機在需要進行無線射頻通訊之前,都維持在睡眠狀態。

除了簡化硬體設計之外,PN7150 也在軟體端提供多項明顯的優勢。 NXP 預先載入了裝置的嵌入式資料與程式碼記憶體,同時延伸支援 NFC 控制器介面 (NCI)。 NCI 技術規格由 NFC 論壇管理,它定義了 NFC 控制器 (NFCC) 與執行 Android、Linux 或 Windows IoT 等高階作業系統之裝置主機 (DH) 間的邏輯介面。

PN7150 的嵌入式 NCI 韌體藉由減少特定的主機互動,並為 NFC 應用程式開發人員提供更高的抽象層級,減輕軟體開發的負擔。 透過將低階程式碼移至韌體,PN7150 也能夠縮小主機端應用程式碼的覆蓋區。

直接替代型解決方案

PN7150 將硬體和軟體整合,設計用作直接替代型解決方案,供在 Android、Linux 或 Windows 環境下工作的開發人員使用(圖 2)。 事實上,剛剛接觸 NFC 開發的開發人員能夠利用多種 PN7150 展示套件,適用的平台有 Arduino (NXP OM5578/PN7150ARDM)、BeagleBone Black (NXP OM5578/PN7150BBBM) 以及 Raspbery Pi (NXP OM5578/PN7150RPIM)。 每一款套件都包含一個 PN7150 NFC 控制板、一個專用介面板,以及一個 NFC 樣品卡。

NXP PN7150 圖示(按一下可檢視完整尺寸)

圖 2:NXP 的 PN7150 只需使用少許額外的元件,即可提供完整的 NFC 子系統,透過簡單的硬體介面輕鬆整合主機 MCU,並透過 NCI 通訊協定與主機軟體整合。 (圖片來源:NXP Semiconductors)

設計師需要使用少許元件,以便為現有的 MCU 架構設計建立完整的 NFC 子系統。 事實上,在某些個案中,工程師能夠藉由刪減或合併天線配對電路中的某些被動元件(圖 3),來進一步減少物料清單中的項目。

PN7150 作為 NFC 控制器 (NFCC) 的圖示

圖 3:設計師若是使用 PN7150 作為 NFC 控制器 (NFCC),便能藉由簡化天線配對電路,進一步減少某些應用物料清單中的項目。 (圖片來源:NXP Semiconductors)

在典型的天線電路設計中,天線導線上需 RQ 阻尼電阻,以降低過高天線品質因數,以避免對所產生訊號的整型有不良影響。 在具有標稱天線品質因數的設計中,設計師可從天線末端移除這些 RQ 阻尼電阻。 在配對電路中,當特定的設計在天線導線中呈現出夠低的最大峰對峰電壓時,設計師便能夠將一對平行電容更換為單一電容(並可免除與 EMC 濾波器的連接)。 在小型天線連接至 PN7150 的典型應用中,天線導線處所產生的峰對峰電壓便會相對較低。 因此,設計師也能移除解耦 Crx 電容,並將 Rrx 電阻直接接到天線,藉此簡化 Rx 路徑。

簡化的軟體

從軟體的視角來看,PN7150 提供簡單的執行模式,進一步加速產品的開發(圖 4)。 裝置主機架構結合了傳輸層驅動器、NCI 驅動器以及 NFC 執行環境 (NFCEE) 中介軟體(含讀/寫、點對點或卡片模擬程式庫)。 對於 NFC 操作,主機只需要透過 I2C 介面,將高階的 NCI 操作傳送至 PN7150。 PN7150 的韌體進而會執行 NFC 通訊協定要求的詳細交易。

NXP 的 PN7150 嵌入式 NCI 韌體的圖示

圖 4:NXP PN7150 的嵌入式 NCI 韌體可減少軟體在裝置主機上的覆蓋區,因為韌體只需要在 PN7150 NFC 控制器 (NFCC) 上執行詳細 NFC 交易時,透過 I2C 硬體介面傳送 NCI 命令即可。 (圖片來源:NXP Semiconductors)

當然,從開發者的角度來看,由於 NXP 提供全面的軟體平台,因此 NFC 應用的開發可在較高的層級上進行。 對於啟用 NFC 功能的物聯網應用來說,一般的操作包含交換格式為「NFC 資料交換格式」(NDEF) 的資料。 NDEF 是一項由 NFC 論壇管理的標準資料格式,此格式可用來在任何相容的 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 提供 NCI 軟體,例如 linux_libnfc-nci,這是一個用於 PN7150 的 Linux NFC 程式庫。 開發人員能夠使用簡單的呼叫函式(如 WriteTag,會呼叫較低階的常式來處理 NFC 傳訊協定細節)來建立 NFC 應用程式。 (清單來源:NXP Semiconductors)

裝置主機會使用 NCI 控制訊息,與 NFC 控制器互動。 其中一個特別重要的 NCI 命令序列為 NFC 控制器提供了一套機制來尋找其他卡片、讀卡機或對等裝置。 這個稱為 RF Discovery 的命令序列能使相容的 NFC 裝置(像是 PN7150)在監聽其他傳輸裝置與傳輸(輪詢階段)之間交替運作,藉以尋找遠端卡片或標籤。

如同任何無線射頻技術一樣,傳輸所要求的功率比接收無線電明顯高出許多(圖 5)。 實際上,在輪詢階段,PN7150 的耗電量約為 30 mA,具體依天線特性而定。 在監聽階段,PN7150 會等待外部產生的無線射頻載波,當啟用待機模式時,消耗電流會降至約 20 μA。

NXP 的 NFC 裝置圖示

圖 5:由於 NFC 裝置在標準 NFC 論壇 RF Discovery 序列輪詢階段較長,因此耗電量需求可能相對較高。 (圖片來源:NXP Semiconductors)

輪詢階段通常會持續 20 ms,而監聽階段的長度為 300 到 500 ms。 對於 500 毫秒的監聽階段來說,平均的耗電量會變成:

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

為了降低 RF Discovery 的耗電量需求,NXP 的 N7150 提供了一種稱為「低電量卡片偵測器 (LPCD) 模式」的專有機制。 在 LPCD 模式下,PN7150 會尋找當另一部裝置接近時產生的磁耦合所導致的天線阻抗值變動。 若阻抗值變動高於預先定義的上限值,PN7150 便會自動進入標準的「NFC 論壇 RF Discovery」序列。 因此,這種「事件導向」的方法能夠明顯縮短 RF Discovery 階段的持續時間,讓平均耗電量降低(圖 6)。

NXP 的 PN7150 圖示

圖 6:NXP 的 PN7150 能夠使用特殊的偵測模式來縮短耗電輪詢階段的持續時間,藉此明顯降低 RF Discovery 迴圈的耗電量。 (圖片來源:NXP)

結論

NFC 提供安全、低功耗的連線能力,能夠明顯提升家用電器、穿戴式裝置以及其他物聯網裝置的易用度。 只要將啟用 NFC 功能的智慧型手機放在連線裝置附近,使用者就能夠調試產品、載入存取資訊,以及擷取儲存在產品中的資訊。 但在過去,MCU 架構系統中的 NFC 實作會對硬體和軟體的整合帶來設計上的困難。 相較之下,整合式的 NFC 裝置(例如 NXP 的 PN7150)會為 NFC 的設計提供接近直接替代型解決方案,簡化了啟用 NFC 功能之應用的硬體和軟體開發。 

DigiKey logo

聲明:各作者及/或論壇參與者於本網站所發表之意見、理念和觀點,概不反映 DigiKey 的意見、理念和觀點,亦非 DigiKey 的正式原則。

關於出版者

DigiKey 北美編輯群