📄 untitled document.htm
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0064)http://www.flyring.com.cn/chinese/UploadFiles/20044216136383.htm -->
<HTML><HEAD><TITLE>Untitled Document</TITLE>
<META content="text/html; charset=gb2312" http-equiv=Content-Type>
<META content="MSHTML 5.00.2920.0" name=GENERATOR></HEAD>
<BODY background="" bgColor=#ffffff text=#000000>
<DIV align=center>
<P><BR><BR><FONT color=#0000ff><BR><B>关于非接触式IC智能(射频)卡及其读写设备内核技术的研究与应用开发(连载4)
</B></FONT></P>
<P><FONT color=#0000ff>作者: 上海华东磁记录电子公司 张敏 <BR></FONT></P>
<TABLE border=1 borderColor=#ff6600 height=350 width="80%">
<TBODY>
<TR>
<TD>
<DIV align=center><BR><BR> 在上述表中,仅当DV(Data Valid数据有效)位被设置有效时(即DV=”1”)
,TE,PE,CE,BE及AE标志才有效。但有一例外,即
当认证(Authentication)正确完成后,AE标志也直接有效。<BR> SOR是Software
Reset(软件复位)的缩写。当执行SOR后,所有的这些标志将被清除,且当对MCM的任何一个寄存器执行写周期时,所有的这些标志也将被清除。详见SOR后的复位表。<BR> 当对MCM内的任何一个寄存器执行写周期时,所有的这些标志也将被清除;仅当FIFO是空时,DV标志将被写周期清除。<BR>有时侯MCM接收少于8
bits(例如 在接收ACK 或NACK时)时,MCM将不影响PE, CE, 及AE标志。<BR> 在MCU与MCM, MCM与Mifare
1卡片进行数据通信时,经常会出现各种错误。例如,卡片没能认证(Authentication) 通过,
则会使AE出错位置位,等等。<BR> 以下是在检查DV位之后,相关的出错情况,列为下表: <IMG height=294 src=""
width=550></DIV>
<P><BR> 注意,送到卡片上的所有的命令和数据都提供奇/偶校验(parity) 和CRC 检查(
但“REQUEST”命令操作除外)。这是由卡片上的ASIC负责检查。</P>
<P align=center>3、ENABLE 寄存器,地址:02H<BR> ENABLE 寄存器的设置将影响卡片在通信时对 parity
和CRC 的校验。在ENABLE寄存器中有针对 parity 和CRC 校验的复位允许位(reset ENABLE bits)。<IMG
height=238 src="" width=572></P>
<P></P>
<P> 在对MCM进行编程的开始时,必须对ENABLE寄存器进行写操作,即必须将CE位关闭。仅当执行”Select”命令操作时才打开CE位:<BR>由于MCM在电源接通时或在任何数据通信开始时,都会复位parity
和CRC块,因此无须额外地去执行这一操作。</P>
<P>4.BCNTS 寄存器,地址: 03H</P>
<P align=center><IMG height=61 src="" width=552></P>
<P></P>
<P> BCNTS是英文Bit-Counter-for-Sending的缩写,意为传送时的位计数器(寄存器)。
这里的传送指的是CPU向MCM的DATA寄存器写数据。因此BCNTS寄存器实际上是一个字节发送控制器,它控制了MCU向DATA寄存器中写进的数据字节数目。<BR> 例如,设置BCTRS=10H,则可向MCM的DATA寄存器写进的数据字节数目为2个(8位字长的数据,因为总的bit数目=10H=16D),多余的数据,MCM将不予接收。<BR> 由于BCNTS寄存器是控制向DATA寄存器写数据的字节数目,因此这一操作必须在数据写入DATA寄存器之前完成。使用2进制代码来操作。<BR> 在大量的字节数据被写入DATA寄存器之后,MCM自动地与卡片进行通信。写入DATA寄存器的bits数量由BCNTS寄存器制定,保持。</P>
<P>5。BCNTR寄存器, 04H</P>
<P align=center><IMG height=59 src=""
width=547><BR> BCNTR是英文Bit-Counter-for-Receiving的缩写,意为接收时的位计数器(寄存器)。</P>
<P></P>
<P> 与BCNTS寄存器相反,
BCNTR寄存器控制了MCU读取DATA寄存器的数据字节数目<BR> 例如,设置BCNTR=20H,则可向MCM的DATA寄存器读取的数据字节数目为4个(8位字长的数据,因为总的bit数目=20H=32D),多余的数据,MCM将不予理会。<BR> 由于BCNTR寄存器是控制向DATA寄存器读取数据的字节数目,因此这一操作必须在读DATA寄存器之前完成。使用2进制代码来操作。<BR>BCNTR寄存器中的值将与实际接收到的数据字节相比较,如果有差别,则STACON寄存器中的BE标志被设置。</P>
<P>6。BAUDRATE 寄存器, 地址: 05H</P>
<P align=center><IMG height=57 src=""
width=547><BR> BAUDRATE 意为数据传输到卡片上或卡片上的数据传到MCM时通信的位速率。虽然BAUDRATE
寄存器的后四位相关与指定的位速率,但是实际有用于MIFARE 1卡的只是最后一位。</P>
<P><BR> BAUDRATE 寄存器的设置将直接影响着MCM与Mifare
1卡片之间的数据通信速率。<BR> MCM中有一个时钟发生器。写数据至BAUDRATE 寄存器,可以控制 时钟发生器(CLOCK
GENERATOR)。以下是位速率的计算公式:</P>
<P></P>
<P>7。TOC 寄存器, 地址: 06H</P>
<P align=center><BR> TOC是Time Out Counter ((定)时间溢出记数器 )
的缩写。<BR>Zhang28<BR> TOC 寄存器中的值 (非零值) 将在
没有通信时,永久地被递减。因此,在没有通信时,或通信刚结束时,TOC 寄存器中的值必须被设置,即设置TOC = 0x00H. 例如:
在FIFO中的数据有效时,就必须这样做。否则将影响STACON寄存器的TE出错标志。<BR> 如果有溢出出现,则TE标志被设置,DV标志被激活。<BR> 在完成写数据到DATA寄存器,定时溢出记数器
应该经常被初始化。但有个例外,即 在认证操作(AUTHENCATION)的开始时段,定时溢出记数器 应该在存取“KEYSTACON”
和“KEYADDR”寄存器 之后,在存取DATA寄存器之前
被初始化。<BR> 一般地在读取(Read)和保存(save)了STACON寄存器中的数据之后 定时溢出记数器必须被关闭。</P>
<P>8.MODE寄存器, 地址: 07H</P>
<P align=center><IMG height=158 src="" width=526><BR> MODE
意为在与卡片数据相互往来时的数据编码模式 (MODE of DATA
coding)。MODE寄存器的设置控制了MCM在与卡片数据相互通信时的数据编码模式.<BR> MODE寄存器的每一位都与数据通信模式有关,但在使用MIFARE
1卡时,只有最后3 位(BITS)最为关联。</P>
<P></P>
<P> MODE 寄存器 中的P2 ,P1 ,及P0位决定了在NPAUSE0 和NPAUSE1引脚上的各自的脉冲宽度。脉冲宽度的可变范围在 2 ~
3 us 之间。<BR> 在使用MIFARE卡时,P2 ,P1 ,及P0位应被设置为 111 b 或110 b。
<BR> 这里必须提醒读者注意的是,当我们使用CM200(Philiphs产品)时与使用SB201(UniVision Engineering
Limited联视工程有限公司的产品)时,MODE 寄存器的设置值将不一样。 <BR> 使用CM200(Philiphs产品)时, MODE
寄存器的设置值应为: “1100 0110b”,即C6H,但在使用SB201(UniVision Engineering
Limited联视工程有限公司的产品)时, MODE 寄存器的设置值应为: “1101
0110b”,即D6H。这是两个产品唯一存在的硬件上的不兼容,导致软件的设置值不同。
否则由于数据通信时的数据编码模式不相同,MCM将不能正常工作,不能读/写Mifare 1卡片。在实际应用中已有此经验教训。</P>
<P>9. CRCDATA 寄存器, 地址: 08H<BR> 被计算CRC的数据必须被写入CRCDATA寄存器中。
计算后的CRC必须从CRCDATA 寄存器中读出。</P>
<P></P>
<P> 在写入一个BYTE(字节)到CRCDATA
寄存器后,计算将开始。计算完成后,STACON寄存器的CV标志被设置。当我们要写下一个字节到CRCDATA
寄存器之前,或在读取CRCDATA寄存器以得到CRC之前,或在检查CZ标志之前,都必须先读取CV标志,检查CV标志。(待续)<BR><BR><BR>来源:
《金卡工程》2000.5 <BR><BR></P></TD></TR></TBODY></TABLE><BR></DIV></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -