在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于瑞芯微RK2206芯片+Harmony LiteOS操作系統(tǒng)的NFC控制案例

電子發(fā)燒友開(kāi)源社區(qū) ? 來(lái)源:HarmonyOS官方合作社區(qū) ? 作者:HarmonyOS官方合作社 ? 2022-04-21 08:47 ? 次閱讀

一、簡(jiǎn)介

NFC英文全稱(chēng)Near Field Communication,近距離無(wú)線通信。是由飛利浦公司發(fā)起,由諾基亞、索尼等著名廠商聯(lián)合主推的一項(xiàng)無(wú)線技術(shù)。NFC由非接觸式射頻識(shí)別(RFID)及互聯(lián)互通技術(shù)整合演變而來(lái),在單一芯片上結(jié)合感應(yīng)式讀卡器、感應(yīng)式卡片和點(diǎn)對(duì)點(diǎn)的功能,能在短距離內(nèi)與兼容設(shè)備進(jìn)行識(shí)別和數(shù)據(jù)交換。這項(xiàng)技術(shù)最初只是RFID技術(shù)和網(wǎng)絡(luò)技術(shù)的簡(jiǎn)單合并,現(xiàn)在已經(jīng)演變成一種短距離無(wú)線通信技術(shù),發(fā)展態(tài)勢(shì)相當(dāng)迅速。與RFID不同的是,NFC具有雙向連接和識(shí)別的特點(diǎn),工作于13.56MHz頻率范圍,作用距離10厘米左右。NFC技術(shù)在ISO 18092、ECMA 340和ETSI TS 102 190框架下推動(dòng)標(biāo)準(zhǔn)化,同時(shí)也兼容應(yīng)用廣泛的ISO 14443 Type-A、B以及Felica標(biāo)準(zhǔn)非接觸式智能卡的基礎(chǔ)架構(gòu)。

NFC芯片裝在手機(jī)上,手機(jī)就可以實(shí)現(xiàn)小額電子支付和讀取其他NFC設(shè)備或標(biāo)簽信息。NFC的短距離交互大大簡(jiǎn)化整個(gè)認(rèn)證識(shí)別過(guò)程,使電子設(shè)備間互相訪問(wèn)更直接、更安全和更清楚。通過(guò)NFC,電腦數(shù)碼相機(jī)、手機(jī)、PDA等多個(gè)設(shè)備之間可以很方便快捷地進(jìn)行無(wú)線連接,進(jìn)而實(shí)現(xiàn)數(shù)據(jù)交換和服務(wù)。

本文基于瑞芯微RK2206芯片 + Harmony LiteOS操作系統(tǒng),通過(guò)i2c總線控制NFC,實(shí)現(xiàn)手機(jī)和開(kāi)發(fā)板的互相通信功能。

4dcd2f28-c10b-11ec-bce3-dac502259ad0.png

二、硬件電路設(shè)計(jì)

模塊整體硬件電路如下圖所示,電路中包含了NFC。電路比較簡(jiǎn)單,這邊不對(duì)電路進(jìn)行說(shuō)明。

4e34570c-c10b-11ec-bce3-dac502259ad0.png

圖1硬件電路圖

三、程序設(shè)計(jì)

NFC是一種近距離無(wú)線通訊技術(shù),使用NFC技術(shù)的設(shè)備(如智能手機(jī))可以在彼此靠近的情況下進(jìn)行數(shù)據(jù)交換,是通過(guò)在單一芯片上集成感應(yīng)式讀卡器、感應(yīng)式卡片和點(diǎn)對(duì)點(diǎn)通信的功能,利用移動(dòng)終端實(shí)現(xiàn)移動(dòng)支付、門(mén)禁、移動(dòng)身份識(shí)別等。

與以往設(shè)備配網(wǎng)技術(shù)相比,NFC"碰一碰"方案可以支持NFC功能的安卓手機(jī)iOS 13.0以上系統(tǒng)的iPhone使用,為消費(fèi)客戶(hù)提供高效便捷的智慧生活無(wú)縫體驗(yàn)。

1、主程序設(shè)計(jì)

如圖所示為NFC碰一碰主程序流程圖,開(kāi)機(jī)LiteOS系統(tǒng)初始化后,進(jìn)入主程序后先初始化I2C總線,然后控制I2C總線往NFC寫(xiě)入一段文本信息和一段網(wǎng)址信息,最后拿支持NFC功能的安卓手機(jī)或iOS 13.0以上系統(tǒng)的iPhone靠近小凌派-RK2206開(kāi)發(fā)板,就可以識(shí)別出一段文本信息和一個(gè)網(wǎng)址。

