原创 我的RFID阅读器开发过程[1]

2007-11-1 23:39 4234 1 1 分类: 通信
    单片机使用LPC2102,用ISP的方式开发。读卡芯片FM1702NL。SPI的方式。

    使用SPI接口时,有一个需要注意的地方。在FM1702NL的芯片资料上并没有详细的介绍,后来我还是从FM1702SL的资料看到的。就是SPI接口的确认过程,并口需要确认,SPI口也需要确认。

    文字描述就是:先在读卡芯片的RSTPD管脚产生个复位信号->读芯片的命令寄存器是否为0,不是0就不断检测->如果为0,往Page register里面写0x80->再判断命令寄存器是否为0->如果为0,往Page register里面写0x00。到这里,FM1702的SPI初始化就算完成了。

    接下来就去读type A的卡。如果天线调谐得很棒的话,设置一下几个寄存器就可以读到卡片的信息了。至于天线如何调谐,别问我,我也不清楚。运气好的话,你可以拎个示波器来看看波形,正弦波的波形非常好的话,就表示高次谐波的功率非常低。反正我是运气较好,调了一个1cm范围的天线,嘿嘿,高兴一会会。不过在那个什么防碰撞上面,可是遇到了麻烦。于是这部分的程序我留到以后再写。先按照一张卡片来吧。整个简单的流程先玩一遍。

    激活卡片有两个命令,如下:
    #define PICC_REQIDL  0x26 /*寻天线区内未进入休眠状态的卡*/
    #define PICC_REQALL  0x52  /*寻天线区内全部卡*/
    我当然用后面那个,至于这两者有多大区别,我还得试过才知道。我现在还不知道怎么样才能让卡片休眠呢。

    这个寻卡的命令仅由7个数字位组成。仅由7个   仅由7个   仅由7个
    次序如下,看以下函数,很简单的,猜都能猜出是啥意思。
void testATR(void) //做测试用的,通过串口返回数据,在串口
{                  //助手里面用hex的方式察看
    uint8 i,temp;
    Wr_Rd_PCD(0,RegTxControl,0x5b);     //发送载波,当然得先发送
           //调天线时也是这样,没有载波怎么调嘛。赋值的具体含义参看
           //芯片的pdf文档,我就不拷贝过来了
    delay_50us(10000); //500ms延时而已,或长或短,能看着办吗?
    Wr_Rd_PCD(0,RegCommand,PCD_IDLE);
    Wr_Rd_PCD(0,RegChannelRedundancy,0x00);   //不发送奇偶校验位
    Wr_Rd_PCD(0,RegBitFraming,0x07); //根据标准, 只发送7bit的数据
    Wr_Rd_PCD(0,RegFIFOData,PICC_REQALL); //先往FIF0写入读卡命令
    Wr_Rd_PCD(0,RegCommand,PCD_TRANSCEIVE);//命令寄存器写收发命令
    delay_50us(10000);  //500ms,延时,还是延时
    temp=Wr_Rd_PCD(1,RegFIFOLength,RDONEBYTE);//看看有多少数据
    test(temp);//串口上传一下结果,如0x03什么的
    if(temp>0){ //有数据,那就读出来吧
        for(i=0;i
            atqa= Wr_Rd_PCD(1,RegFIFOData,RDONEBYTE);
        }
        for(i=0;i
    }
}

    简单点说,给卡片发0x52,卡片返回0x04,0x00。这时,RegFIFOLength=0x03。这就是请求所有,激活卡片吧。在这一步,发7个数据位就可以了,不用奇偶校验,不要CRC校验,不用发完整个字节,不然就收不到东西了。这就是第一步了。只要天线是调谐的,通过修改这几个寄存器,就可以跟卡片打招呼了。


;i++)>;i++){>


;i++)>;i++){>

文章评论0条评论)

登录后参与讨论
相关推荐阅读
linux2.8 2011-05-19 16:50
还是有点区别好啊
               上面的两个图是从freescale的某个文档里面截出来的。虽然,贴装的电阻器电容器不需要区别方向,但是,从原理图里面能够直观地得到更多的信息,毕竟不赖。    看到上面的...
linux2.8 2011-05-19 14:22
引脚交换,华而不实的功能?
            以上图片来自AD Summer的帮助文档:        《Pin and Part Swapping with Dynamic Net Assignment》        ...
linux2.8 2011-05-17 11:50
S3C2440的nTRST,小郁闷了一下
    折腾一块S32440的板子(硬件不是我做的,也没怎么看芯片文档)。加上ULink,板子工作。不加,不工作。以为是JTAG接口有虚焊,于是用烙铁重新遛了一遍。问题依旧。    接下来,拿镊子去复...
linux2.8 2011-05-13 21:47
LPC4350——总线依旧拧麻花
    本以为LPC4350的数据总线分布会比较顺的,一不小心,也有可能多扇出一些管脚的。谁知道,结果竟然还是……如下:        从上图可以依稀看出:D0~D7 与 D8~D15有些交错(这个倒...
linux2.8 2011-03-07 23:32
[之二] 怎么轻松怎么来
        关于慢跑时手掌的姿势,学校的教法是“虚握双拳”。理由是什么,不曾有体育教师提及过,或许他们中的大部分人都不知道。即使是知道的,也可能会认为那种解释站不住脚,因此也不会向学生讲解。又或者...
linux2.8 2011-03-03 08:56
Copycats or 山寨
        “山寨”一词该如何翻译为英文呢?当然是“made in china”。        在Steve Jobs眼里,恐怕终其这辈子,是不会有“made in china”这个字眼的。不过...
我要评论
0
1
1
2
3
4
5
6
7
8
9
0
关闭 热点推荐上一条 /4 下一条