硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3077|回复: 1
收起左侧

[其它] RFID,RF7960

[复制链接]

4

主题

8

回帖

20

积分

新手上路

积分
20
QQ
发表于 2017-3-4 12:02:44 | 显示全部楼层 |阅读模式
我最近在玩TI的TRF7960,读到卡的UID了,但是看了看文档,读块写块说的简单,我直接把代码写过去,读取中断状态不太对。

我还看了看文档说的也很简单。想问问论坛里面有没有谁也玩过这个的。


//*************************************************************************************************
// 功能描述 : 获取单块数据,无地址的读
// 输入参数 : 起始块
// 返回参数 : 无
// 说    明 :
//*************************************************************************************************

void ReadSingleBlock(unsigned char Block)
{
    unsigned char command, found = 0;
    unsigned int size;                          // 请求命令数据帧大小   
    //unsigned char cBuf[20];         // 时隙总数,默认1 时隙(NoSlots = 时隙数 + 1)
    size=3;
    cBuf[0] = 0x8f;    // Reset FIFO command
    cBuf[1] = 0x91;    // send with CRC
    cBuf[2] = 0x3d;    // write continuous from register 1D
    cBuf[3] = (char)(size>>8);// Data for register 1D,    data length
    cBuf[4] = (char)(size<<4);// Data for register 1E
    cBuf[5] = 0x00;// ISO15693 flag with Option flag set
    cBuf[6] = 0x20;    // Read mul Blocks command code
    cBuf[7] = Block;        // First Block Number
  
    RAWwrite(&cBuf[0], 8);                    // 写 FIFO
   
    CounterSet();                    // TimerA设置
    countValue = count1ms * 10;        // 20ms
   

    i_reg = 0x01;                               // 当前状态为RX状态
    startCounter;        //开启时钟A,增计数模式
   
    irqCLR;                        // 清除已经存在的IRQ中断标志
    irqON;
    LPM0;            //等待发送完成
   
    RXTXstate = 1;                    // 接收数据保存从buf[1]开始
    while(i_reg == 0x01)
    {
    }

    i_reg = 0x01;

    CounterSet();
    countValue = 0x2000;    /* 10ms for TIMEOUT */
    //startCounter;            /* start timer up mode */

    while(i_reg == 0x01)
    {
    }   
        if(i_reg == 0xFF)
        {            //接收到 UID
            found = 1;
        }

        command = Reset;        // FIFO 在下个时隙前必须复位
        DirectCommand(&command);
   
    if(found)
    {               
        LED15693ON;
        for(char i = 0;i <4;i++)                   //提取接收缓存中的数据
        {
            Data = buf[5-i];         
        }
    }
    else
    {
        LED15693OFF;
        for(char i = 0;i < 8;i++)                  
        {
          Data = 0x01;
        }        
    }
    irqOFF;
}   
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
111540
QQ
发表于 2017-3-4 13:28:53 | 显示全部楼层
没有用过哦,帮顶。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-11-1 07:01 , Processed in 0.203457 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表