|
写了好几天T5567卡了,一直写不好,非常郁闷啊,还请大侠能帮忙看看
我的目的是用T5557卡模拟EM4100的卡
下面是我的问题:
1.EM4100包括起始头+数据+校验等等共计64位,那么如果我要模拟EM4100卡,是否就要用T5567的第0页的第1块和第2块写入这些完整的64位数据呢?
2.如果我要模拟EM4100 就需要配置第0页的第0块数据,请问我这样配置是否正确?
0 0000 0000 0001 0100 1000 0000 0100 0000
锁定位 0x 0 0 1 4 8 0 4 0
附图:T5567的0块配置定义:
![](http://cache.amobbs.com/bbs_upload782111/files_35/ourdev_612505E9YROT.jpg)
(原文件名:t5567-0b.jpg)
3.数据手册说:正常读模式下一个StartGap进入写模式,那么这个GAP是否就是关闭磁场?
附图:T5567写操作:
![](http://cache.amobbs.com/bbs_upload782111/files_35/ourdev_612507B633U0.jpg)
(原文件名:T5567-w.jpg)
4.按照上面那个图,写数据的时候数据位之间是有一个gap,这个gap就是关闭磁场吗?
5.数据0和1的区别就是打开磁场时间的长短,按照上图:
1 = 48 - 63 FC 125hz一个FC应该是8us? 那么就是384us—504us
0 = 16 - 31 FC 那么就是128us—248us
Sgap = 10-50 FC 那么就是关闭磁场80us—400us
wgap = 8-30 FC 那么位间隔就是关闭磁场64us—240us
6.可是我按照上面的时序调整的非常精确,还是不行,这是为何呢
这是我的代码,参考了坛子里wxws 马建的代码:
#define USER_DATA1 0xFF94A003
#define USER_DATA2 0xD4C494DA
/**
* @brief Main program.
* @param None
* @retval None
*/
int main(void)
{
uint32_t config = 0x00148040;
system_init();
/* Infinite loop */
while (1)
{
//delay_us(2500);
t5557_std_write(0,config);
t5557_std_write(1,USER_DATA1);
t5557_std_write(2,USER_DATA2);
read_cardInfo(&g_rfid);
}
}
void t5557_std_write(uint8_t block,uint32_t data)
{
uint32_t Tbit;
uint32_t i;
WRITE_TAG_N(0);
Contrl_RF(0,START_GAP); /*起始间隔,开始写*/
/*写操作码10,对0页进行操作 */
Contrl_RF(1,WR_ONE); /*写1,延时*/
Contrl_RF(0,W_GAP); /*写间隙,完成写1bit*/
Contrl_RF(1,WR_ZERO); /*写0,延时*/
Contrl_RF(0,W_GAP); /*写间隙,完成写1bit*/
/*块锁信号 0:不锁 */
Contrl_RF(1,WR_ZERO); /*写0,延时*/
Contrl_RF(0,W_GAP); /*写间隙,完成写1bit*/
//数据 共32bit 数据
Tbit=0x80000000; //1000 0000 0000 0000 0000 0000 0000 0000
for(i=0;i<32;i++)
{
if(data & Tbit)
{
Contrl_RF(1,WR_ONE); //1
}
else
{
Contrl_RF(1,WR_ZERO); //0
}
Contrl_RF(0,W_GAP); //数据间隔
Tbit>>=1; //右移一位,测下一个bit
}
//块地址
Tbit=0x4; //100
for(i=0;i<3;i++)
{
if(block & Tbit)
{
Contrl_RF(1,WR_ONE); //1
}
else
{
Contrl_RF(1,WR_ZERO); //0
}
Contrl_RF(0,W_GAP);
Tbit>>=1; //右移一位,测下一个bit
}
STOP();
delay_ms(60000);
}
void Contrl_RF(uint8_t state,uint32_t dtime)
{
//控制载波时长 开/关,us
if (state == 0)
{
RF_PH_DO_HIGH;
}
else
{
RF_PH_DO_LOW;
}
delay_us(dtime); //延时
}
下面附上T5567的完整数据手册,请大侠帮忙,感谢感谢...
点击此处下载 ourdev_612508HE18G1.pdf(文件大小:547K) (原文件名:T5567 AA.pdf) |
阿莫论坛20周年了!感谢大家的支持与爱护!!
曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
|