影音先锋熟女少妇av资源,国产精品52页,2021精品国产自在现线看,亚洲高清中文字幕在线

物聯(lián)傳媒 旗下網(wǎng)站
登錄 注冊(cè)

如何快速將NFC功能添加到任何應(yīng)用程序

作者:ioter
來(lái)源:RFID世界網(wǎng)
日期:2019-03-12 11:02:23
摘要:如何快速將NFC功能添加到任何應(yīng)用程序
關(guān)鍵詞:NFC

  為了滿足對(duì)近場(chǎng)通信(NFC)能力日益增長(zhǎng)的需求,開發(fā)人員被要求快速創(chuàng)建優(yōu)化設(shè)計(jì)。傳統(tǒng)方法的發(fā)展速度緩慢,因?yàn)樵O(shè)計(jì)人員面臨諸如RF電路優(yōu)化,NFC協(xié)議管理,功耗以及最小設(shè)計(jì)占用等挑戰(zhàn)。

  為了幫助開發(fā)人員克服這些挑戰(zhàn),恩智浦等公司推出了IC,并支持硬件和軟件,為應(yīng)用程序添加NFC功能提供了一種更簡(jiǎn)單的方法。

  本文將簡(jiǎn)要討論NFC如何超越基本的服務(wù)點(diǎn)(POS)應(yīng)用。之后它將介紹恩智浦LPC8N04 NFC解決方案,然后討論如何使用它來(lái)創(chuàng)建能夠支持廣泛應(yīng)用的高效NFC設(shè)計(jì)。

  為什么選擇NFC

  NFC已經(jīng)成為銷售支付場(chǎng)景中超出其最初使用范圍的應(yīng)用中的重要特性。開發(fā)商正在智能手機(jī)和其他移動(dòng)設(shè)備中利用對(duì)NFC的無(wú)處不在的支持,以簡(jiǎn)化消費(fèi),工業(yè)和其他領(lǐng)域的設(shè)備控制。

  只需將智能手機(jī)靠近智能玩具,家用電器或網(wǎng)絡(luò)設(shè)備,用戶就可以輕松安全地配置和控制目標(biāo)系統(tǒng)。來(lái)自發(fā)起者的智能手機(jī)RF場(chǎng)被稱為接近耦合設(shè)備(PCD),為目標(biāo)供電,稱為接近感應(yīng)耦合卡(PICC)。

  采用這種方法,任何符合ISO 14443標(biāo)準(zhǔn)的PCD和PICC都可以根據(jù)標(biāo)準(zhǔn)中規(guī)定的調(diào)制和編碼方案,通過(guò)用數(shù)據(jù)調(diào)制RF場(chǎng)來(lái)執(zhí)行雙向通信。

  NFC MCU

  恩智浦LPC8N04 MCU為NFC設(shè)計(jì)提供了經(jīng)濟(jì)高效的解決方案?;贏RM ®皮質(zhì)® -M0 +處理器核,這4×4mm的24針MCU結(jié)合了完整的NFC / RFID子系統(tǒng)與串行接口,GPIO以及存儲(chǔ)器,包括32千字節(jié)閃存,SRAM的8K字節(jié),和4千字節(jié)的EEPROM。除了固有的低功耗要求以外,其完全采集RF能量的能力使其非常適合用于物聯(lián)網(wǎng)(IoT)的無(wú)電池連接系統(tǒng),獨(dú)立系統(tǒng)中的智能標(biāo)簽或任何需要優(yōu)化的NFC解決方案的應(yīng)用。

  為了簡(jiǎn)化開發(fā),LPC8N04集成了ARM嵌套向量中斷控制器(NVIC)和串行線調(diào)試(SWD)。這里采用兩個(gè)觀察點(diǎn)比較器和四個(gè)斷點(diǎn)比較器實(shí)現(xiàn),SWD為JTAG測(cè)試和調(diào)試提供雙向數(shù)據(jù)連接,并且無(wú)需設(shè)備上的其他軟件即可訪問(wèn)系統(tǒng)存儲(chǔ)器。此外,LPC8N04固件還提供完整的應(yīng)用程序編程接口(API),用于擦除閃存扇區(qū),將數(shù)據(jù)復(fù)制到閃存,讀取工廠編程的唯一設(shè)備序列號(hào)等。

  當(dāng)然,本文主要關(guān)注的功能在于其NFC子系統(tǒng)。為了支持日益增長(zhǎng)的支持NFC的應(yīng)用,該器件使用13.56 MHz接近信令提供完整的NFC雙向通信功能。該器件兼容各種NFC規(guī)范,包括NFC / RFID ISO 14443A,NFC Forum Type 2和MIFARE Ultralight EV1 PICC標(biāo)準(zhǔn)。

  該子系統(tǒng)為硬件和軟件連接提供了一個(gè)簡(jiǎn)單的接口模型(圖1)。對(duì)于硬件接口,子系統(tǒng)的50皮法(pF)內(nèi)部電容與標(biāo)準(zhǔn)NFC天線(例如Molex 1462360021)兼容。因此,開發(fā)人員可以將現(xiàn)成的天線連接到LPC8N04的LA-LB引腳。此外,該器件從RF場(chǎng)恢復(fù)其時(shí)鐘,無(wú)需額外的時(shí)鐘組件。

