大家好,今天主要聊一聊,如何使用鸿蒙系统中的NFC视频通信方法。

目录

第一:NFC基本简介

第二:鸿蒙系统中API分析

第三:硬件设计

第四: 软件设计

第五:编译调试

第六:运行结果


第一:NFC基本简介

nfc简介:nfc即近距离无线通讯技术。这个技术由非接触式射频识别(RFID)演变而来,由飞利浦半导体(现恩智浦半导体公司)、诺基亚和索尼共同研制开发,其基础是RFID及互连技术。近场通信(NearFieldCommunicaTIon,NFC)是一种短距高频的无线电技术,在13.56MHz频率运行于10厘米距离内。其传输速度有106Kbit/秒、212Kbit/秒或者424Kbit/秒三种。目前近场通信已通过成为ISO/IECIS18092国际标准、ECMA-340标准与ETSITS102190标准。NFC采用主动和被动两种读取模式。

NFC近场通信技术是由非接触式射频识别(RFID)及互联互通技术整合演变而来,在单一芯片上结合感应式读卡器、感应式卡片和点对点的功能,能在短距离内与兼容设备进行识别和数据交换。工作频率为13.56MHz,但是使用这种手机支付方案的用户必须更换特制的手机。目前这项技术在日韩被广泛应用,他们的手机可以用作机场登机验证、大厦的门禁钥匙、交通一卡通、信用卡、支付卡等。

第二:鸿蒙系统中API分析

主要使用I2C完成采用的功能。

I2cInit()

unsigned int I2cInit (WifiIotI2cIdx id, unsigned int baudrate )

功能描述:

用指定的频率初始化I2C设备

参数:

名字 描述
id I2C设备ID.
baudrate

I2C频率

I2cSetBaudrate()

unsigned int I2cSetBaudrate (WifiIotI2cIdx id, unsigned int baudrate )

功能描述:

为I2C设备设置频率

参数:

名字 描述
id I2C设备ID.
baudrate I2C频率

I2cWrite()

unsigned int I2cWrite (WifiIotI2cIdx id, unsigned short deviceAddr, const WifiIotI2cData * i2cData )

功能描述:

将数据写入I2C设备

参数:

名字 描述
id I2C设备ID.
deviceAddr I2C设备地址
i2cData 表示写入的数据

I2cRead()

unsigned int I2cRead (WifiIotI2cIdx id, unsigned short deviceAddr, const WifiIotI2cData * i2cData )

功能描述:

从I2C设备读取数据。读取的数据将保存到i2cData指定的地址

参数:

名字 描述
id I2C设备ID.
deviceAddr I2C设备地址
i2cData 表示要读取的数据指向的指针

第三:硬件设计

如下图,NFC芯片使用的是I2C协议,I2C_SCL与GPIO_0相连接,I2C_SDA与GPIO_1相连接,所以需要编写软件使用GPIO_0和GPIO_1产生I2C信号去控制NFC芯片。

第四: 软件设计

   主代码分析

这部分代码为I2C初始化的代码,首先用 IoSetFunc() 函数将GPIO_0复用为I2C1_SDA,GPIO_1复用为I2C1_SCL。然后调用I2cInit()函数初始化I2C1端口,最后使用 I2cSetBaudrate() 函数设置I2C1的频率为400kbps。

IoSetFunc(WIFI_IOT_IO_NAME_GPIO_0, WIFI_IOT_IO_FUNC_GPIO_0_I2C1_SDA);   // GPIO_0复用为I2C1_SDA
IoSetFunc(WIFI_IOT_IO_NAME_GPIO_1, WIFI_IOT_IO_FUNC_GPIO_1_I2C1_SCL);   // GPIO_1复用为I2C1_SCL
I2cInit(WIFI_IOT_I2C_IDX_1, 400000); /* baudrate: 400kbps */
I2cSetBaudrate(WIFI_IOT_I2C_IDX_1, 400000);

这部分的代码是向NFC芯片写入数据,但需要写入2个记录时,第2个记录的位置需要用NDEFLastPos来定义;当需要写入3个记录时,第2个和第3个记录的位置分别需要用NDEFMiddlePosNDEFLastPos来定义。

ret=storeText(NDEFFirstPos, (uint8_t *)TEXT);
if(ret != 1)
{printf("NFC Write Data Falied :%d ",ret);
}
ret=storeUrihttp(NDEFLastPos, (uint8_t *)WEB);
if(ret != 1)
{printf("NFC Write Data Falied :%d ",ret);
}

第五:编译调试

修改 BUILD.gn 文件

修改 applications\BearPi\BearPi-HM_Nano\sample 路径下 BUILD.gn 文件,指定 i2c_example 参与编译。

#"B1_basic_led_blink:led_example",
#"B2_basic_button:button_example",
#"B3_basic_pwm_led:pwm_example",
#"B4_basic_adc:adc_example",
"B5_basic_i2c_nfc:i2c_example",
#"B6_basic_uart:uart_example",

第六:运行结果

示例代码编译烧录代码后,按下开发板的RESET按键,通过串口助手查看日志,并请使用带有NFC功能的手机靠近开发板,能读取数据。

=======================================***********I2C_NFC_example**********=======================================Please use the mobile phone with NFC function close to the development board!=======================================***********I2C_NFC_example**********=======================================Please use the mobile phone with NFC function close to the development board!

