(7)mifare卡读写器开发心得『转』--整理重发贴

来源:互联网 发布:wiley电子期刊数据库 编辑:程序博客网 时间:2024/06/05 05:12
发信人:srz 发表时间:2003-04-15 14:03:04
--------------------------------------------------------------------------------
一张卡用读卡器读数据为
b00:620C66F7FF88040046D4EE0532363A31
B01:000000000000000000000000000000000
B02:000000000000000000000000000000000
B03:000000000000FF078069FFFFFFFFFFFF
可为何我用RC500密码B始终校验不过?用密码A已经通过(6字节FF)。
用密码B时除了命令码改为PICC_AUTHENT1b还有没有要更改的?

发信人:qgque 发表时间:2003-04-15 14:33:47
--------------------------------------------------------------------------------
在rc500程序里有个基地址ini,请问这个基地址怎么确定?基地址确定之后,rc500芯片64个寄存器的绝对地址就是基地址 寄存器地址吗?
这里的问题好像回复比较慢,是不是大家都很忙还是认为问题太简单初级而不愿意回答?

发信人:qgque 发表时间:2003-04-15 16:06:57
--------------------------------------------------------------------------------
像Mifare卡的各种命令如标准请求、全请求,读、写等他们的16进制代码是多少?在哪个文档里面有?因为文档比较多,目前还没有看完全部文档就开始看程序了,不过我查了与S50有关的文档都没有,还有就是一些错误代码又在什么地方可以找到?这些应该都是Philips规定的吧。

发信人:qgque 发表时间:2003-04-15 16:31:54
--------------------------------------------------------------------------------
在rc500程序里有个基地址ini,请问各位这个基地址怎么确定?rc500的64个寄存器绝对地址是不是就是基地址 寄存器自己地址?谢谢!

发信人:cwcyxy 发表时间:2003-04-16 08:31:49
--------------------------------------------------------------------------------
2、是。

发信人:cwcyxy 发表时间:2003-04-16 08:33:59
--------------------------------------------------------------------------------
密钥b的使用需要更改访问条件,就是中间的四个字节。
看看相关的手册吧。

发信人:qgque 发表时间:2003-04-16 09:08:49
--------------------------------------------------------------------------------
谢谢cwcyxy。还想请教几个问题:
1。Mifare卡的各种命令(如标准询卡,全部询卡,读,写,加、减等),他们的代码是Philips定义的吗?在哪个文档里面有?
2。MFIN和MFOUT管脚是不是在两个读卡器通信的时候才有用?假如我现在只有一个读卡器对卡进行操作,是不是这两个管脚就没用了?两个读卡器通信时两个管脚是物理连接在一起还是通过射频方式?
3。AUX管脚有什么作用?
再次谢谢!

发信人:qgque 发表时间:2003-04-16 09:15:46
--------------------------------------------------------------------------------
谢谢cwcyxy!还有几个问题请教:
1、MFIN和MFOUT引脚是不是只用于两个读写器之间的通信?假如我现在只有一个读写器对卡进行操作,那么MFIN和MFOUT引脚是不是没用?两个读写器通信是两个引脚是物理连接在一起还是通过射频方式?
2、AUX引脚有什么作用?

发信人:qgque 发表时间:2003-04-16 09:44:07
--------------------------------------------------------------------------------
Philips提供的rc500程序是不是基于p89c51rx系列mcu的?

发信人:qgque 发表时间:2003-04-16 09:50:31
--------------------------------------------------------------------------------
在下面程序中:
#define GetRegPage(addr) (0x80|(addr>>3))
宏GetRegPage(addr)取得寄存器的页号,根据rc500资料应该返回0~7;那就应该是:
#define GetRegPage(addr) (0x00|(addr>>3))
但为什么是0x80呢?

发信人:qgque 发表时间:2003-04-16 10:00:56
--------------------------------------------------------------------------------
在Philips提供的程序中,宏SEC_NO_MICORE代表什么意思?还有接下来的WriteIOBlock()和ReadIOBlock()两个函数实现什么功能?