4e4c3246-c10b-11ec-bce3-dac502259ad0.png

圖2主程序流程圖

void nfc_process(void){  unsigned int ret = 0;
  /* 初始化NFC設(shè)備 */nfc_init();
  ret = nfc_store_text(NDEFFirstPos, (uint8_t *)TEXT);  if (ret != 1) {    printf("NFC Write Text Failed: %d
", ret);}
  ret = nfc_store_uri_http(NDEFLastPos, (uint8_t *)WEB);  if (ret != 1) {    printf("NFC Write Url Failed: %d
", ret);  }    while (1) {    printf("==============NFC Example==============
");    printf("Please use the mobile phone with NFC function close to the development board!
");    printf("

");    LOS_Msleep(1000);  }}

(左右移動(dòng)查看全部?jī)?nèi)容)

2、NFC初始化程序設(shè)計(jì)

NFC碰一碰初始化主要包括I2C總線初始化。

/* NFC使用i2c的總線ID */static unsigned int NFC_I2C_PORT = 2;
/* i2c配置 */static I2cBusIo m_i2c2m0 ={  .scl = {.gpio = GPIO0_PD6, .func = MUX_FUNC1, .type = PULL_NONE, .drv = DRIVE_KEEP, .dir = LZGPIO_DIR_KEEP, .val = LZGPIO_LEVEL_KEEP},  .sda = {.gpio = GPIO0_PD5, .func = MUX_FUNC1, .type = PULL_NONE, .drv = DRIVE_KEEP, .dir = LZGPIO_DIR_KEEP, .val = LZGPIO_LEVEL_KEEP},  .id = FUNC_ID_I2C2,  .mode = FUNC_MODE_M0,};/* i2c的時(shí)鐘頻率 */static unsigned int m_i2c2_freq = 400000;
unsigned int NT3HI2cInit(){  uint32_t *pGrf = (uint32_t *)0x41050000U;  uint32_t ulValue;    ulValue = pGrf[7];  ulValue &= ~((0x7 << 8) | (0x7 << 4));  ulValue |= ((0x1 << 8) | (0x1 << 4));  pGrf[7] = ulValue | (0xFFFF << 16);  printf("%s, %d: GRF_GPIO0D_IOMUX_H(0x%x) = 0x%x
", __func__, __LINE__, &pGrf[7], pGrf[7]);    if (I2cIoInit(m_i2c2m0) != LZ_HARDWARE_SUCCESS)  {    printf("%s, %s, %d: I2cIoInit failed!
", __FILE__, __func__, __LINE__);    return __LINE__;  }  if (LzI2cInit(NFC_I2C_PORT, m_i2c2_freq) != LZ_HARDWARE_SUCCESS)  {    printf("%s, %s, %d: LzI2cInit failed!
", __FILE__, __func__, __LINE__);    return __LINE__;  }    return 0;}
unsigned int nfc_init(void){  unsigned int ret = 0;  uint32_t *pGrf = (uint32_t *)0x41050000U;  uint32_t ulValue;    if (m_nfc_is_init == 1)  {    printf("%s, %s, %d: Nfc readly init!
", __FILE__, __func__, __LINE__);    return __LINE__;  }    ret = NT3HI2cInit();  if (ret != 0)  {    printf("%s, %s, %d: NT3HI2cInit failed!
", __FILE__, __func__, __LINE__);    return __LINE__;  }    m_nfc_is_init = 1;  return 0;}

(左右移動(dòng)查看全部?jī)?nèi)容)

3、NFC寫(xiě)入信息程序設(shè)計(jì)

向NFC芯片寫(xiě)入數(shù)據(jù),但需要寫(xiě)入2個(gè)記錄時(shí),第2個(gè)記錄的位置需要用 NDEFLastPos 來(lái)定義;當(dāng)需要寫(xiě)入3個(gè)記錄時(shí),第2個(gè)和第3個(gè)記錄的位置分別需要用 NDEFMiddlePos 和 NDEFLastPos 來(lái)定義。

4e60661c-c10b-11ec-bce3-dac502259ad0.png

圖3NDEF協(xié)議格式圖

ret = nfc_store_text(NDEFFirstPos, (uint8_t *)TEXT);if (ret != 1) {   printf("NFC Write Text Failed: %d
", ret);}
ret = nfc_store_uri_http(NDEFLastPos, (uint8_t *)WEB);if (ret != 1) {  printf("NFC Write Url Failed: %d
", ret);}

(左右移動(dòng)查看全部?jī)?nèi)容)

其中,nfc_store_text()和nfc_store_uri_http()兩個(gè)函數(shù)首先按照rtdText.h和rtdUri.h中RTD協(xié)議進(jìn)行處理。然后與ndef.h中NT3HwriteRecord()進(jìn)行記錄寫(xiě)入。

bool nfc_store_text(RecordPosEnu position, uint8_t *text){  NDEFDataStr data;    if (m_nfc_is_init == 0)  {    printf("%s, %s, %d: NFC is not init!
", __FILE__, __func__, __LINE__);    return 0;  }    prepareText(&data, position, text);  return NT3HwriteRecord(&data);}
bool nfc_store_uri_http(RecordPosEnu position, uint8_t *http){  NDEFDataStr data;    if (m_nfc_is_init == 0)  {    printf("%s, %s, %d: NFC is not init!
", __FILE__, __func__, __LINE__);    return 0;  }    prepareUrihttp(&data, position, http);  return NT3HwriteRecord(&data);

(左右移動(dòng)查看全部?jī)?nèi)容)

NT3HwriteRecord()則負(fù)責(zé)將需要下發(fā)的信息打包成NDEF協(xié)議報(bào)文,最后由I2C總線將NDEF協(xié)議報(bào)文發(fā)送給NFC設(shè)備。

bool NT3HwriteRecord(const NDEFDataStr *data){  uint8_t recordLength = 0, mbMe;  UncompletePageStr addPage;  addPage.page = 0;    // calculate the last used page  if (data->ndefPosition != NDEFFirstPos )  {    NT3HReadHeaderNfc(&recordLength, &mbMe);    addPage.page = (recordLength + sizeof(NDEFHeaderStr) + 1) / NFC_PAGE_SIZE;        //remove the NDEF_END_BYTE byte because it will overwrite by the new Record    addPage.usedBytes = (recordLength + sizeof(NDEFHeaderStr) + 1) % NFC_PAGE_SIZE - 1;  }    // call the appropriate function and consider the pointer  // within the NFC_PAGE_SIZE that need to be used  int16_t payloadPtr = addFunct[data->ndefPosition](&addPage, data, data->ndefPosition);  if (payloadPtr == -1)  {    errNo = NT3HERROR_TYPE_NOT_SUPPORTED;    return false;  }    return writeUserPayload(payloadPtr, data, &addPage);}

(左右移動(dòng)查看全部?jī)?nèi)容)

四、編譯過(guò)程

1、搭建和下載源代碼

我已將OpenHarmony源代碼上傳到Gitee社區(qū)中,大家可以根據(jù)以下網(wǎng)址下載。

https://gitee.com/Lockzhiner-Electronics/lockzhiner-rk2206-openharmony3.0lts

注意:編譯環(huán)境可根據(jù)以下網(wǎng)址來(lái)操作:

https://gitee.com/Lockzhiner-Electronics/lockzhiner-rk2206-openharmony3.0lts/blob/master/vendor/lockzhiner/rk2206/README_zh.md

2、打開(kāi)sdk下面路徑的文件

/vendor/lockzhiner/rk2206/samples/b2_nfc/nfc_example.c

注意:Gitee上的NFC控制案例為通用案例,請(qǐng)大家根據(jù)上述的需求修改相關(guān)源代碼。

3、修改編譯腳本

修改 vendor/lockzhiner/rk2206/sample 路徑下 BUILD.gn 文件,指定 nfc_example 參與編譯。

"./b2_nfc:nfc_example",

(左右移動(dòng)查看全部?jī)?nèi)容)

修改 device/lockzhiner/rk2206/sdk_liteos 路徑下 Makefile 文件,添加 -lnfc_example 參與編譯。

hardware_LIBS = -lhal_iothardware -lhardware -lnfc_example

(左右移動(dòng)查看全部?jī)?nèi)容)

4、編譯固件

hb set -root .hb sethb build -f

(左右移動(dòng)查看全部?jī)?nèi)容)

5、燒寫(xiě)固件

請(qǐng)參考Gitee網(wǎng)址的說(shuō)明手冊(cè)(“燒錄打印”章節(jié)):

https://gitee.com/Lockzhiner-Electronics/lockzhiner-rk2206-openharmony3.0lts/blob/master/device/rockchip/README_zh.md

五、實(shí)驗(yàn)結(jié)果

程序編譯燒寫(xiě)到開(kāi)發(fā)板后,按下開(kāi)發(fā)板的RESET按鍵,通過(guò)串口軟件查看日志如下:

==============NFC Example==============Please use the mobile phone with NFC function close to the development board!==============NFC Example==============Please use the mobile phone with NFC function close to the development board!......

(左右移動(dòng)查看全部?jī)?nèi)容)

原文標(biāo)題:小凌派-RK2206開(kāi)發(fā)板:NFC控制案例

文章出處:【微信公眾號(hào):HarmonyOS官方合作社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 操作系統(tǒng)
    +關(guān)注

    關(guān)注

    37

    文章

    6900

    瀏覽量

    123810
  • nfc
    nfc
    +關(guān)注

    關(guān)注

    59

    文章

    1633

    瀏覽量

    181003
  • 瑞芯微
    +關(guān)注

    關(guān)注

    24

    文章

    436

    瀏覽量

    51566
  • RK2206
    +關(guān)注

    關(guān)注

    0

    文章

    34

    瀏覽量

    1843

原文標(biāo)題:小凌派-RK2206開(kāi)發(fā)板:NFC控制案例

文章出處:【微信號(hào):HarmonyOS_Community,微信公眾號(hào):電子發(fā)燒友開(kāi)源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    首發(fā)!成功移植OpenHarmony到RK2206開(kāi)發(fā)板,2022年2月即將開(kāi)源~

    【直播報(bào)名】移植OpenHarmony輕量系統(tǒng)到龍芯1c300芯片經(jīng)過(guò)三周的時(shí)間,我們成功將OpenHarmony 1.1.2版本移植到
    發(fā)表于 12-15 18:30

    小凌派-RK2206開(kāi)發(fā)板:NFC控制案例

    數(shù)據(jù)交換和服務(wù)。本文基于RK2206芯片 + 鴻蒙LiteOS
    發(fā)表于 04-19 15:52

    輕量系統(tǒng)開(kāi)發(fā)套件介紹:凌睿智捷 | 小凌派-RK2206 開(kāi)發(fā)板套件

    凌睿智捷 | 小凌派-RK2206 開(kāi)發(fā)板套件是由福州市凌睿智捷電子有限公司出品,主控器為高性能、高性?xún)r(jià)比的RK2206
    發(fā)表于 04-21 13:39

    RK2206開(kāi)發(fā)板搭載OpenHarmony操作系統(tǒng)簡(jiǎn)介

    1、小凌派-RK2206開(kāi)發(fā)板簡(jiǎn)介小凌派-RK2206開(kāi)發(fā)板主控器為高性能、高性?xún)r(jià)比的RK2206
    發(fā)表于 07-28 17:28

    將OpenHarmony1.1.2版本移植到RK2206開(kāi)發(fā)板上介紹

    芯片推出的一種低功耗、高集成的MCU無(wú)線局域網(wǎng)處理器,它可以應(yīng)用在不同的應(yīng)用領(lǐng)域,如物聯(lián)網(wǎng)、可穿戴設(shè)備、家庭自動(dòng)化、云連接等。RK2206
    發(fā)表于 08-23 18:11

    基于RK2206開(kāi)發(fā)板實(shí)現(xiàn)一種智慧車(chē)載模塊的設(shè)計(jì)

    警示系統(tǒng)(LWDS)、前方碰撞預(yù)警系統(tǒng)(FCWS)及后方碰撞預(yù)警系統(tǒng)等智慧車(chē)(Smart Car)相關(guān)應(yīng)用。  本文基于
    發(fā)表于 09-06 18:13

    RK2206開(kāi)發(fā)板搭載OpenHarmony操作系統(tǒng)

    凌智RK2206開(kāi)發(fā)板簡(jiǎn)介凌智RK2206開(kāi)發(fā)板是由福州市凌睿智捷電子有限公司出品,主控器為高性能、高性?xún)r(jià)比的
    發(fā)表于 09-07 17:15

    基于小凌派RK2206的智能電子寵物

    、項(xiàng)目總結(jié)和展望 本項(xiàng)目設(shè)計(jì)硬件選用小凌派開(kāi)發(fā)板搭載低功耗、高集成的無(wú)線局域網(wǎng)處理器RK2206,搭載OpenHarmony操作系統(tǒng)
    發(fā)表于 01-19 12:48

    【新書(shū)推薦】《OpenHarmony嵌入式系統(tǒng)原理與應(yīng)用--基于RK2206芯片(課視頻版)》

    。OpenHarmony可以基于同-·套系統(tǒng)能力,適配多種終端形態(tài),是一款面向未來(lái)、面向全場(chǎng)景的分布式操作系統(tǒng)。本書(shū)以 OpenHarmony 為主題,詳細(xì)講解了基于
    發(fā)表于 03-23 18:30

    已結(jié)束-【書(shū)籍評(píng)測(cè)活動(dòng)NO.12】 OpenHarmony嵌入式系統(tǒng)原理與應(yīng)用——基于RK2206芯片課視頻版)

    。OpenHarmony可以基于同一套系統(tǒng),適配多種終端形態(tài),是一款面向未來(lái)、面向全場(chǎng)景的分布式操作系統(tǒng),未來(lái)前景可期。本書(shū)選擇OpenHarmony為主題,詳細(xì)講解基于
    發(fā)表于 05-08 15:51

    《OpenHarmony嵌入式系統(tǒng)原理與應(yīng)用——基于RK2206芯片課視頻版)》學(xué)習(xí)記錄之一

    非常感謝電子發(fā)燒友論壇提供這次《《OpenHarmony嵌入式系統(tǒng)原理與應(yīng)用——基于RK2206芯片課視頻版)》學(xué)習(xí)機(jī)會(huì)。 下面記錄一下書(shū)中實(shí)驗(yàn)需要注意的一些細(xì)節(jié)。 1、安裝hb后
    發(fā)表于 06-15 14:10

    首發(fā)!成功移植鴻蒙到RK2206開(kāi)發(fā)板,代碼即將開(kāi)源~

    經(jīng)過(guò)三周的時(shí)間,我們成功將OpenHarmony 1.1.2版本移植到RK2206開(kāi)發(fā)板上,板載芯片
    發(fā)表于 12-15 18:21 ?4133次閱讀
    首發(fā)!成功移植鴻蒙到<b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b><b class='flag-5'>RK2206</b>開(kāi)發(fā)板,代碼即將開(kāi)源~

    基于小凌派RK2206開(kāi)發(fā)板所制作的簡(jiǎn)易示波器

    RK2206開(kāi)發(fā)板而做的簡(jiǎn)易示波器開(kāi)發(fā)。 本開(kāi)發(fā)以RK2206芯片 + OpenHarmo
    的頭像 發(fā)表于 05-06 17:09 ?1871次閱讀
    基于小凌派<b class='flag-5'>RK2206</b>開(kāi)發(fā)板所制作的簡(jiǎn)易示波器

    首發(fā)!成功移植OpenHarmony到RK2206開(kāi)發(fā)板,2022年2月即將開(kāi)源~

    經(jīng)過(guò)三周的時(shí)間,我們成功將OpenHarmony 1.1.2版本移植到RK2206開(kāi)發(fā)板上,板載芯片
    的頭像 發(fā)表于 04-11 14:05 ?2385次閱讀
    首發(fā)!成功移植OpenHarmony到<b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b><b class='flag-5'>RK2206</b>開(kāi)發(fā)板,2022年2月即將開(kāi)源~

    小凌派-RK2206開(kāi)發(fā)板:UART控制案例

    通信與并行通信之間加以轉(zhuǎn)換。作為把并行輸入信號(hào)轉(zhuǎn)成串行輸出信號(hào)的芯片,UART通常被集成于其他通訊接口的連結(jié)上。本文基于RK2206
    的頭像 發(fā)表于 06-14 11:12 ?1111次閱讀
    小凌派-<b class='flag-5'>RK2206</b>開(kāi)發(fā)板:UART<b class='flag-5'>控制</b>案例
    主站蜘蛛池模板: 国产精品任我爽爆在线播放6080 | www.jizz在线观看 | 一区二区三区欧美在线 | 欧美性一区二区三区五区 | 99热久久久久久久免费观看 | 尤物久久99热国产综合 | 日本美女黄网站 | 4438全国最大成人免费高清 | 黄色三级免费网站 | 久久手机免费视频 | 久久久久999 | 日本级毛片免费观看 | 国产三级日产三级韩国三级 | 日本免费在线视频 | 亚洲爽爽网站 | 在线一区二区三区 | 成人在线a | 午夜高清福利 | 亚洲国产欧美在线成人aaaa | 天天干天天操天天操 | 日本三级视频在线 | 韩国理伦片在线观看2828 | 欧美极品xxxxⅹ另类 | 亚洲精品美女久久久久网站 | www.四虎在线 | 鲁丝一区二区三区 | 手机在线黄色 | 国产三片理论电影在线 | 三级视频网站 | 456成人免费高清视频 | 国产福利不卡一区二区三区 | 久碰香蕉精品视频在线观看 | 成人欧美一区二区三区小说 | 黄色绿像一级片 | 亚洲精品美女久久久aaa | 亚洲色图国产精品 | 欧美黑人xxxxxxxxxx | 国产普通话一二三道 | 欧美一级www片免费观看 | 欧美成人自拍视频 | 六月激情婷婷 |