圖1:恩智浦LPC8N04 MCU的集成射頻子系統(tǒng)在其LA-LB引腳提供天線連接,并提供訪問(wèn)寄存器和SRAM的軟件接口。(圖片來(lái)源:恩智浦)

  功能上,NFC讀/寫操作中使用的寄存器(CMDIN,DATAOUT,SR)和SRAM都映射到共享存儲(chǔ)器,由集成仲裁單元管理訪問(wèn)。在通信會(huì)話期間,外部NFC / RFID啟動(dòng)器讀取和寫入寄存器或SRAM。反過(guò)來(lái),在LPC8N04的Arm Cortex-M0 +內(nèi)核上運(yùn)行的固件訪問(wèn)寄存器和SRAM,解析消息,并使用相同的共享資源進(jìn)行適當(dāng)?shù)膽?yīng)答。為了保護(hù)通信通道,開發(fā)人員可以使用MIFARE協(xié)議的密碼認(rèn)證方法,根據(jù)需要允許或阻止訪問(wèn)。

  當(dāng)外部啟動(dòng)器在LPC8N04的范圍內(nèi)發(fā)送RF場(chǎng)時(shí),整個(gè)通信序列開始。如下所述,RF場(chǎng)可用于將LPC8N04從低功耗休眠模式中喚醒并作為其唯一電源。

  能源管理

  在這些應(yīng)用中,功耗通常是一個(gè)關(guān)鍵問(wèn)題。過(guò)去,開發(fā)人員經(jīng)常發(fā)現(xiàn)自己被迫損害功能和性能以最大限度地降低功耗。利用LPC8N04,開發(fā)人員可以利用多種器件功能調(diào)整功率利用率和性能以滿足要求。

  在降低功耗的典型方法中,開發(fā)人員經(jīng)常修改系統(tǒng)時(shí)鐘頻率。利用LPC8N04,開發(fā)人員可以使用這種方法顯著降低功耗(圖2)。在最高8 MHz時(shí)鐘頻率下,LPC8N04的功耗約為900微安(μA)。降低至1 MHz時(shí)鐘速率可將功耗降至200μA左右。除了調(diào)整系統(tǒng)時(shí)鐘速率之外,開發(fā)人員還可以利用多種不同的功耗模式,通過(guò)選擇性關(guān)閉LPC8N04的一部分來(lái)降低功耗。

通過(guò)降低系統(tǒng)時(shí)鐘頻率來(lái)降低??NXP LPC8N04電流消耗的圖表

