TRF7960系列是TI推出的载波为13.56MHz、支持ISO15693、ISO14443A/B和FeliCa协议的射频接口芯片。许多人更关心它能不能读写MF1卡片,就我的理解及实际验证,由于MF1在卡选择之前的操作是遵守ISO14443A协议的,之后的卡验证和卡数据读写都是NXP自己的保密协议,所以TRF7960可以对MF1卡执行到卡选择操作,或者通俗的说可以读MF1的卡片序列号,但不能对MF1卡读写数据,除非开发者自己知道NXP的加密协议并自己编写代码实现该协议。

在TI官方公开的TRF7960说明书中,有详细的参考电路及基于MSP430单片机的参考代码,参考这些资料做自己的开发板或者产品板基本上难度不大。MCU可以使用并口或SPI串口操作TRF7960,并口相对简单一些,SPI通信则有一些问题需要特别注意。

首先,TI给出的SPI参考代码使用的是MSP430的内置SPI接口,我们实际开发中因为单片机内部资源或引脚分配限制往往需要软件模拟SPI通讯。TRF7960的SPI协议规定:

  • 不通讯的时候,片选NSS保持高电平,时钟CLOCK保持低电平,通讯的时候NSS保持低电平。
  • 主机向TRF7960写一位数据时,在CLOCK为低电平期间根据数据的值设置MOSI数据线,然后CLOCK上升沿通知TRF7960可以接收数据,CLOCK下降沿后继续准备下一位要发送的数据,代码如下:
      ;j>;j--)
      {
       if(((*pbuf)&0x80)==0x80)TRF796X_MOSI_HIGH;
       else           TRF796X_MOSI_LOW;
        TRF796X_SCK_HIGH;
        (*pbuf) <<= ;
        TRF796X_SCK_LOW;
      }
  • 主机从TRF7960读一位数据时,在CLOCK为高电平期间TRF7960根据数据的值设置MISO数据线,然后CLOCK下降沿通知MCU可以接收数据,CLOCK上升沿后继续准备下一位要发送的数据,代码如下:
      ;j>;j--)
      {
         TRF796X_SCK_HIGH;
         _NOP();_NOP();
         TRF796X_SCK_LOW;
         (*pbuf) <<= ;
         ;
       }

其次,MCU可以使用Direct Command直接向TRF7960发送一字节的命令码,执行复位、进入省电模式、向卡片发送数据、调整接收电路增益等功能。Direct Command的SPI时序有一个特殊的要求,在发送完一字节的命令后,在SS拉高之前,CLOCK要多出一个上升沿,代码如下:

    SLAVE_SELECT_LOW;       

    ;j>;j--)
    {
     if(((*pbuf)&0x80)==0x80)TRF796X_MOSI_HIGH;
     else                    TRF796X_MOSI_LOW;
        TRF796X_SCK_HIGH;
        (*pbuf) <<= ;
        TRF796X_SCK_LOW;
    }
    _NOP(); _NOP();

    TRF796X_SCK_HIGH;
    _NOP(); _NOP();
    SLAVE_SELECT_HIGH;       

    _NOP(); _NOP();
    TRF796X_SCK_LOW;

最后,TRF7960向磁场中的卡片发送数据后,等待卡片回应,是否收到卡片回送的数据及是否反应超时等命令的执行情况都是通过中断机制来表示的。在NXP的射频芯片中,可以不使用芯片的中断引脚IRQ而是直接查询射频芯片的中断标志寄存器来获得各种事件发生的情况,但在TRF7960中不能使用这种方式,因为读一次TRF7960的中断标志寄存器将会把寄存器中的中断标志清除,所以电路中通常要使用IRQ引脚,可以用IRQ引脚使能MCU中断或直接查询IRQ引脚,从而得知TRF7960内部发生了中断事件,进而用SPI读取其中断标志寄存器获取详细的中断事件产生情况。