发信人:qgque 发表时间:2003-04-16 10:06:11
--------------------------------------------------------------------------------
你说的基地址就是rc500的片选地址,根据程序,rc500的片选引脚与P1_0相连,那它的的地址应该不是0x7f00啊?

发信人:cwcyxy 发表时间:2003-04-16 11:11:18
--------------------------------------------------------------------------------
mifare1的命令:
//mifare card  command
#define     PICC_REQSTD           0x26            
#define     PICC_REQALL           0x52            
#define     PICC_ANTICOLL1        0x93            
#define     PICC_ANTICOLL2        0x95            
#define     PICC_ANTICOLL3        0x97            
#define     PICC_AUTHENT1A        0x60            
#define     PICC_AUTHENT1B        0x61            
#define     PICC_READ             0x30            
#define     PICC_WRITE            0xA0            
#define     PICC_DECREMENT        0xC0             
#define     PICC_INCREMENT        0xC1             
#define     PICC_RESTORE          0xC2             
#define     PICC_TRANSFER         0xB0             
#define     PICC_HALT             0x50     

发信人:qgque 发表时间:2003-04-16 11:23:44
--------------------------------------------------------------------------------
你这是从程序里面拷出来的吧?
我是想知道在哪篇文档里面出现?
有些问题我是尽量自己分析,但是搞不定的还请cwcyxy你不吝赐教啊!

发信人:zbs9013 发表时间:2003-04-16 12:37:43
--------------------------------------------------------------------------------
请教各位高手,我的MFOUT引脚我配置的输出编码器之前的数据,但为什么我测量到的数据跟我发送的数据总是不一样,请大家帮帮忙,应该如何测量,谢谢了。

发信人:cwcyxy 发表时间:2003-04-16 14:12:52
--------------------------------------------------------------------------------
发信人:cwcyxy 发表时间:2003-04-16 14:16:36
--------------------------------------------------------------------------------
到网上搜索:
《关于非接触式IC智能(射频)卡
及其读写设备内核技术的研究与应用开发》
上海华东磁记录电子公司  张敏     
发信人:qgque 发表时间:2003-04-16 15:57:18
--------------------------------------------------------------------------------
Philips提供的文档都是针对MCM200和MCM500的,还有没有专门针对rc500的资料啊?rc500和MCM200、MCM500有些什么差异?开发时需要注意些什么?

发信人:cwcyxy 发表时间:2003-04-16 16:47:48
--------------------------------------------------------------------------------
发信人:qgque 发表时间:2003-04-17 08:03:17
--------------------------------------------------------------------------------
你看我都给stevenCH发了很多帖子啊,不知道stevenCH是不是太忙还是不屑给我回复啊?

发信人:qgque 发表时间:2003-04-17 09:39:43
--------------------------------------------------------------------------------
在rc500ISR中LoAlert部分,
WaterLevel是这样计算的:
nbytes = MFIFOLength - ReadRawIO(RegFIFOLength);
但这样计算出来应该是FIFO剩余字节空间,
WaterLevel不是写寄存器FIFOLevel来设置吗?
WaterLevel=WriteRawIO(RegFIFOLevel);
发信人:qgque 发表时间:2003-04-17 09:44:59
--------------------------------------------------------------------------------
还有:
WriteRawIO(ReginterruptEn,0x01); // disable LoAlert IRQ
但是rc500资料上说不能直接对LoAlertEn置位或清零,这岂不矛盾了?

发信人:qgque 发表时间:2003-04-17 10:27:22
--------------------------------------------------------------------------------
在rc500中断程序里除了进行标志位操作之外还需要进行些什么其他操作?比如在LoAlert中断程序里下面循环实现什么功能?
for ( cnt = 0;cnt < nbytes;cnt )
   {
    WriteRawIO(RegFIFOdata,MpIsrOut[MpIsrInfo->nBytesSent]);
               MpIsrInfo->nBytesSent ;
            }

