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

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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

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

電子發(fā)燒友開源社區(qū) ? 來源:HarmonyOS官方合作社區(qū) ? 作者:HarmonyOS官方合作社 ? 2022-04-21 08:47 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一、簡介

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

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

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

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

二、硬件電路設計

模塊整體硬件電路如下圖所示,電路中包含了NFC。電路比較簡單,這邊不對電路進行說明。

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

圖1硬件電路圖

三、程序設計

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

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

1、主程序設計

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

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

圖2主程序流程圖

void nfc_process(void){  unsigned int ret = 0;
  /* 初始化NFC設備 */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);  }}

(左右移動查看全部內容)

2、NFC初始化程序設計

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的時鐘頻率 */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;}

(左右移動查看全部內容)

3、NFC寫入信息程序設計

向NFC芯片寫入數(shù)據(jù),但需要寫入2個記錄時,第2個記錄的位置需要用 NDEFLastPos 來定義;當需要寫入3個記錄時,第2個和第3個記錄的位置分別需要用 NDEFMiddlePos 和 NDEFLastPos 來定義。

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);}

(左右移動查看全部內容)

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

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);

(左右移動查看全部內容)

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

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);}

(左右移動查看全部內容)

四、編譯過程

1、搭建和下載源代碼

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

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

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

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

2、打開sdk下面路徑的文件

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

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

3、修改編譯腳本

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

"./b2_nfc:nfc_example",

(左右移動查看全部內容)

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

hardware_LIBS = -lhal_iothardware -lhardware -lnfc_example

(左右移動查看全部內容)

4、編譯固件

hb set -root .hb sethb build -f

(左右移動查看全部內容)

5、燒寫固件

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

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

五、實驗結果

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

==============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!......

(左右移動查看全部內容)

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

文章出處:【微信公眾號:HarmonyOS官方合作社區(qū)】歡迎添加關注!文章轉載請注明出處。

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

    關注

    37

    文章

    7120

    瀏覽量

    125240
  • nfc
    nfc
    +關注

    關注

    61

    文章

    1657

    瀏覽量

    182388
  • 瑞芯微
    +關注

    關注

    25

    文章

    560

    瀏覽量

    52299
  • RK2206
    +關注

    關注

    0

    文章

    38

    瀏覽量

    2163

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

文章出處:【微信號:HarmonyOS_Community,微信公眾號:電子發(fā)燒友開源社區(qū)】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

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

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

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

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

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

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

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

    1、小凌派-RK2206開發(fā)板簡介小凌派-RK2206開發(fā)板主控器為高性能、高性價比的RK2206
    發(fā)表于 07-28 17:28

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

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

    基于RK2206開發(fā)板實現(xiàn)一種智慧車載模塊的設計

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

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

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

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

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

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

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

    已結束-【書籍評測活動NO.12】 OpenHarmony嵌入式系統(tǒng)原理與應用——基于RK2206芯片課視頻版)

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

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

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

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

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

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

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

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

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

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

    通信與并行通信之間加以轉換。作為把并行輸入信號轉成串行輸出信號的芯片,UART通常被集成于其他通訊接口的連結上。本文基于RK2206
    的頭像 發(fā)表于 06-14 11:12 ?1446次閱讀
    小凌派-<b class='flag-5'>RK2206</b>開發(fā)板:UART<b class='flag-5'>控制</b>案例
    主站蜘蛛池模板: 午夜色a大片在线观看免费 午夜色大片在线观看 | 国产三级精品三级在线观看 | 亚洲视频在线视频 | 国产午夜精品久久久久免费视小说 | 女人张开双腿让男人桶完整 | 久久性妇女精品免费 | 萌白酱一线天粉嫩喷水在线观看 | 99久久国产综合精品国 | 中文字幕一精品亚洲无线一区 | 黄 色 片 在 线 看 | 18女人毛片水真多免费 | 毛片多多 | 国产成人亚洲毛片 | 婷婷精品视频 | 中文字幕av一区二区三区 | 天天骑夜夜操 | 亚洲成a人片7777 | 精品一区二区三区视频 | 午夜嘿嘿嘿 | 精品黄色片 | 免费看逼网站 | 四只虎免费永久观看 | xxx性欧美 | 被啪漫画羞羞漫画 | 免费又黄又爽的禁片视频 | 天堂影院在线 | 夜夜操天天射 | 天天噜噜噜 | 久久久久四虎国产精品 | 国产欧美亚洲精品第二区首页 | 日本免费一区二区视频 | 热99视频 | 天天射日日射 | 视频一区 在线 | 深夜大尺度视频在线观看 | 天天草夜夜操 | 男人j进入女人j在线视频 | 91最新网站免费 | 美女扒开内裤让男人桶 | 亚洲三级免费观看 | 你懂的网站在线 |