圖2:開發(fā)人員可以通過(guò)將系統(tǒng)時(shí)鐘從8 MHz最大頻率(曲線6)降低至4 MHz(5),2 MHz(4),1 MHz(3),500 kHz(2)或更高的頻率,顯著降低LPC8N04的電流消耗。甚至250 kHz(1)。(圖片來(lái)源:恩智浦)

  與大多數(shù)復(fù)雜設(shè)備一樣,LPC8N04將子系統(tǒng)組織為不同的存儲(chǔ)器和模擬外設(shè)電源域; 數(shù)字內(nèi)核和外設(shè); 以及需要持續(xù)供電的實(shí)時(shí)時(shí)鐘(RTC)和欠壓檢測(cè)器(BOD)等電路(圖3)。反過(guò)來(lái),集成電源管理單元(PMU)啟用和禁用為模擬和數(shù)字電源域供電的低壓差(LDO)穩(wěn)壓器。

恩智浦LPC8N04 MCU的電源架構(gòu)圖

圖3:在恩智浦LPC8N04 MCU的電源架構(gòu)中,電源管理單元(PMU)通過(guò)選擇性地啟用或禁用提供模擬和數(shù)字電源域的低壓差(LDO)穩(wěn)壓器來(lái)支持多種低功耗模式。(圖片來(lái)源:恩智浦)

  通過(guò)設(shè)置LPC8N04電源控制(PCON)寄存器中的位,開發(fā)人員編程PMU以三種低功耗模式控制對(duì)這些域的供電:

  在睡眠模式下,PMU保持兩個(gè)域的電源 - 提供功率降低,同時(shí)允許快速恢復(fù)處理器功能和指令執(zhí)行。

  在深度睡眠模式下,PMU僅禁用模擬域 - 提供保持處理器狀態(tài),外設(shè)寄存器和內(nèi)部SRAM的最低功耗模式,但需要增加上電時(shí)間以訪問(wèn)非易失性存儲(chǔ)器。

  在深度掉電模式下,PMU可關(guān)閉模擬域和數(shù)字域,從而將功耗降至3μA,但需要延長(zhǎng)處理器狀態(tài)恢復(fù)時(shí)間和指令執(zhí)行時(shí)間。

  在所有這三種低功耗模式下,PMU都會(huì)關(guān)閉處理器內(nèi)核。因此,使用低功耗模式會(huì)導(dǎo)致增加喚醒時(shí)間以返回完整的活動(dòng)模式。當(dāng)然,隨著更深入的低功耗模式,喚醒時(shí)間會(huì)延長(zhǎng)。但實(shí)際上,喚醒時(shí)間對(duì)于大多數(shù)NFC應(yīng)用來(lái)說(shuō)可能足夠快。在最壞的情況下,通過(guò)電源和上電復(fù)位實(shí)現(xiàn)主動(dòng)模式的總啟動(dòng)時(shí)間僅約為2.5毫秒(ms)。

  射頻能量收集

  LPC8N04相對(duì)較快的喚醒時(shí)間為開發(fā)人員提供了利用該設(shè)備從發(fā)起者的RF領(lǐng)域本身收集能量的能力的機(jī)會(huì)。當(dāng)VNFC(從RF場(chǎng)提取的電壓)升高到閾值以上時(shí),器件電源架構(gòu)中的電源選擇器會(huì)自動(dòng)將器件的電源從電池切換到收集的電源(再次參見圖3)。開發(fā)人員可以單獨(dú)從這個(gè)渠道運(yùn)行LPC8N04,或者僅使用RF能量收集作為電池備份源。雖然源選擇器單元自動(dòng)選擇最佳源,但開發(fā)人員可以根據(jù)應(yīng)用要求強(qiáng)制選擇VBAT或VNFC。

  實(shí)際上,從收集的RF能量為L(zhǎng)PC8N04供電的能力取決于外部讀取器發(fā)射的RF場(chǎng)強(qiáng)以及連接到LPC8N04的接收天線電路的效率。如前所述,開發(fā)人員只需將適當(dāng)?shù)奶炀€連接到LPC8N04的LA-LB引腳。然而,實(shí)際上,最大化接收能量的能力取決于最佳設(shè)計(jì)的天線電路。

  與任何RFID / NFC設(shè)計(jì)一樣,天線的電感與RF前端的總輸入電容(天線,接收器和連接寄生效應(yīng))形成諧振電路。該組件的總電阻定義了與諧振電路的性能和場(chǎng)強(qiáng)相關(guān)的品質(zhì)因數(shù)。例如,較高的連接電阻會(huì)降低品質(zhì)因數(shù),從而降低射頻發(fā)射器的有效傳輸范圍。

  設(shè)計(jì)合適天線的另一個(gè)復(fù)雜因素是輸入電容和輸入電阻與輸入電壓的依賴關(guān)系(LPC8N04的V LA-LB)。隨著輸入電壓的變化,輸入電容的相關(guān)變化導(dǎo)致諧振頻率的變化,而輸入電阻的相關(guān)變化導(dǎo)致品質(zhì)因數(shù)的變化。天線設(shè)計(jì)專家通常通過(guò)設(shè)計(jì)最小輸入電壓來(lái)解決這些變化。

  快速開發(fā)平臺(tái)

  盡管概念上很簡(jiǎn)單,但從頭開始實(shí)施高效的NFC設(shè)計(jì)可能會(huì)減慢開發(fā)人員的速度,以期快速部署可利用NFC智能手機(jī)的廣泛可用性的應(yīng)用程序。開發(fā)人員可以立即開始開發(fā)基于恩智浦LPC8N04的OM40002開發(fā)板,開發(fā)NFC應(yīng)用程序,而不是創(chuàng)建自己的系統(tǒng)。LPC8N04板與相關(guān)恩智浦軟件開發(fā)套件的組合提供了即時(shí)NFC解決方案,以及創(chuàng)建定制硬件設(shè)計(jì)和軟件應(yīng)用程序的平臺(tái)。

  OM40002板包含兩個(gè)由易碎接口分開的部分(如圖4中凹槽之間的垂直線所示)。主處理器(MP)部分包括板頂部的LPC8N04(圖4A右側(cè))和底部的集成天線(圖4B右側(cè))。調(diào)試探頭(DP)部分包括恩智浦ARM Cortex-M0 LPC11U35FHI33MCU和調(diào)試資源(圖4A,左側(cè))。在DP部分的底部(圖4B,左側(cè)),一個(gè)5 x 7 LED陣列和一個(gè)表面貼裝揚(yáng)聲器為開發(fā)包中包含的示例應(yīng)用程序提供了一個(gè)簡(jiǎn)單的用戶界面機(jī)制。在開發(fā)過(guò)程中,工程師可以使用全板作為一個(gè)完整的系統(tǒng)。對(duì)于定制設(shè)計(jì),開發(fā)人員可以使用全電路板調(diào)試其應(yīng)用軟件,然后再將MP部分分開以用作獨(dú)立的NFC子系統(tǒng)。

