基于MCU系统中实施NFC硬件和软件集成

描述

在近场通讯 (NFC) 设计中,开发人员向来都面临各种关于优化射频性能、硬件设计和软件方面的挑战。 但现在,单片式 NFC 解决方案和全方位的软件支持极大地改变了在家用电子设备、可穿戴设备和物联网 (IoT) 设备设计中整合 NFC 功能的本质。

因此,开发人员可以加入诸多应用功能,却几乎不会影响设计封装、功耗或项目计划。

NFC 的双向通信能力独具特色,可提供简单、本质上安全的低功耗近距离无线连接。 仅当两个设备相互靠近时才能进行通信,因此不会出现消息拦截,并且最大程度减少了潜在的网络攻击途径。 而且,在通信时仅一台设备需要通电,因此平均功耗可维持在相当低的水平。

实际上,NFC 可以为各种智能家居和物联网应用带来巨大益处。 用户只需将启用 NFC 的智能手机靠近启用 NFC 的产品,即可完成蓝牙或 Wi-Fi 配对。 NFC 可以用作设备个性化的底层技术,并且可简化智能手机任务,如配置设置、传输数据或注册产品等。

嵌入式 NFC

NFC 是射频识别 (RFID) 的子集,在 13.56 MHz 下工作,可执行与传统 RFID 标签和非接触式智能卡相同的许多功能。 同时,NFC 还具有更大的灵活性,能在三种通信模式下工作:卡仿真、点对点和读/写。

在卡仿真模式下,NFC 设备用作非接触式智能卡,可在各种现有应用中使用,包括票务、门禁系统、交通、收费站和非接触式支付等。 点对点模式允许两个启用 NFC 的设备连接并交换信息。 例如,用户可以使用启用 NFC 的智能手机来设置其他设备的蓝牙或 Wi-Fi 设置参数,或者在受信任网络中调试其使用。 在读/写模式下,一台 NFC 设备可以从另一台 NFC 设备读取数据。 例如,启用 NFC 的智能手机可以读取 URL 或其他数据,如零售商店促销标牌上嵌入的销售优惠券。

用作标签的嵌入式 NFC 设备连接到产品内的主机处理器后,其工作类似于双端口存储器。 其中一个存储器端口可通过 NFC 接口以无线方式访问。 另一个端口可通过嵌入式系统的 I2C 接口访问。 因此,诸如智能手机等外部数据源可以将数据传递到嵌入式系统。 反过来,主机处理器可以更新存储在 NFC 设备中的数据,即使当产品断电也可向启用 NFC 的外部设备提供这些数据。

对于需要在嵌入式系统和外部系统(如启用 NFC 的智能手机)之间传输数据的应用,开发人员可以使用这种方法。 事实上,利用 NFC 设备无线通讯链接功能及其在下载过程中用于临时存储的片载存储器,开发人员可以用这种方法更新嵌入式系统的数据,甚至固件。

单片式 NFC 控制器

过去,设计人员希望在基于 MCU 的设计中添加 NFC 功能,但却面临硬件和软件的两大挑战。 使用传统 NFC 设备的硬件工程师需要确保设计满足 NFC 设备和主机之间的关键时序、保持低功耗要求,并且要最大程度减少设计封装和物料清单 (BOM)。 然而也许最大的影响在于软件方面,工程师通常不得不编写自己的代码,以处理构成单一应用级别 NFC 操作的诸多低级事务。

高级 NFC 设备,如 NXP Semiconductor PN7150,旨在简化物联网设计或任何嵌入式系统中的 NFC 功能集成。 PN7150 结合了射频前端以及低功耗 ARM® Cortex®-M0 内核、存储器和 I/O 外设(图 1)。

mcu

图 1: NXP Semiconductors PN7150 NFC 控制器结合了全套射频前端、ARM Cortex-M0 设备主机和集成固件。 (图片来源: NXP Semiconductors)

通过确保嵌入式设备主机和射频前端之间的最佳时序,该设备大大消除了传统的硬件集成问题,同时支持更高的射频输出功率。 此外,集成的 I2C 接口与 NXP 的 NTAG I2C Plus 兼容,适用于传感器、灯具和与智能家居网络相关的其他设备。 同时,该器件有助于降低功耗要求: PN7150 可以自动转换到低功耗模式,同时让主机保持休眠,直到需要进行射频通信为止。

除了简化硬件设计,PN7150 在软件方面也优势显著。 NXP 预装了该器件的嵌入式数据和代码存储器,并且可扩展支持 NFC 控制器接口 (NCI)。 NFC 论坛管理 NCI 技术规范,定义了 NFC 控制器 (NFCC) 和运行高级操作系统(如 Android, Linux 或 Windows IoT)的设备主机 (DH) 之间的逻辑接口。

PN7150 的嵌入式 NCI 固件减少了某些主机交互,并且为 NFC 应用软件开发人员提供更高的抽象层级,从而减轻了软件开发负担。 通过将低级代码移动到固件中,PN7150 还减少了主机端的应用代码基底面。

