采用博通BCM20793结合S3C6410主控制器的NFC模块设计

采用博通bcm20793芯片设计了nfc模块,进行硬件设计,并进行设备驱动分析。多方面对该模块进行验证,结果表明该模块稳定、可靠、识别率高,可集成到支付、票务、门禁、防伪等系统中。
引言
nfc(near field communication,近场通信)是由philips和sony联合推出的一种全新的近距离无线通信技术。nfc是由无线射频识别(rfid)及移动终端技术综合发展起来的,在单一芯片上结合感应式读卡器、感应式卡片和点对点的功能,能在短距离内与兼容设备进行识别和数据交换。nfc工作频率为 13.56 mhz,使用电磁感应耦合进行数据传输,具有双向连接和识别特点,兼容不同标准的识别技术,通信距离小于4 cm,支持多种通信速率。由于受限于传输速率以及通信距离,nfc不适合大数据的传输,而且通信双方必须有某种程度的相互信任。
nfc技术的出现改变了人们使用某些电子设备的方式,甚至改变了信用卡、现金和钥匙的使用方式,它可以应用在手机等便携型设备上,实现安全的移动支付和交易、简便的端到端通信、在移动中轻松接入等功能。随着智能手机的快速兴起,nfc与智能手机的结合将很大程度上促进nfc的发展,苹果公司推出的 iphone6也具备nfc功能,相信在不久的将来nfc必定被广泛应用。
本文采用博通bcm20793 nfc芯片并结合s3c6410主控制器,设计了具有主动模式和被动模式的nfc阅读器,主要针对硬件和驱动进行了设计。
1 nfc技术原理
nfc有三种工作状态:reader/writer与nfc tag/nfc reader相关;peer—to—peer支持两个。nfc设备交互;card emulation能把携带nfc功能的设备模拟成smartcard。这三种工作状态又可归结为被动模式和主动模式,在reader/writer和card emulation状态下处于被动模式,在peer—to—peer状态下处于主动模式。
在被动模式下,主设备负责启动通信,同时通过rf线圈产生电磁感应,为从设备提供电能。在这种模式下传输速率可以选择106 kbps、212 kbps或424 kbps,使用负载调制(load modulation)方式,将数据发送给从设备,从设备可以不含电源组件,采用相同的速率以负载调制方式将数据返回给主设备,整个通信过程如图1所示。
此通信机制与基于iso14443a、mifare和felica的非接触式智能卡兼容,其主要区别在于rf层信号调制解调的方法、传输速率及编码方式。因此,nfc发起设备在被动模式下,可以用相同的连接和初始化过程检测非接触式智能卡或nfc目标设备,并与之建立联系。
主动模式下,设备之间进行通信时,发起设备和目标设备都必须产生自己的射频场来进行通信。此种模式下nfc采用双向识别和链接,通信各方不存在固定的主从关系,通信可以由任意一个nfc设备发起。这是对等网络通信的标准模式,可以获得非常快速的响应。其通信流程如图2所示。
此外,快捷轻型的nfc协议还可以引导两台设备之间的蓝牙配对过程。与其他无线通信技术相比,nfc是一种近距离私密通信方式,提供各种设备间轻松、安全、快速而自动的通信。对rfid来说,其具有距离近、带宽高、功耗低等特点;比红外更快、更稳定而且简单;与蓝牙相比,nfc通信距离近,适合交换重要数据。
2 硬件设计
nfc模块主要由nfc(控制器,可与device host或secure element安全单元交互)、antenna(天线)和contactless front-end(非接触前段,负责射频信号的调制解调工作)三部分组成。本设计采用bcm20793芯片,该芯片支持212或424 kbps的数据传输速率,是专为低功耗、低价格的设备设计的。该模块提供pci、i2c总线、uart串行接口,安全单元可以连接sd卡、sim卡、sam卡或是其他芯片,兼容多种通信标准。该芯片还支持低功耗模式、正常工作模式、轮询模式等多种工作模式。
主控制器采用s3c6410芯片,该芯片高性能、低功耗、高性价比,可以运行android系统。bcm20793与s3c6410采用i2c总线的连接方式。tx1和tx2引脚接rc匹配电路,rc匹配电路的p_js_it_18和天线相连接。nfc芯片由1.8 v电压供电,其与主控制器有6根引脚相连,分别是nfc_i2c_sd数据线、nfc_i2c_scl时钟线、nfc_i2c_req中断、 nfc_req_pu使能、host_wake唤醒,nfc_clk_req时钟使能,i2c物理通信地址是0x77,时钟信号由19.2 mhz外接晶振提供、nfc电路原理图如图3所示。
3 nfc驱动分析
3. 1 设备树分析
本设计内核采用了linux 3.4版本,与以往内核版本不同的是,内核3.4版本采用设备树来对驱动设备进行统一管理,以方便设备的管理。nfc采用i2c总线的连接方式与cpu相连接,驱动只负责数据的发送接收,上层负责数据的解析工作。
下面是bcm2079x的设备树节点配置信息,包括:i2c总线的通信地址为0x77,中断为34号,gpio34为中断引脚,gpio65为使能引脚,gpio20为唤醒引脚。其中最为关键的是compatible=“broadcom,bcm2079x_i2c”键值对,在加载驱动程序时,首先会匹配该字段,如果相等则调用probe函数进行相关的初始化工作。
以下为i2c总线配置信息,gpio31作为i2c总线的时钟信号线,gpio32作为i2c总线的数据信号线,i2c总线的时钟频率为19.2mhz。
驱动程序中的bcm2079x_matcn_table结构体负责和设备树进行匹配,在系统初始化阶段,就会匹配设备树里的.compatible属性是否在驱动中有相同的名字,本驱动中是broadcom,bcm2079x_i2c,若匹配成功就会调用驱动程序的probe函数进行初始化工作。
在驱动程序中,bcm2079x_parse_dt负责解析设备树的代码,以下为设备树解析关键代码,分别获取中断、使能、唤醒引脚。
3.2 驱动初始化分析
内核加载驱动模块的时候,系统会调用bcm2079x_dev_init()函数,该函数内部嵌套了i2c_add_driver(),用来完成 bcm2079x_driver结构体的注册,系统就会自动探测驱动设备,通过比较设备树中是否有 compatible=“broadcom,bcm2079x_i2c”键值对来判断设备是否存在。如果存在,则会注册i2c设备相关信息,创建i2c- client,执行probe函数,在probe函数里去解析设备树里面配置的引脚,初始化中断、分配内存空间以及初始化互斥锁、等待队列等,并向系统将驱动注册为misc驱动,然后向系统注册中断。流程图如图4所示。
3.3 驱动运行机制
当用户空间调用open打开/dev/bcm2079x设备节点时,通过ioctl机制调用驱动程序的ioctl,实现设备的使能与唤醒;然后调用poll函数实现周期性的检测,以降低设备的功耗,当有设备或卡片接近nfc设备时,nfc就会产生中断,从而唤醒设备,用户空间就可以通过调用read函数实现i2c数据的读取。运行机制如图5所示。
4 测试结果
nfc设备平时处于休眠状态,设备也会发出探测脉冲,此时处于低功耗状态,当有卡片或nfc设备接近nfc设备时,就会产生中断唤醒设备,nfc设备就会连续地发出探测脉冲,此时nfc工作在正常工作模式。
图6是用频谱分析仪观测到的探测脉冲信号,载波频率为13.559 375 000 mhz,占用带宽obw为2.259615 385 khz,满足ce和fcc认证中针对nfc频段的射频测试要求的13 553~13 567 mhz的调制带宽限值。
当将tag1小卡贴近nfc天线时,可以读出卡内的二进制信息,图7为卡内信息。
用设备分别测试tag1、tag2、tag3、tag4,其可识别距离最远为49 mm、45 mm、29 mm、21 mm,识别成功率在96%以上,测量结果如表1所列。
以上测试表明,nfc模块可以识别多种类型的卡片,可识别距离最大为49 mm,满足nfc设计要求。该模块稳定、可靠、识别率高,可集成到移动支付、票务、门禁、防伪等不同系统中。

中国电信主导提出C-RAN,解决共享5G建设
2021年双十一有哪些运动蓝牙耳机值得买?运动蓝牙耳机推荐
区块链产品溯源是什么
什么是接地电阻 接地电阻测试仪使用方法
bootloader启动过程
采用博通BCM20793结合S3C6410主控制器的NFC模块设计
鼎阳科技发布全新一代SHN900A系列全双端口手持矢量网络分析仪
基于卫星的定位将如何塑造我们的未来
诺基亚计划在德国投资3.6亿欧元用于芯片设计
微软产品将怎样赋能汽车科技
AI风口下智能和呆萌并存的儿童机器人
笔记本选机有门道 为您精选CPU与GPU的黄金组合
基于SVPWM的永磁同步电机矢量控制系统设计
选对工具,你也能做出别人家的酷炫大屏
自动驾驶技术推进物流行业的发展
贝恩财团表示,支持东芝存储在芯片行业的并购行动,包括进行一些大手笔交易
防范手机幅射的8大方法
AirPods三代曝光或将会支持降噪和防水功能体积有所增大
电子支付迈入3.0时代 汇付天下拔得头筹
数据库系统的常见用户