如何快速增加NFC能力到任何应用程序

  为了满足日益增长的对近场通信(NFC)能力的需求,开发人员被要求快速创建优化设计。传统的方法是缓慢的发展,设计师的工作,但挑战,如射频电路优化,NFC协议管理,功耗和最小的设计足迹。

  为了帮助开发人员克服这些挑战,公司如NXP推出ICS和支持的硬件和软件,提供一个简单的方法来添加NFC功能的应用。

  本文将简要地讨论NFC如何超越基本服务点(POS)应用程序。然后介绍恩智浦lpc8n04 NFC方案在讨论如何使用它来创建高效的NFC设计能够支持范围广泛的应用。


  为什么NFC

  NFC已经成为应用程序的一个重要功能,超出了它在销售点付款场景中的最初用途。开发人员利用无处不在的NFC支持智能手机和其他移动设备,以简化设备在消费者,工业和其他部门的控制。

  只要将智能手机靠近智能玩具、家用电器或网络设备,用户就可以轻松、安全地配置和控制目标系统。从引发智能手机射频场,称为感应耦合装置(PCD),为目标,称为感应感应耦合卡(PICC)。

  使用这种方法,任何ISO 14443兼容的PCD和PICC都可以通过根据标准中指定的调制和编码方案对射频场进行数据调制来进行双向通信。


  NFC MCU

  NXP lpc8n04 MCU提供NFC设计具有成本效益的解决方案。基于ARM®皮质®-M0+处理器核心,4 x 4毫米24引脚单片机结合完整的NFC /RFID系统串行接口、GPIOs、和记忆,包括Flash,32字节,8字节的SRAM,4字节的EEPROM。随着其固有的低功耗要求,它的能力完全运行的收获射频能源,使之非常适合联网的物联网(物联网),独立系统中的智能标签,或任何需要优化的NFC解决方案的应用程序相连接的系统。

  为了简化开发,集成了ARM的lpc8n04嵌套向量中断控制器(NVIC)和串行线调试(SWD)。在这里实现两个观察点比较器和四断点比较器,社署提供的JTAG测试双向数据连接和调试,以及运行时访问系统内存设备上没有需要额外的软件。此外,该lpc8n04固件提供了一个完整的应用编程接口(API)擦除闪存部门,将数据复制到闪存,读程序独特的设备序列号工厂,和更多。

  当然,本文的主要功能是驻留在它的NFC子系统中。旨在支持日益增长的NFC功能的应用程序,该设备提供完整的NFC双向通信能力,使用13.56兆赫近距离信令。该装置具有广泛的NFC规格包括NFC /RFID ISO14443A兼容,NFC论坛类型2,和MIFARE轻EV1 PICC标准。

  子系统为硬件和软件连接提供了一个简单的接口模型(图1)。对于硬件接口,子系统的50皮法(PF)内部电容与标准的NFC天线如莫仕1462360021兼容。因此,开发人员可以将一个现成的lpc8n04 LA-LB引脚的天线。此外,该设备恢复其时钟从射频场,省去了额外的时钟组件的需要。

  NXP lpc8n04 MCU的集成射频子系统图

  

  图1:NXP lpc8n04 MCU的集成射频子系统在洛杉矶长滩引脚提供天线的连接,和一个软件接口,访问寄存器和SRAM。(图片来源:凯利讯半导体)

  在功能上,寄存器(cmdin,DATAOUT Sr)和SRAM用于NFC读/写操作都映射到共享内存的访问通过一个集成的仲裁单元管理。在通信会话期间,外部NFC / rfid发起者读取和写入寄存器或SRAM。反过来,固件在lpc8n04的ARM Cortex-M0+内核上运行访问寄存器和SRAM、分析信息,并回复相应地使用相同的共享资源。保护通信通道,开发者可以使用Mifare协议的口令认证方法来允许或阻止访问的需要。

  这整个通信序列开始时外部引发传输射频领域内的lpc8n04范围。射频场可以用来唤醒lpc8n04从低功耗睡眠模式和作为其唯一的动力来源,如下描述。


  电源管理

  在这些应用中,功耗通常是一个关键问题。在过去,开发人员常常发现自己被迫妥协的功能和性能,以尽量减少权力。与lpc8n04,开发者可以利用一些装置来调整功率利用率和性能满足要求。

  在减少功耗的典型方法中,开发人员经常修改系统时钟频率。与lpc8n04,开发人员可以使用这种方法来降低功耗(图2)。在最高8 MHz的时钟频率,这lpc8n04消耗约900微安(µ一)。减少到1 MHz的时钟速率下降,功耗约200µ除了调整系统时钟速率,开发者还可以利用许多不同的电源模式,通过选择性地关闭的lpc8n04部分降低功耗。

  通过降低系统时钟频率降低NXP lpc8n04消耗电流图

  

  图2:开发商可以显著减少从8 MHz的系统时钟最高频率降低lpc8n04电流消耗(曲线6)(5)4 MHz,2 MHz,1 MHz(4)(3),500千赫(2),甚至250千赫(1)。(图片来源:凯利讯半导体)

  作为最复杂的设备,该lpc8n04组织子系统为存储和模拟外设不同的电源域;对于数字内核和外设;和电路,如实时时钟(RTC)和棕色的探测器(BOD),需要持续的动力(图3)。反过来,一个集成的电源管理单元(PMU)使和禁用低压差稳压器(LDO)的功率模拟和数字电源领域。

  NXP lpc8n04单片机的电源架构图

  

  图3:在NXP lpc8n04单片机的电源架构,电源管理单元(PMU)支持多种低功耗模式,选择性地启用或禁用低压降(LDO)监管机构提供的模拟和数字电源域。(图片来源:凯利讯半导体)

  在lpc8n04功率控制设置位(PCON)登记,开发商程序PMU控制电源这些领域三的低功耗模式:

  在休眠模式下,PMU对两个域都保持功率——提供功率减少,同时允许处理器功能和指令执行的快速恢复。

  在深睡眠模式下,PMU只禁用模拟域——提供保持处理器状态、外围寄存器和内部SRAM的最低功率模式,但要求非易失性存储器的增量电能消耗时间。

  深掉电模式,PMU关闭模拟和数字领域,降低功耗只有3µ在对处理器状态和指令执行修复较长的延迟成本。

  在所有这三种低功耗模式中,PMU关闭处理器核心。因此,低功率模式的使用会导致恢复到完全工作模式的增量唤醒时间。当然,唤醒时间随着较低的低功率模式而变长。然而,在实践中,大多数NFC应用程序的唤醒时间可能足够快。在最坏的情况下,实现从电源和电源上的应用重置激活模式的总启动时间只有大约2.5毫秒(毫秒)。


  RF能量收集

  的lpc8n04相对快速唤醒时间为开发者提供了一个机会,利用设备的能力,从发起者的射频场本身获取能量。当VNFC(从射频场提取电压)超过阈值,在设备的电源架构源选择器自动切换装置的电源从电池到收获的能源供应(又见图3)。开发商可以操作lpc8n04仅从源或只是使用RF能量收集作为一个电池备份源。虽然源选择器单元自动选择最佳的来源,开发商能力或vnfc VBAT选择应用需求决定的。

  在实际中,从接收的RF能量中供电的能力取决于外部读取器发出的RF场强,以及接收天线电路连接到天线罩的效率。正如前面提到的,开发者只需要连接一个合适的天线的lpc8n04 LA-LB引脚的。然而,在实践中,最大限度地接收能量的能力取决于最佳设计的天线电路。

  正如任何RFID / NFC的设计,天线的电感和射频前端的总输入电容形成谐振电路(天线、接收机、连接寄生)。该组件的总电阻定义了品质因数,它与谐振电路的性能和场强有关。例如,更高的连接电阻降低了品质因数,降低了rf发射机的有效传输范围。

  在设计一个合适的天线产生的输入电容和输入电阻对输入电压的依赖进一步的并发症(vla-lb为lpc8n04)。随着输入电压的变化,输入电容的相关变化导致谐振频率的变化,而输入电阻的相关变化导致品质因数的变化。天线设计专家通常通过设计最小输入电压来解释这些变化。


  快速开发平台

  虽然概念上很简单,但从零开始实现有效的NFC设计,可能会减慢开发人员快速部署应用程序的能力,因为这些应用程序充分利用了NFC功能的智能手机。而不是创建自己的系统,开发人员可以立即开始开发NFC应用的基础om40002 lpc8n04 NXP开发板建筑。该lpc8n04板和相关的软件开发包提供一个立即的NFC解决方案的组合,以及作为一个平台来创建定制的硬件设计和软件应用。

  的om40002板由一个易碎的界面分离两部分(见如图4之间缺口的垂直线)。主处理器(MP)部分包括在板的顶部lpc8n04(图4A,右)和底部集成天线(图4B,右)。调试探头(DP)部分包括NXP ARM Cortex-M0 lpc11u35fhi33单片机调试资源(图4A,左)。在DP部分的底部(图4B,左),一个5×7的LED阵列和一个表面安装扬声器提供了一个简单的用户界面机制,用于开发包中包含的示例应用程序。在开发过程中,工程师可以使用完整的板作为一个完整的系统。对于定制设计,开发人员可以使用完整的板来调试其应用程序软件,然后分离MP部分用作独立的NFC子系统。

  NXP om40002板图像

  

  图4。NXP om40002板结合调试探针(DP)部分(A和B的左侧)和主处理器(MP)的部分,允许开发者将MP部分添加这个完整的NFC系统自身的设计。(图片来源:凯利讯半导体)

  董事会预装一个样本应用程序运行在lpc11u35fhi33 MCU固件。利用板的LED阵列和扬声器,应用了双向NFC数据交换格式(Format)的lpc8n04和NFC功能的智能手机之间的通讯采用NXP运行提供免费的Android应用程序。使用的大多数的NFC智能手机和其他移动设备,NDEF是一个轻量级的格式封装任意数据到一个单一的消息。与样品的Android应用程序,开发人员可以更清楚地了解该类型和数据交换,可以通过他们的智能手机和om40002板之间NDEF大小。


  NDEF处理

  超越简单的演示能力,然而,示例应用程序开发人员提供了关键的设计模式的使用lpc8n04 NDEF消息处理。包括在NXP的软件开发包,低级别的服务程序办理登记的水平交易,而一个示例应用程序说明了高层次的操作。包括在开发包,一个主程序说明开发商将初始化lpc8n04硬件和相关软件结构的主处理循环之前(清单1)。

  主(空)

  {

  int变量;

  uint16_t decposition,数字,prevdigit、指数、文字大小;

  uint32_t tempspeed;

  布尔initdispstarted = false;

  pmu_dpd_wakeupreason_t wakeupreason;

  ();

  wakeupreason = chip_pmu_powermode_getdpdwakeupreason();

  如果(wakeupreason = = pmu_dpd_wakeupreason_rtc){

  *闪烁导致第二*

  lpc_gpio ->数据[ 0xfff ] = 0xe60u;

  chip_timer_setmatch(lpc_timer32_0,2, 1000 * 100 + chip_timer_readcount(lpc_timer32_0));

  chip_timer_resetonmatchdisable(lpc_timer32_0,2);

  chip_timer_stoponmatchdisable(lpc_timer32_0,2);

  chip_timer_matchenableint(lpc_timer32_0,2);

  __wfi();

  }

  别的{

  。..

  *等待命令。基于这些命令发送响应。* /

  而(hostticks < hosttimeout){

  。..

  如果((stargetwritten)和takememsemaphore()){

  stargetwritten = false;

  如果(ndeft2t_getmessage(sndefinstance sizeof(数据,数据,))){

  字符*数据;

  uint8_t * bindata;

  int的长度;

  ndeft2t_parse_record_info_t recordinfo;

  而(ndeft2t_getnextrecord(sndefinstance,与recordinfo)){

  如果((recordinfo.type = = ndeft2t_record_type_text)&(((char *)中的recordinfo.pstring,“恩”,2)= = 0)){

  数据ndeft2t_getrecordpayload(sndefinstance,和长度);

  strncpy(g_displaytext,数据,(size_t)长度);

  g_displaytext [长度] = 0;

  g_displaytextlen =(uint8_t)长度;

  eepromwritetag(ee_disp_text,(uint8_t *)g_displaytext,(uint16_t)(((uint16_t)长度+ 4)和0xfffc));

  startleddisplay(真的);

  }

  else if((recordinfo.type = = ndeft2t_record_type_mime)&(((char *)中的recordinfo.pstring,“application/octet-stream”,24)= = 0)){

  (=,长度);

  如果(bindata [ 0 ] = = 0x53){

  extractmusic(与bindata [ 1 ]);

  eepromwritetag(ee_music_tone,(uint8_t *)& bindata [ 1 ],(uint16_t)(((uint16_t)长度+ 2)和0xfffc));

  如果(musicinprogress){

  stopmusic();

  startmusic();

  }

  }

  如果(bindata [ 0 ] = = 0x51){

  chip_timer_matchdisableint(lpc_timer32_0,0);

  desiredspeed =(uint8_t)(bindata [ 1 ] + 5U);

  如果((desiredspeed<5)| |(desiredspeed > 30)){

  desiredspeed = 20;

  }

  chip_timer_setmatch(lpc_timer32_0,0, 1000×led_refresh_rate_ms + chip_timer_readcount(lpc_timer32_0));

  chip_timer_matchenableint(lpc_timer32_0,0);

  eepromwritetag(ee_scroll_speed,(uint8_t *)& bindata [ 1 ],(uint16_t)(((uint16_t)长度+ 3)和0xfffc));

  }

  }

  }

  }

  releasememsemaphore();

  。..

  清单1:NXP lpc8n04开发软件包提供了一套完整的库和示例应用程序软件演示基本的设计模式的关键NFC操作如读一个NDEF消息在这个代码片段所示。

  当第一次调用,主程序首先检查是否开始因为特定的RTC事件(wakeupreason = = pmu_dpd_wakeupreason_rtc)指示唤醒计数器已过期。如果没有,例程进入主循环,从读取器测试各种命令,并在响应中执行适当的操作。如果智能手机不再在范围内,那么如果没有NFC活动,例程最终会超时。

  尽管概念简单,示例应用程序和底层服务程序提供一个全面的介绍,使用lpc8n04 NDEF消息处理。如清单1所示,该示例应用程序的主循环说明NDEF消息与工作的操作顺序。

  在正常操作中,在一个新的外观lpc8n04 NDEF消息共享内存调用中断,设置一个标志(stargetwritten)。在这个信号量的基础架构,主程序等待直到它可以请求信号量(takememsemaphore())在装货前的消息(ndeft2t_getmessage)到缓冲区。日常工作通过NDEF消息(ndeft2t_getnextrecord),提取的有效载荷,并分析结果。

  在这种应用中,如果负载是一个文本字符串,它将数据写入EEPROM(eepromwritetag)并启动LED显示屏(startleddisplay)。而如果有效载荷类型“application/octet-stream”检查bindata [ 0 ]看看数据是音乐的价值(bindata [ 0 ] = = 0x53)或滚动速度调整(bindata [ 0 ] = = 0x51)。如果是后者,它节省了新的卷轴速度在EEPROM中。如果是前者,常规提取音乐数据(extractmusic),将数据写入EEPROM中,并重新启动音乐播放器(startmusic),如果用户有音乐播放器运行。

  软件包为应用程序和服务例程提供完整的源代码。例如,开发人员可以检查源代码中的ndeft2t_getmessage()和ndeft2t_getnextrecord()功能来学习阅读和处理NDEF消息的细节。在许多情况下,开发商将能够使用的服务程序无需修改,而是专注于main()常规和他们自己的应用程序的细节。


  结论

  近场通信的应用正在逐步超越销售点系统。然而,对于开发人员来说,与优化RF性能相关的挑战,同时尽量减少功耗,即使最有经验的工程师也能拖延。

  通过集成一个完整的NFC系统,消除了很多lpc8n04 NXP单片机NFC设计的复杂性。为开发商寻找一个快速的解决方案,NXP lpc8n04基于开发板和软件提供一个完整的应用程序可以立即使用,以及一个用于创建自定义的NFC解决方案开发平台。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章