直接替代型解决方案

PN7150 具有集成的硬件和软件,专用于直接替代型 NFC 解决方案,适用于在 Android、Linux 或 Windows 环境下工作的开发人员(图 2)。 实际上,不熟悉 NFC 开发的开发人员可以利用 Arduino (NXP OM5578/PN7150ARDM)、BeagleBone Black (NXP OM5578/PN7150BBBM) 和 Raspbery Pi (NXP OM5578/PN7150RPIM) 的现有 PN7150 演示套件。 每种套件都包含一块 PN7150 NFC 控制板、一个专用接口板和一个 NFC 样卡。

mcu

图 2: NXP PN7150 需要较少的其他元器件即可交付完整的 NFC 子系统,它可通过简单硬件接口轻松集成主机 MCU,并通过 NCI 协议集成主机软件。 (图片来源: NXP Semiconductors)

设计人员需要较少的元器件即可为现有基于 MCU 的设计创建完整的 NFC 子系统。 实际上,在某些情况下,工程师可以通过在天线匹配电路中消除或组合一些无源元器件,进一步减少 BOM(图 3)。

mcu

图 3: 将 PN7150 用作 NFC 控制器 (NFCC),设计人员可以简化天线匹配电路,从而进一步减少某些应用中的 BOM。 (图片来源: NXP Semiconductors)

在典型的天线电路设计中,需要天线引线上的 RQ 阻尼电阻器来降低会对所产生信号的整形有不良影响的过高天线品质因数。 在采用标称天线品质因数的设计中,设计人员可以将这些 RQ 阻尼电阻器从天线端移除。 在匹配电路中,当特定设计的天线引线具有非常低的最大峰峰电压时,设计人员可以用单个电容器替换成对的并联电容器(并消除到 EMC 滤波器的连接)。 在典型应用中,小型天线连接到 PN7150,天线上产生的峰峰电压将相对较低。 因此,设计人员也可以移除去耦 Crx 电容器,并将 Rrx 电阻器直接连接到天线, 以简化 Rx 路径。

简化的软件

从软件角度看,PN7150 提供了一个简单的执行模型,可进一步加速产品开发(图 4)。 设备主机架构结合了传输层驱动程序、NCI 驱动程序和包含读/写、点对点或卡仿真库的 NFC 执行环境 (NFCEE) 中间件。 对于 NFC 操作,主机只需要通过 I2C 接口发送高级 NCI 操作到 PN7150。 反过来,PN7150 的固件可执行 NFC 协议中所需的详细事务。

mcu

图 4: NXP PN7150 的嵌入式 NCI 固件减少了设备主机 (DH) 上的软件封装,只需通过 I2C 硬件接口发送 NCI 指令,即可在 PN7150 NFC 控制器 (NFCC) 上执行详细的 NFC 事务。 (图片来源: 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 库。 开发人员可以使用简单调用来创建 NFC 应用,WriteTag 便是一个例子,它调用低级例程来处理 NFC 消息传递协议详细信息。 (列表来源: NXP Semiconductors)

设备主机使用 NCI 控制消息与 NFC 控制器交互。 一个特别重要的 NCI 指令序列为 NFC 控制器提供了一种机制来查找其他卡、读卡器或对等设备。 这种称为 RF Discovery 的指令序列让符合规范的 NFC 设备(如 PN7150)能在侦听其他发射设备和发射(轮询阶段)之间交替,以查找远程卡或标签。

如同任何射频技术一样,传输需要比无线电接收更高的功率(图 5)。 实际上,在轮询阶段,PN7150 功耗约为 30 mA,具体取决于天线特性。 在侦听阶段,PN7150 会等候外部生成的射频载波,当启用待机模式时,电流消耗会下降至 20 μA 左右。

mcu

图 5: 由于在标准 NFC 论坛 RF Discovery 序列中 NFC 设备的轮询阶段较长,因此功率要求可能相对较高。 (图片来源: NXP Semiconductors)

通常,轮询阶段会持续约 20 毫秒,而侦听阶段则为 300 毫秒到 500 毫秒。 对于 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)。

mcu

图 6: 通过使用特殊检测模式,NXP PN7150 可以显著降低 RF Discovery 回路的功耗,从而缩短耗费功率的轮询阶段。 (图片来源: NXP)

结论

NFC 提供安全的低功耗连接,能显著增强互联的家用电子设备、可穿戴设备和其他物联网设备的易用性。 只需将启用 NFC 的智能手机靠近连接的产品,用户就能调试产品、加载访问信息并检索产品中存储的信息。 然而在过去,在基于 MCU 的系统中实施 NFC 为硬件和软件集成都带来了设计难题。 相比之下,如 NXP PN7150 等 NFC 集成设备,可为 NFC 设计提供近乎可直接替代的解决方案,简化了启用 NFC 的应用中的硬件和软件开发。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分