恩智浦OM40002板的圖像

圖4.恩智浦OM40002主板將調(diào)試探頭(DP)部分(A和B左側(cè))和主處理器(MP)部分組合在一起,允許開發(fā)人員將MP部分分開,以將此完整的NFC子系統(tǒng)添加到他們自己的設(shè)計(jì)中。(圖片來(lái)源:恩智浦)

  該電路板預(yù)裝了一個(gè)在LPC11U35FHI33 MCU上作為固件運(yùn)行的示例應(yīng)用程序。該應(yīng)用使用該電路板的LED陣列和揚(yáng)聲器,演示LPC8N04與運(yùn)行由恩智浦提供的免費(fèi)Android應(yīng)用的支持NFC的智能手機(jī)之間的雙向NFC數(shù)據(jù)交換格式(NDEF)消息。大多數(shù)支持NFC的智能手機(jī)和其他移動(dòng)設(shè)備都使用NDEF,它是一種輕量級(jí)格式,可將任意數(shù)據(jù)封裝到單個(gè)消息中。通過(guò)示例Android應(yīng)用程序,開發(fā)人員可以更清楚地了解可通過(guò)NDEF在其智能手機(jī)和OM40002板之間交換的數(shù)據(jù)類型和大小。

  NDEF處理

  然而,除了直觀的功能演示之外,示例應(yīng)用程序還為開發(fā)人員提供了使用LPC8N04處理NDEF消息的關(guān)鍵設(shè)計(jì)模式。包含在恩智浦軟件開發(fā)包中的低級(jí)服務(wù)例程處理寄存器級(jí)事務(wù),而示例應(yīng)用程序則演示了更高級(jí)別的操作。包含在開發(fā)包中的主例程顯示了開發(fā)人員在主處理循環(huán)(清單1)之前如何初始化LPC8N04硬件和相關(guān)軟件結(jié)構(gòu)。

  int main(void)

  {

  int temp;

  uint16_t decPosition, digit, prevDigit, index, textSize;

  uint32_t tempSpeed;

  bool initDispStarted = false;

  PMU_DPD_WAKEUPREASON_T wakeupReason;

  Init();

  wakeupReason = Chip_PMU_PowerMode_GetDPDWakeupReason();

  if(wakeupReason == PMU_DPD_WAKEUPREASON_RTC) {

  /* Blink LED for second */

  LPC_GPIO->DATA[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();

  }

  else {

  . . .

  /* Wait for a command. Send responses based on these commands. */

  while (hostTicks < hostTimeout) {

  . . .

  if ((sTargetWritten) && takeMemSemaphore()) {

  sTargetWritten = false;

  if (NDEFT2T_GetMessage(sNdefInstance, sData, sizeof(sData))) {

  char * data;

  uint8_t *binData;

  int length;

  NDEFT2T_PARSE_RECORD_INFO_T recordInfo;

  while (NDEFT2T_GetNextRecord(sNdefInstance, &recordInfo)) {

  if ((recordInfo.type == NDEFT2T_RECORD_TYPE_TEXT) && (strncmp((char *)recordInfo.pString, "en", 2) == 0)) {

  data = NDEFT2T_GetRecordPayload(sNdefInstance, &length);

  strncpy(g_displayText, data, (size_t)length);

  g_displayText[length] = 0;

  g_displayTextLen = (uint8_t)length;

  eepromWriteTag(EE_DISP_TEXT, (uint8_t *)g_displayText, (uint16_t)(((uint16_t)length+4) & 0xFFFC));

  startLEDDisplay(true);

  }

  else if((recordInfo.type == NDEFT2T_RECORD_TYPE_MIME) && (strncmp((char *)recordInfo.pString, "application/octet-stream", 24) == 0)) {

  binData = NDEFT2T_GetRecordPayload(sNdefInstance, &length);

  if(binData[0] == 0x53) {

  extractMusic(&binData[1]);

  eepromWriteTag(EE_MUSIC_TONE, (uint8_t *)&binData[1], (uint16_t)(((uint16_t)length+2) & 0xFFFC));

  if(musicInProgress) {

  stopMusic();

  startMusic();

  }

  }

  else if(binData[0] == 0x51) {

  Chip_TIMER_MatchDisableInt(LPC_TIMER32_0, 0);

  desiredSpeed = (uint8_t)(binData[1] + 5U);

  if((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)length+3) & 0xFFFC));

  }

  }

  }

  }

  releaseMemSemaphore();

  . . .

  清單1:恩智浦LPC8N04開發(fā)軟件包提供了一套完整的庫(kù)和示例應(yīng)用軟件,演示關(guān)鍵NFC操作的基本設(shè)計(jì)模式,如讀取此代碼段中所示的NDEF消息。(代碼來(lái)源:恩智浦)

  首次調(diào)用時(shí),主例程首先測(cè)試以確定是否由于特定的RTC事件(wakeupReason == PMU_DPD_WAKEUPREASON_RTC)指示喚醒計(jì)數(shù)器已過(guò)期而啟動(dòng)。如果沒(méi)有,例程進(jìn)入它的主循環(huán),測(cè)試讀者的各種命令并作出響應(yīng)來(lái)執(zhí)行適當(dāng)?shù)牟僮?。例如,如果由于智能手機(jī)不在范圍內(nèi)而未發(fā)生NFC活動(dòng),則例程會(huì)最終超時(shí)。

  雖然概念很簡(jiǎn)單,但示例應(yīng)用程序和底層服務(wù)例程提供了使用LPC8N04對(duì)NDEF消息處理的全面介紹。如清單1所示,示例應(yīng)用程序的主循環(huán)說(shuō)明了使用NDEF消息的操作順序。

  在正常操作中,LPC8N04共享內(nèi)存中出現(xiàn)新的NDEF消息會(huì)調(diào)用設(shè)置標(biāo)志(sTargetWritten)的中斷。在這個(gè)基于信號(hào)量的體系結(jié)構(gòu)中,主例程會(huì)等待,直到它可以takeMemSemaphore()在將消息(NDEFT2T_GetMessage)加載到其緩沖區(qū)之前聲明信號(hào)量()。該例程通過(guò)NDEF消息(NDEFT2T_GetNextRecord)工作,提取有效負(fù)載并解析結(jié)果。

  在此應(yīng)用程序中,如果有效負(fù)載是文本字符串,它將數(shù)據(jù)寫入EEPROM(eepromWriteTag)并啟動(dòng)LED顯示(startLEDDisplay)。如果相反,有效載荷是MIME類型“application / octet-stream”,它將檢查binData[0]數(shù)據(jù)是否為音樂(lè)(binData[0] == 0x53)或滾動(dòng)速度調(diào)整值(binData[0] == 0x51)。如果是后者,它會(huì)將新的滾動(dòng)速度保存在EEPROM中。如果前者提取音樂(lè)數(shù)據(jù)(extractMusic),則將數(shù)據(jù)寫入EEPROM,然后重新啟動(dòng)音樂(lè)播放器(startMusic),如果用戶使音樂(lè)播放器運(yùn)行。

  該軟件包為應(yīng)用程序和服務(wù)例程提供完整的源代碼。例如,開發(fā)人員可以檢查函數(shù)NDEFT2T_GetMessage()和NDEFT2T_GetNextRecord()函數(shù)中的源代碼,以了解讀取和處理NDEF消息的細(xì)節(jié)。在很多情況下,開發(fā)人員可能無(wú)需修改即可使用這些服務(wù)例程,而是將重點(diǎn)放在main()例程和他們自己的應(yīng)用程序的細(xì)節(jié)上。

  結(jié)論

  近場(chǎng)通信應(yīng)用正在進(jìn)入超越銷售點(diǎn)系統(tǒng)的越來(lái)越多的細(xì)分市場(chǎng)。然而,對(duì)于開發(fā)人員來(lái)說(shuō),與優(yōu)化射頻性能同時(shí)最大限度地降低功耗相關(guān)的挑戰(zhàn)甚至可能導(dǎo)致最有經(jīng)驗(yàn)的工程師。

  通過(guò)集成完整的NFC子系統(tǒng),恩智浦LPC8N04 MCU消除了NFC設(shè)計(jì)的大部分復(fù)雜性。對(duì)于尋求快速解決方案的開發(fā)人員來(lái)說(shuō),基于恩智浦LPC8N04的開發(fā)板和軟件提供了一個(gè)可立即使用的完整應(yīng)用程序,以及用于創(chuàng)建定制NFC解決方案的開發(fā)平臺(tái)。