恩智浦
恩智浦(NXP)是荷兰一家半导体公司,目前在半导体领域全球排名前十。这家公司原来隶属于飞利浦,后以80亿欧的价格卖给荷兰一家公司,并在2006年以【恩智浦】的中文名在中国市场经营。在消费市场领域,NXP是全球第一大电视硅芯片厂商,平均出售两台电视机就有一台内部使用NXP的多媒体芯片,NXP同时是RFID解决方案的第一大厂商,其RFID芯片占全球市场的80%以上。NXP同时提供有LPC, i.MX系列ARM Cortex-M0至M7内核通用MCU。
NXP公司的PN系列产品
上面说到NXP公司在射频芯片领域是一骑绝尘的,其NFC产品系列以PN开头,如比较出名的PN532, PN7150, 以及全功能NFC支持的PN5180(这玩意儿甚至支持VISA和万事达信用卡的消费)。
PN532是一个以80C51为内核的单片机,支持ISO14443A/B标准Mifare卡和FeliCa, Jewel等类型的卡的读写,需要上层MCU主控,通信接口可选UART,SPI,I2C。官方报价4.8US每片(4000片),淘宝上售价RMB15-18每片。
PN7150是一个NFC全功能的高性能芯片,支持读卡器模式,卡仿真模式,以及点对点通信模式,几乎支持市面上所有类型的NFC卡片。需要上层MCU主控,通信接口只有I2C。官方售价3.36US每片(490片),淘宝上售价19-25元每片。
PN5180是一个RFID全功能高性能芯片,与前两者不同的是,它不再仅仅是一个NFC芯片,它是一个全功能的RFID芯片,它可以读ISO15693协议的ID卡,以及具有高级安全协议的银行信用卡,比如VISA和MASTER,因此可以用它来开发POS机(开发难度也是巨大的)。同时PN5180不再需要上层MCU主控,直接可以在PN5180内部进行编程,需要配合NXP自家的IDE进行开发。官方售价4.09US每片(490片),淘宝售价60元左右每片。
综合成本、开发难度、产品使用场景等因素考量,我们选择PN532作为NFC芯片。淘宝购买的模组如下,价格30元左右,同时送了两张Mifare S50卡,商家提供的百度网盘中还有一些实用的PC上位机,开发文档等若干,此处不表。
PN532
下面来详细介绍一下PN532,这款芯片在中国的使用度极广,因此网上的资料也很多,在这里我们仍然以一种零基础入门者的心态来理解这颗芯片。
硬件部分我们这里就不表了,因为手上已经购买了开发板,成品设计时让硬件工程师照着官方PCB和原理图进行设计就可以了。我们主要关心使用上位机与PN532进行通信的流程,点击下载PN532的官方手册,点击下载PN532应用笔记
软件部分,根据官方手册,我们了解到PN532可以使用UART,SPI,I2C与主控MCU进行通信,具体通信方式根据P16和P17引脚来决定,参考PN532AN.pdf Page7: 这里要说明的是,硬件通信接口只指定通信介质和时序,跟软件通信协议无关,无论何种通信接口,其传输数据时收包和发包的内容都是一致的,由软件层面的通信协议来决定。具体使用时不同的通信接口单双工模式稍有差别,SPI和UART在硬件层面是双工的,I2C则是单工的,软件层面的协议要仔细看手册,PN532所有通信行为都是单工的。
PN532AN Page32列举了一次典型的对于Mifare卡的读写流程:
简而言之,逻辑上就是:
- 寻卡
- 认证
- 读写卡
- 释放
以上步骤将会依次经历以下流程:
- InListPassivTarget
- InDataExchange
- InSelect, InDeselect, InRelease(这一步其实不重要)
具体的,上面这些流程将涉及什么样的输入输出字节流,我们下一节将详细讲解。
小结
这一章我们对恩智浦NXP公司,以及他们家的产品线有了一个大概的了解,着重对PN532这个芯片产品有了一个认知。下面一节我们将深入PN532的通信协议,罗列一套完整的上位机与PN532进行通信的握手过程,实现Mifare S50卡片的读写。