发信人:handf 发表时间:2003-04-17 11:02:15
--------------------------------------------------------------------------------
我通过mfout脚将卡片应答的信号读出后比较发现数据是正确的,按照我现在的问题现象应该是接收部分有问题。现在的现象是在接收到数据后错误寄存器返回0x04,按照资料说明是帧错误,也就是说没有接收到SOF。不明白造成这种错误的原因在哪里。

发信人:handf 发表时间:2003-04-17 11:26:21
--------------------------------------------------------------------------------
crc的设置没有问题,卡片也正确应答了,因为我通过mfout脚将卡片应答的信号读出后比较发现数据是正确的。现在的现象是在接收到数据后错误寄存器返回0x04,按照资料说明是帧错误,也就是说没有接收到SOF。不明白造成这种错误的原因在哪里。

发信人:pinguo 发表时间:2003-04-17 11:38:54
--------------------------------------------------------------------------------
出来乍到,请多多指教。一个问题,MIFARE ONE 目前价格如何,还有与它配套的读卡器芯片200、500价格多少?谢谢!

发信人:withhold 发表时间:2003-04-17 12:02:06
--------------------------------------------------------------------------------
我们应在在巨人的肩膀上成功,有好的东西为什么不用,如果大家都只是从底层开始我想绝大多数的工程师在重复相同的工作,作一些根本没有创意的底层开发,只知道依葫芦画瓢,依照人家设计好的思想重复人家走过的路!

发信人:tpu 发表时间:2003-04-17 13:14:49
--------------------------------------------------------------------------------
typeb好像可以设置是否需要接受/发送sof等,你再看看文档。