射频识别技术漫谈(29)——射频接口芯片TRF7960的更多相关文章

  1. 射频识别技术漫谈(20)——RC系列射频接口芯片

    目前基于13.56MHz的射频识别技术主要有ISO14443A.ISO14443B.ISO15693和FELICA技术.针对13.56MHz的射频识别技术,NXP开发了一系列名字以RC(Radio C ...

  2. 射频识别技术漫谈(28)——基于MF1射频卡的酒店门锁设计

    电子门锁是现代星级酒店管理电子化.智能化的重要电子设备.相较于传统的机械锁,基于RFID技术的电子门锁使用方便,易于管理,安全性高,可实现对开锁用户的分优先级自动管理,对房间入住信息实现自动统计与报表 ...

  3. 射频识别技术漫谈(23)——ISO15693的载波、调制与编码

    射频识别技术中的通讯大多是主从式,主动方一般是读写器,被动方称为“卡片”或“标签”.到底是叫“卡片”还是“标签”,好像也没有严格的区分.习惯上可以从以下4个方面界定:一是形状,卡片通常体积较大,更像“ ...

  4. 射频识别技术漫谈(10)——识别号的格式变化【worldsing笔记】

    从事RDID行业的朋友经常会遇到这样的情况,同一张ID卡,在不同厂家生产的读卡器上读出的识别号完全不一样,有时甚至差之千里.ID卡的识别号一般是在出厂时被固化在卡片的ROM里,本身是不会改变的,问题出 ...

  5. 射频识别技术漫谈(1)——概念、分类

    现代社会智能卡已经渗透到生活的方方面面,公交卡.考勤卡.身份证.手机卡等等数不胜数.    智能卡按使用时是否和读卡器接触可分为接触式智能卡和非接触式智能卡,接触式智能卡上有6-8个触点,使用时插在卡 ...

  6. 射频识别技术漫谈(25)——Felica简介

    Felica是SONY公司开发的射频识别技术,该技术使用的载波频率与ISO14443A和ISO14443B一样,都是13.56MHz,所以有人把它称为ISO14443C,但SONY并没有正式接受这样的 ...

  7. 射频识别技术漫谈(2)——国际标准【worldsing 笔记】

    如果你只是智能卡的用户,通常可以不必关注国际标准,但作为智能卡的专业开发人员,则至少也要对相关标准有所了解.国际标准一般都是西方人制定的,原版都是英文的,而所谓中文版往往是对原版的直译,许多情况下并未 ...

  8. 射频识别技术漫谈(6)——通讯协议概述【worldsing笔记】

    通讯协议是通讯的双方或多方在交流时遵守的规矩,包括谁先发起通讯,先交流什么,后交流什么,一方如何问,另一方如何答等.在这里通迅的双方指的是读写器和卡片. 首先是谁先发起通讯,很显然有两种,读写器先发言 ...

  9. 射频识别技术漫谈(4)——数据编码【worldsing 笔记】

    前已述及,射频识别技术中的调制方法一般使用调幅(AM),也就是将有用信号调制在载波的幅度上传送出去.这里的"有用信号"指用高低电平表示的数据"0"或" ...

随机推荐

  1. DOM缘起

    DOM是现在按W3C标准的浏览器均实现的标准.HTML.CSS.DOM共同在结构.表现.交互上共同支撑起一个页面.当然,必须以用户为中心.平稳退化.逐渐增强.DOM的操作是通过JS来实现的.JS最初在 ...

  2. Java SE基础部分——常用类库之Math和Random类(随机产生数值)

    //20160518 Math类常用方法 练习 package MyPackage; public class MathDemo {//定义主类和main方法 public static void m ...

  3. MIT6.828 JOS系统 lab2

    MIT6.828 LAB2:http://pdos.csail.mit.edu/6.828/2014/labs/lab2/ LAB2里面主要讲的是系统的分页过程,还有就是简单的虚拟地址到物理地址的过程 ...

  4. Linux学习之(())操作符

    在刚开始学习inux shell脚本编程时候,对于它的 四则运算以及逻辑运算.估计很多朋友都感觉比较难以接受.特变逻辑运算符”[]”使用时候,必须保证运算符与算数 之间有空格. 四则运算也只能借助:l ...

  5. css负边距自适应布局

    单列定宽单列自适应布局: <!DOCTYPE HTML> <html> <head> <meta charset="UTF-8"> ...

  6. 电池和Adapter切换电路改进实验

    目的:很多单电池的机器在大负载的情况下,如把背光开到最亮,运行3D游戏,此时拔DC电源很容易出现机器死机,或花屏现象: 原因:Q5的导通时间不够,希望通过G极的快速放电,加快到导通时间: 修改前的电路 ...

  7. sql优化-总结

    1.尽量缩小数据范围. 2.能一个sql解决的,坚决不用两条sql.利用case when或decode. select month_id, corppkno, sum(exportSum_new) ...

  8. 在Mac上配置Apache+PHP环境

    1.启用Apache/Web共享 打开终端,运行启动Apache命令: sudo apachectl start 然后输入系统密码,运行成功. 关闭命令: sudo apachectl stop 重启 ...

  9. Ubuntu 13.04 小米2S连接Eclipse真机调试

    最近想继续将自己以前的一些Android程序代码进行改进和优化,遂将以前的代码在windows下导入eclipse工程,谁知导入后便eclipse假死,甚至windows资源管理器也动弹不得,诡异的是 ...

  10. 通过案例练习掌握SSH 的整合

    1. SSH整合_方案01 **  整合方案01  Struts2框架 Spring框架  在Spring框架中整合了Hibernate(JDBC亦可)  一些业务组件(Service组件)也可以放入 ...