FM1702.h
上传用户:guangya188
上传日期:2019-10-26
资源大小:4644k
文件大小:6k
源码类别:

RFID编程

开发平台:

C/C++

  1. /****************************************************************************
  2. * File :  fm1702.h                                                          *
  3. * COPYRIGHT BY HUOYAN LTD.COMPANY                                           *
  4. * Version:      V1.3                                           *
  5. *                                                                           *
  6. * Created:      18.10.2005                                                  *
  7. * Last Change:  21.10.2005                                                  *
  8. *                                                                           *
  9. * Author:       mark                                                        *
  10. *                                                                           *
  11. * Compiler:     KEIL C51 V7.10                                              *
  12. *                                                                           *
  13. * Description:  AT89S52-Firmware for FM1702 Demo Serial Reader              *
  14. *                                                                           *
  15. ****************************************************************************/
  16. #ifndef FM1702_H
  17. #define FM1702_H
  18. /* FM1702命令码 */
  19. #define Transceive 0x1E /* 发送接收命令 */
  20. #define Transmit 0x1a /* 发送命令 */
  21. #define ReadE2 0x03 /* 读FM1702 EEPROM命令 */
  22. #define WriteE2 0x01 /* 写FM1702 EEPROM命令 */
  23. #define Authent1 0x0c /* 验证命令认证过程第1步 */
  24. #define Authent2 0x14 /* 验证命令认证过程第2步 */
  25. #define LoadKeyE2 0x0b /* 将密钥从EEPROM复制到KEY缓存 */
  26. #define LoadKey 0x19 /* 将密钥从FIFO缓存复制到KEY缓存 */
  27. #define RF_TimeOut 0xff /* 发送命令延时时间 */
  28. #define Req 0x01
  29. #define Sel 0x02
  30. /* 卡片类型定义定义 */
  31. #define TYPEA_MODE 0 /* TypeA模式 */
  32. //#define SHANGHAI_MODE 2 /* 上海模式 */
  33. #define TM0_HIGH 0xf0 /* 定时器0高位,4MS定时 */
  34. #define TM0_LOW 0x60 /* 定时器0低位 */
  35. #define TIMEOUT 100 /* 超时计数器4MS×100=0.4秒 */
  36. /* 射频卡通信命令码定义 */
  37. #define RF_CMD_REQUEST_STD 0x26
  38. #define RF_CMD_REQUEST_ALL 0x52
  39. #define RF_CMD_ANTICOL 0x93
  40. #define RF_CMD_SELECT 0x93
  41. #define RF_CMD_AUTH_LA 0x60
  42. #define RF_CMD_AUTH_LB 0x61
  43. #define RF_CMD_READ     0x30
  44. #define RF_CMD_WRITE 0xa0
  45. #define RF_CMD_INC     0xc1
  46. #define RF_CMD_DEC     0xc0
  47. #define RF_CMD_RESTORE 0xc2
  48. #define RF_CMD_TRANSFER 0xb0
  49. #define RF_CMD_HALT     0x50
  50. /* 函数错误代码定义 ERR CODE  */
  51. #define FM1702_OK 0 /* 正确 */
  52. #define FM1702_NOTAGERR 1 /* 无卡 */
  53. #define FM1702_CRCERR 2 /* 卡片CRC校验错误 */
  54. #define FM1702_EMPTY 3 /* 数值溢出错误 */
  55. #define FM1702_AUTHERR 4 /* 验证不成功 */
  56. #define FM1702_PARITYERR 5 /* 卡片奇偶校验错误 */
  57. #define FM1702_CODEERR 6 /* 通讯错误(BCC校验错) */
  58. #define FM1702_SERNRERR 8 /* 卡片序列号错误(anti-collision 错误) */
  59. #define FM1702_SELECTERR 9 /* 卡片数据长度字节错误(SELECT错误) */
  60. #define FM1702_NOTAUTHERR 10 /* 卡片没有通过验证 */
  61. #define FM1702_BITCOUNTERR 11 /* 从卡片接收到的位数错误 */
  62. #define FM1702_BYTECOUNTERR 12 /* 从卡片接收到的字节数错误仅读函数有效 */
  63. #define FM1702_RESTERR 13 /* 调用restore函数出错 */
  64. #define FM1702_TRANSERR 14 /* 调用transfer函数出错 */
  65. #define FM1702_WRITEERR 15 /* 调用write函数出错 */
  66. #define FM1702_INCRERR 16 /* 调用increment函数出错 */
  67. #define FM1702_DECRERR 17 /* 调用decrement函数出错 */
  68. #define FM1702_READERR 18 /* 调用read函数出错 */
  69. #define FM1702_LOADKEYERR 19 /* 调用LOADKEY函数出错 */
  70. #define FM1702_FRAMINGERR 20 /* FM1702帧错误 */
  71. #define FM1702_REQERR 21 /* 调用req函数出错 */
  72. #define FM1702_SELERR 22 /* 调用sel函数出错 */
  73. #define FM1702_ANTICOLLERR 23 /* 调用anticoll函数出错 */
  74. #define FM1702_INTIVALERR 24 /* 调用初始化函数出错 */
  75. #define FM1702_READVALERR 25 /* 调用高级读块值函数出错 */
  76. #define FM1702_DESELECTERR 26
  77. #define FM1702_CMD_ERR 42 /* 命令错误 */
  78. /* FM1702寄存器定义 */
  79. #define Page_Sel 0x00 /* 页写寄存器 */
  80. #define Command 0x01 /* 命令寄存器 */
  81. #define FIFO 0x02 /* 64字节FIFO缓冲的输入输出寄存器 */
  82. #define PrimaryStatus 0x03 /* 发射器接收器及FIFO的状态寄存器1 */
  83. #define FIFO_Length 0x04 /* 当前FIFO内字节数寄存器 */
  84. #define SecondaryStatus 0x05 /* 各种状态寄存器2 */
  85. #define InterruptEn 0x06 /* 中断使能/禁止寄存器 */
  86. #define Int_Req 0x07 /* 中断请求标识寄存器 */
  87. #define Control 0x09 /* 控制寄存器 */
  88. #define ErrorFlag 0x0A /* 错误状态寄存器 */
  89. #define CollPos 0x0B /* 冲突检测寄存器 */
  90. #define TimerValue 0x0c /* 定时器当前值 */
  91. #define Bit_Frame 0x0F /* 位帧调整寄存器 */
  92. #define TxControl 0x11 /* 发送控制寄存器 */
  93. #define CWConductance 0x12 /* 选择发射脚TX1和TX2发射天线的阻抗 */
  94. #define ModConductance 0x13 /* 定义输出驱动阻抗 */
  95. #define CoderControl 0x14 /* 定义编码模式和时钟频率 */
  96. #define DecoderControl 0x1a /* 解码控制寄存器 */
  97. #define RxControl1 0x19 /*接收增益控制*/
  98. #define RxControl2 0x1e /* 解码控制及选择接收源 */
  99. #define RxWait 0x21 /* 选择发射和接收之间的时间间隔 */
  100. #define ChannelRedundancy 0x22 /* RF通道检验模式设置寄存器 */
  101. #define CRCPresetLSB 0x23
  102. #define CRCPresetMSB 0x24
  103. #define MFOUTSelect 0x26 /* mf OUT 选择配置寄存器 */
  104. #define TimerClock 0x2a /* 定时器周期设置寄存器 */
  105. #define TimerControl 0x2b /* 定时器控制寄存器 */
  106. #define TimerReload 0x2c /* 定时器初值寄存器 */
  107. #define TypeSH 0x31 /* 上海标准选择寄存器 */
  108. #define TestDigiSelect 0x3d /* 测试管脚配置寄存器 */
  109. /* Status Values */
  110. #define ALL 0x01
  111. #define KEYB 0x04
  112. #define KEYA 0x00
  113. #define _AB 0x40
  114. #define CRC_A 1
  115. #define CRC_B 2
  116. #define CRC_OK 0
  117. #define CRC_ERR 1
  118. #define BCC_OK 0
  119. #define BCC_ERR 1
  120. /* 卡类型定义 */
  121. //#define MIFARE_8K 0 /* MIFARE系列8KB卡片 */
  122. #define MIFARE_TOKEN 1 /* MIFARE系列1KB TOKEN卡片 */
  123. //#define SHANGHAI_8K 2 /* 上海标准系列8KB卡片 */
  124. #define SHANGHAI_TOKEN 3 /* 上海标准系列1KB TOKEN卡片 */
  125. #define mifare1 1
  126. #define mifarepro 2
  127. #define mifarelight 3
  128. #define unknowncard     4
  129. #endif
  130. //////////////////////////////////////////////////////////////////////////////
  131. // End of File
  132. //////////////////////////////////////////////////////////////////////////////