T5567卡写卡的问题,几天了,大侠帮帮忙吧!
写了好几天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
/**
* @briefMain program.
* @paramNone
* @retval None
*/
int main(void)
{
uint32_tconfig =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) 补充一点,这个卡应该是没有密码的,按照数据手册的说法,当卡有密码,那么离开磁场后就会进入休眠模式,当再靠近磁场时仍然不会发送数据,必须用Stap 10 + 密码,唤醒,才能读取数据
而我这张卡,只要靠近磁场就有数据输出,虽然看不懂,示波器抓出来是一个周期256us,我猜测是RF/32的曼码 再补充一张配置页0,块1的天线上面的波形配置字:0x00148040 前面三位100 (10,操作码,对0页操作;0不锁定)
Sgap = T1-T2之间的时间
修改原因:忘记上图片
http://cache.amobbs.com/bbs_upload782111/files_35/ourdev_612514R86MUB.jpg
(原文件名:ant.jpg) 再顶起来 up 顶起! 楼主解决问题了没有??
能否共享下解决方法??
谢谢! 竟然还没解决??
页:
[1]