发信人:handf 发表时间:2003-04-17 13:54:09
--------------------------------------------------------------------------------
从测试口得到卡片数据有SOF,长度为10个ETU的低电平和2个ETU的高电平。如果在寄存器的设置中将接收SOF关闭则错误寄存器返回0x08,按资料说明应该是接收的数据CRC校验和错误。不懂了,左右为难。:(

发信人:handf 发表时间:2003-04-17 14:04:33
--------------------------------------------------------------------------------
从测试口得到卡片应答数据有SOF,长度为10个ETU的低电平和2个ETU的高电平,后面是卡片应答的14个字节的数据,数据间EGT=0,最后的EOF长度为10个ETU的低电平。如果在寄存器的设置中将接收SOF关闭则错误寄存器返回0x08,按资料说明应该是接收的数据CRC校验和错误。不懂了,左右为难。:(
发信人:tpu 发表时间:2003-04-17 14:45:42
--------------------------------------------------------------------------------
我也没意见了。我做的时候比较顺利,直接就出来了。建议仔细的看一下程序。我曾经因为一个小错误,困扰了十几天。

发信人:handf 发表时间:2003-04-17 15:14:08
--------------------------------------------------------------------------------
终于发现问题了,原来是有一个寄存器0x21用来设置当531发送完数据后开始接收数据有效的延时时间。应该设置为0x03,但是却设置为0x06。太谢谢tpu兄了,这段时间打扰你了。谢谢!
同时也谢谢stevench给与我们的帮助,谢谢!

发信人:qgque 发表时间:2003-04-17 16:27:39
--------------------------------------------------------------------------------
在Philips提供的程序main.c中,寻卡、防冲突和选卡成功后接下来的程序实现什么功能啊?

发信人:qgque 发表时间:2003-04-18 08:25:19
--------------------------------------------------------------------------------
根据资料,M500PiccSelect(snr,&sak)执行完后返回Mifare卡类型的标识sak,根据Philips的文档M18410,接下来应该判断所选中的卡是MF 1S还是MF 1L还是MF 1P,但是接下来的程序好像不是这样的,特请教!

发信人:zbs9013 发表时间:2003-04-18 12:28:31
--------------------------------------------------------------------------------
MFOUT寄存器设置的值为0X03,并且后面DIGITALTESTSELECT保持上电复位的值不变,也就表示没有起用这个寄存器的设置,不知道到底该如何测量?????

发信人:qgque 发表时间:2003-04-18 13:18:22
--------------------------------------------------------------------------------
Philips提供的程序中,下面几个函数干什么用啊?
char CL_GetChallenge(unsignedchar CID, unsignedchar *Buf); //:
char CL_SelectFile(unsignedchar CID,    //:
           unsigned char P1,
           unsigned char P2,
           unsigned char *file,
           unsigned char *Buf);
void PrepareValue (unsignedlong value, unsignedchar *buf);  //:
还有,在寻卡、防冲突、选卡成功之后的程序实现什么功能啊?
我问的问题怎么没有人回答呢?

发信人:qgque 发表时间:2003-04-18 14:32:05
--------------------------------------------------------------------------------
Philips提供的程序:
char M500PcdLoadKeyE2(unsignedchar key_type,
                          unsigned char sector,
                          unsigned char *uncoded_keys)
是不是有问题?
源程序:
char M500PcdLoadKeyE2(unsignedchar key_type,
                          unsigned char sector,
                          unsigned char *uncoded_keys)
{
……
status = M500PcdCmd(PCD_WRITEE2,
            MSndBuffer,
            MRcvBuffer,
            &MInfo);
……
}
但是根据rc500资料,LOADKEYE2是从E2PROM读出一个密钥并将其放入内部密钥缓冲区,所以应该是
char M500PcdLoadKeyE2(unsignedchar key_type,
                          unsigned char sector,
                          unsigned char *uncoded_keys)
{
……
status = M500PcdCmd(PCD_READE2,
            MSndBuffer,
            MRcvBuffer,
            &MInfo);
……
}
发信人:qgque 发表时间:2003-04-18 15:05:15
--------------------------------------------------------------------------------
再发一次:
Philips提供的程序中基地址ini有什么作用?怎么确定?
那位发发慈悲告诉我吧!

发信人:qgque 发表时间:2003-04-18 15:07:57
--------------------------------------------------------------------------------
Philips提供的程序中,
void WriteIOBlock(unsignedchar *Addr_data,unsigned short len)
void ReadIOBlock(unsignedchar* Addr_data,unsigned short len)
两个函数根本没有被调用,请问这两个函数到底实现什么功能?可不可以去掉?

发信人:qgque 发表时间:2003-04-18 15:41:27
--------------------------------------------------------------------------------
在Philips提供的文档里面怎么没有有关rc500芯片和Mifare 1卡之间通信命令(如Request、Anticoil、Select等)的具体资料啊?
就是每个指令执行前需要初始化哪些寄存器?执行完毕后可能会产生哪些标志位?现在看Philips提供的程序是被他们牵着鼻子走啊!

发信人:lypd96 发表时间:2003-04-19 08:11:25
--------------------------------------------------------------------------------
发信人:qgque 发表时间:2003-04-19 09:14:36
--------------------------------------------------------------------------------
昨天看了ISO/IEC14443的2、3、4之后,才发现主程序里面的sak、uid等变量的意思,不过选卡之后那部分程序还是没有完全看懂,哈哈,看样子你要明白程序要看不少东西啊

发信人:qgque 发表时间:2003-04-21 13:51:52
--------------------------------------------------------------------------------
帖子发了都没有人回答,诶,我都不想再发了,5555555555555

发信人:jem 发表时间:2003-04-21 15:18:26
--------------------------------------------------------------------------------
各位,如果一段时间没人答复,可以打电话:021-63541088-5973.找Steven.
发信人:StevenCH 发表时间:2003-04-21 15:21:03
--------------------------------------------------------------------------------
发信人:StevenCH 发表时间:2003-04-21 15:24:41
--------------------------------------------------------------------------------
得到sak是可以判断卡片类型,并进行相应的操作。这是应用端的编程要求,所以在demo中并没有。 如果你的系统中有多种类型卡片,你就需要这样做。
最近比较忙,很少来这里,如果有什么问题可以打我电话或mail
021 63541088 ext.5973
steven.j.chang@philips.com
谢谢理解!
发信人:jem 发表时间:2003-04-21 15:35:24
--------------------------------------------------------------------------------
各位,如一段时间没人解答,可以打电话:021-63541088-5973.
也可以发mail:steven.j.chang@philips.com
如不满意他的服务,可以发mail投诉:jem.tao@philips.com
谢谢大家关心Philips的产品.

发信人:jiangbo123 发表时间:2003-04-21 17:00:32
--------------------------------------------------------------------------------
看来是畅先生的上司,哈哈。
发信人:jiangbo123 发表时间:2003-04-21 18:53:00
--------------------------------------------------------------------------------
发信人:jiangbo123 发表时间:2003-04-21 18:53:31
--------------------------------------------------------------------------------
第500个回复帖。呵呵。
发信人:qgque 发表时间:2003-04-22 09:26:38
--------------------------------------------------------------------------------
Philips提供的程序中,
sfr PMR        = 0xC4;  
51系列单片机有这个寄存器吗?
哈哈

发信人:jem 发表时间:2003-04-24 14:16:04
--------------------------------------------------------------------------------
发信人:lidaoke 发表时间:2003-04-24 15:54:50
--------------------------------------------------------------------------------
请问各位大虾, WriteRawIO(Address,value)函数的原型是在哪里定义的?其中是否包含了如何对RC500的寄存器寻址和操作的功能? 谢谢!

发信人:cwcyxy 发表时间:2003-04-24 16:41:23
--------------------------------------------------------------------------------
这是我看到的,但不想回复的原因。

发信人:StevenCH 发表时间:2003-04-24 17:13:08
--------------------------------------------------------------------------------
Jem是我北京同事,管市场和销售,不是我老板啦。大家有商务上的问题可以找他,如果对他的服务有意见,请向我投诉,我会告诉他老板的。呵呵!
最近比较忙,如果有问题,请打我电话,或者发email.
qgque,文档都能下载和打开吧,开发进度如何?
lidaoke,WriteRawIO(Address,value)函数原型在RDIO.H中,宏定义。

发信人:mcugirl 发表时间:2003-04-24 22:54:50
--------------------------------------------------------------------------------
正在做一个非接触式IC卡读卡器的毕业设计,用的是philips公司的MCM200读卡模块。 现在缺少该模块相关控制程序(具体为 request all,halt,read,write,select等这些指令的详细源程序,汇编与C的都可以)的资料,希望能得到高手的帮助。 很急用,谢谢指点。
  如能发资料到我的邮箱更好  snow--0731@sohu.com

发信人:jiangbo123 发表时间:2003-04-25 08:18:21
--------------------------------------------------------------------------------
发信人:StevenCH 发表时间:2003-04-25 10:56:00
--------------------------------------------------------------------------------
你好,我可以发给你MCM200的源程序。但是,希望你改用MF RC500.
请给我发Email(Steven.J.Chang@Philips.com),告知贵公司名称,尊姓大名以及联系方法。

发信人:jiangbo123 发表时间:2003-04-25 13:33:23
--------------------------------------------------------------------------------
我在很多bbs上看到大家讨论RC500芯片似乎没有CM200芯片稳定性好,容易损坏,抗静电能力差,我们公司的rc500产品也出现了使用一段时间之后有莫名其妙坏掉的情况(当然也可能是我设计的问题)。不知道你对这个怎么看,谢谢。

发信人:lidaoke 发表时间:2003-04-25 15:20:35
--------------------------------------------------------------------------------
谢谢cwcyxy 先生的批评。但我觉得您的这种情绪,实在有点和这里的融洽气氛不一致,还望考虑初入门者实际情况,尽量就事论事,以解决问题问主要目的。我觉得StevenCH先生很好,他的做法。

发信人:sayasa 发表时间:2003-04-25 15:32:30
--------------------------------------------------------------------------------
发信人:jiangbo123 发表时间:2003-04-25 15:50:41
--------------------------------------------------------------------------------
有philips给他发工资,我们怎么能跟他比呢。老实说我发了这个帖子之后很多人在qq上和通过email和我讨论问题,但是我发现很多人根本就没有仔细看文档,更没有自己先思考一下,遇到一点问题就来问,甚至在老帖子里一再有人回答的问题他还来问。老大,我们也有工作的,虽然我也尽力的去帮很多朋友解答了问题,同时我也只能跟很多人说对不起了。

发信人:jiangbo123 发表时间:2003-04-25 16:23:12
--------------------------------------------------------------------------------
甚至将自己的某些函数源代码都贴出来了,所以我对lidaoke的说法不敢苟同,而能体会cwcyxy的感受。这个帖子从到现在已经好几个月了,回复的帖子很多,很多问题其实前面已经给出了答案,所以请各位起码应该将这个帖子里面所有的发言仔细看看。如果我有什么不对的地方,欢迎大家指出,谢谢。

发信人:sayasa 发表时间:2003-04-25 17:42:29
--------------------------------------------------------------------------------
以前上来看,没问过问题,是cwcyxy兄热情的给我解答了问题.
我觉的问问题时先搜索一下,看一些基本的资料在问.
支持cwcyxy兄,有人说他,让人心寒!
发信人:StevenCH 发表时间:2003-04-25 17:42:33
--------------------------------------------------------------------------------
真的很感谢Jiangbo,Cwcxxy还有所有提供自己经验和使用Philips产品的同行。我在这里也学到了很多经验。
不过,我希望大家发贴子之前确实先看一下前面的,这样至少可以缩短解决问题的时间。
再次谢谢大家。

发信人:StevenCH 发表时间:2003-04-25 17:46:35
--------------------------------------------------------------------------------
我可以给你提供cm200的源程序,但我推荐你使用RC500.
请给我发EMAIL  Steven.J.Chang@Philips.com
并请注明贵公司名称,项目介绍,尊姓大名,以及联系方法。
谢谢,先

发信人:mcugirl 发表时间:2003-04-26 14:44:25
--------------------------------------------------------------------------------
StevenCH,首先感谢您的帮助。但我现在是做毕业设计,更没有什么公司名,项目名了。也就是说你要的那些我都不能提供,不知道您还可不可以帮助我? 我的邮箱 snow--0731@sohu.com               另外,网上的好多朋友让我用RC500,但是系统所用的芯片早已经由导师定下了,我只是连接一下电路和编点程序而已,但还是要感谢各位,如果各位前辈肯帮忙的话,请把MCM200的资料发给我好吗?只是要芯片控制程序的源代码而已 :)  谢谢大家了。

发信人:lidaoke 发表时间:2003-04-26 15:43:06
--------------------------------------------------------------------------------
    对不起cwcyxy, 我不该发布有损你声誉的言论,望海涵。

发信人:mcugirl 发表时间:2003-04-26 18:00:29
--------------------------------------------------------------------------------
StevenCH,首先感谢您的帮助。但我现在是做毕业设计,更没有什么公司名,项目名了。也就是说你要的那些我都不能提供,不知道您还可不可以帮助我? 我的邮箱 snow--0731@sohu.com               另外,网上的好多朋友让我用RC500,但是系统所用的芯片早已经由导师定下了,我只是连接一下电路和编点程序而已,但还是要感谢各位,如果各位前辈肯帮忙的话,请把MCM200的资料发给我好吗?只是要芯片控制程序的源代码而已 :)  谢谢大家了。
发信人:mcugirl 发表时间:2003-04-27 20:17:25
--------------------------------------------------------------------------------
谢谢您的好心帮忙,但那个邮件我受到了,里面没有附件啊
是不是您发邮件时忘了粘贴附件了 :)
原创粉丝点击