stm32 您所在的位置:网站首页 NFC芯片怎么用来开灯 stm32

stm32

2024-02-20 08:15| 来源: 网络整理| 查看: 265

stm32——NFC芯片--PN532的使用 一、NFC简介

  NFC(Near Field Communication)近场通信,是一种短距高频的无线电技术,在13.56MHz频率运行于20厘米距离内。其传输速度有106Kbit/秒、212Kbit/秒或者424Kbit/秒三种。目前近场通信已通过成为ISO/IEC IS 18092国际标准、ECMA-340标准与ETSI TS 102 190标准。

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

二、PN532概述

  PN532是一个高度集成的非接触读写芯片,它包含80C51微控制器内核,集成了13.56MHz下的各种主动/被动式非接触通信方法和协议。  PN532传输模块支持6种不同的工作模式: 读写器模式,支持ISO/IEC 14443A / MIFARE®机制 读写器模式,支持 FeliCa机制 读写器模式,支持ISO/IEC 14443B机制 卡操作模式,支持ISO 14443A / MIFARE®机制 卡操作模式,FeliCa机制 ISO/IEC18092,ECM340点对点

  支持主机接口:  -SPI接口  -I2C接口  -串行UART

  PN532的操作形式如下图所示:

       

          卡操作模式

 

 

          读写器模式

三、PN532模块搭配ISO/IEC14443Type A-4卡片

  我使用的是PN532模块搭配ISO/IEC14443Type A-4卡,使用串口模式。这个卡是使用APDU(Application Protocol Data Unit--应用协议数据单元)的指令形式操作的。我拿到的卡片是由发卡商提供的,发卡指的是卡的初始化,即卡号写入和密钥写入的过程,完成后卡片才可发放出去;

  发卡:

注入卡号,只能注入一次; 注入密钥,各个密钥只能注入一次;

  接口调用:

S> C0 F5 00 01 08620000000000001F //卡号 C0 F5 00 02 10701279D95F77B378C735F17A019EFA6E //外部认证密钥 C0 F5 00 03 103A748687BFA62A808B4C87AF0EE4B468 //充值密钥 C0 F5 00 04 1040CFE895E6076C932422C04F448C0CA1 //充值通讯密钥 C0 F5 00 05 10C501CBE8A849B3E7F638E7E096E560EF //消费密钥 C0 F5 00 06 104D2A98A9165C79F5A54C862A367E4969 //存储密钥 55 55 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF 03 FD D4 14 01 17 00

  线没接错的话就会返回:

00 00 FF 04 FC D4 4A 01 00 E1 00

  上面的数据中:

  00 00 FF----帧头,与卡相关的所有命令都要包含该头;

  04----包长度,即“D4 4A 01 00”的长度;

  FC----包长度校验:0x100-包长度;此处0xFC=0x100-0x04;

  D4----方向标识码:数据方向是stm32(主机)至PN532

  4A----寻卡命令标识码

  01----卡数量,最大是2,PN532一次只能同时处理两张卡

  00----PN532工作模式:106 kbps type A (ISO/IEC14443 Type A)

  E1----发送的数据校验:等于:0x100-(0xff&(0xD4+0x4A+0x01+0x00))

  00----暂时没发现有什么卵用;

  对于我的卡,若寻到卡,则返回:

C0 F1 00 01 08 00 00 ff 08 f8 d4 40 01 c0 f1 00 01 08 31 00

  看吧:00 00 ff----帧头;08----包长度(d4 40 01 c0 f1 00 01 08);f8----0x100-0x08;d4----主控至PN532;40----数据读写命令;01----卡1;c0 f1 00 01 08----读卡号命令;31----数据校验:等于:0x100-(0xff&(0xd4+0x40+0x01+0xc0+0xf1+0x00+0x01+0x08))

  我的卡,返回的命令码是:

C0 84 00 00 10 //读取随机数 C0 82 00 00 10EC15BF495C66D569C654C02AFBCAA3A2 //写入加密结果指令 00 00 ff 08 f8 d4 40 01 c0 84 00 00 10 97 00

  返回:

00 00 ff 18 e8 d4 40 01 c0 82 00 00 10 A5 96 7E 70 C3 B8 55 9E BB A7 E4 BA 12 95 7D 2E B0 00

  返回:

C0 84 00 00 0e C0 85 00 00 1036E9DEBBFB21A6C6482568EAEA791ECF 00 00 ff 08 f8 d4 40 01 c0 84 00 00 0e 99 00

  返回:

00 00 FF 18 E8 D4 40 01 C0 85 00 00 10 36 E9 DE BB FB 21 A6 C6 48 25 68 EA EA 79 1E CF 47 00

  返回:



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有