HarmonyOS系统中内核实现NFC无线通信的方法相关推荐

  1. HarmonyOS系统中内核实现烟雾检测的方法

    大家好,今天我们主要来聊一聊,如何使用鸿蒙系统来操作烟雾浓度传感器. 目录 第一:烟雾浓度传感器原理 第二: 鸿蒙相关API函数分析 Init_E53_SF1() MQ2_PPM_Calibratio ...

  2. HarmonyOS系统中内核实现智慧物流控制的方法

    大家好,今天主要和大家聊一聊,如何使用鸿蒙系统实现智能物流的开发. 目录 第一:智能物流简介 第二:华为IOT平台API分析 数据上传 设备消息上报 设备上报属性数据 网关批量上报属性数据 属性设置的 ...

  3. HarmonyOS系统中内核实现智慧烟感控制的方法

          大家好,今天主要和大家聊一聊,如何利用鸿蒙系统实现智慧烟感方法 目录 第一:鸿蒙系统智慧烟感基本简介 第二:华为IOT平台API 数据上传 设备消息上报 设备上报属性数据 网关批量上报属性 ...

  4. HarmonyOS系统中内核实现三轴加速度检测方法

         大家好,今天主要和大家聊一聊,如何使用鸿蒙系统读取三轴加速度的方法. 目录 第一:三轴加速速基本原理 第二:E53_SC2中API分析 第三:硬件设计 第四:软件设计 第五:编译调试 第六: ...

  5. HarmonyOS系统中内核实现MQTT连接华为云的方法

    大家好,今天主要和大家聊一聊,如何使用MQTT连接华为云平台的方法 目录 第一:MQTT通信基本原理 第二:华为IOT平台API 第三:华为IOT平台初始化 第四:设置命令响应函数 第五:数据上传 设 ...

  6. ubuntu 开启ipv6_Ubuntu系统中禁用IPv6的两种方法介绍

    Ubuntu系统如何禁用ipv6呢?ipv6的普及将会需要很长一段时间,接下来的文章中小编将会介绍在Ubuntu系统中禁用ipv6的方法,有需要的朋友不要错过哦! Pv6 介绍 Pv6 旨在提高安全性 ...

  7. java sql封装,在Java系统中封装SQL语言的处理方法及系统的制作方法

    在Java系统中封装SQL语言的处理方法及系统的制作方法[ 技术领域: ][0001]本发明涉及计算机数据处理 技术领域: ,特别是涉及一种在Java系统中封装SQL语言的处理方法及系统.[ 背景技术 ...

  8. linux 查找只读文件夹,Linux系统中查找命令find的使用方法(二)

    今天达内Linux培训小编要继续跟大家分享关于Linux系统中中查找命令find的使用方法的文章.在上文中小编提到,Linux查找命令是Linux系统中很重要也是很常用的命令之一.Linux的查找命令 ...

  9. centos 卸载软件_一篇看懂!详解-Linux系统中安装软件的三种方法

    Linux系统中安装软件的三种方法 注:本文主要以CentOS为例介绍常用的安装方式,其他版本linux在文章底部 Linux系统中怎么安装软件,首先说一下应用程序与系统命令的区别: 1.文件位置 系 ...

最新文章

  1. Linux内核模块编程系列1-极简内核模块编写
  2. 独家 | 播客:入场券便是你的脸(附链接)
  3. Adobe Dreamweaver CS3中文版
  4. java上机题四取三排列_Java练习题
  5. C语言二月天数计算,关于计算两个日期间天数的代码,大家来看看
  6. Java DataOutputStream writeChars()方法及示例
  7. IBM收购数据库安全公司 围剿Oracle之心不死
  8. 华为云ModelArts图深度学习,学习知识还能考取微认证
  9. spring mvc国际化_Spring MVC国际化(i18n)和本地化(L10n)示例
  10. 2021-06-28获取,更新,删除DOM节点
  11. Android 存储学习之SQLite数据库的基本操作 (使用API操作数据库)
  12. 51nod1113-----矩阵快速幂
  13. YAML和JSON对比
  14. LambdaQueryWrapper构建查询条件、模糊查询、范围查询、排序
  15. svn 重新定位版本库
  16. 华为荣耀c4刷入linux系统,华为荣耀畅玩4C移动4G(CHM-TL00 Android 4.4)刷Recovery教程
  17. Android 6.0以下检测摄像头权限
  18. 北京大学光华管理学院开通CnOpenData试用
  19. 小陈学js Arguments
  20. 已知四点经纬度位置计算球面面积

热门文章

  1. 大牛给计算机方向学生的 7 个建议
  2. python中类重要吗_如何看待有的python程序员从不使用类?
  3. 经典算法:二叉树的建立
  4. 图文教程,Nginx+Keepalived(双机热备)介绍已经搭建高可用负载均衡环境
  5. Java 爬取微信公众号文章(文字 + 图片)
  6. OpenAI掌门人Sam Altman:AI的下一个发展阶段
  7. erlang json: jsx,rfc4627,mochijson2,jsonx 简单比较
  8. 视频系统部署 kvs
  9. 用devc++表白_【建大表白墙】19级倪yl,风吹起如花般破碎的流年,而你的笑容摇晃摇晃,成为我命途中最美的点缀...
  10. 【技术宅小伙】Git版本控制系统的使用