当前位置:   article > 正文

【IoT】NFC 之 RC522 通信协议包_rc522通信协议

rc522通信协议

1、通讯格式

数据包长度 L(1byte) + 命令字 C(1byte) + 数据包 D(L-1bytes)

2、通讯方向

->  下位机送给上位机
<-  上位机送给下位机

3、扇区划分

  1. 扇区0    块0  块1  块2  块3
  2. 扇区1    块4  块5  块6  块7
  3. 扇区2    块8  块9  块1011
  4. 扇区3    块12131415
  5. 扇区4    块16171819
  6. 扇区5    块20212223
  7. 扇区6    块24252627
  8. 扇区7    块28293031
  9. 扇区8    块32333435
  10. 扇区9    块36373839
  11. 扇区10   块40414243
  12. 扇区11   块44454647
  13. 扇区12   块48495051
  14. 扇区13   块52535455
  15. 扇区14   块56575859
  16. 扇区15   块60616263

4、IC 卡读写器数据包

1) 寻卡

  1.  <-  02 02 26    ( 02 为命令字,26 为 RegMfOutSelect )
  2.    ->  03 00 04 00 ( 00 为命令成功代码,04 表示 Mifare One 卡 )
  3.    <-  02 0B 0F
  4.    ->  01 00

2) 防冲突

  1.  <-  01 03             ( 03 为命令字 )
  2.    ->  05 00 52 00 75 7A ( 52 00 75 7A 为卡号 CardSerialNo )
  3.    <-  02 0B 0F
  4.    ->  01 00

3) 选择

  1.  <-  01 04             ( 04 为命令字)
  2.    ->  03 00 80 00
  3.    <-  02 0B 0F
  4.    ->  01 00

4) 终止

  1.  <-  01 01             ( 01 为命令字)
  2.    ->  01 00
  3.    <-  02 0B 0F
  4.    ->  01 00

5) 参数设置

  1.    <-  01 0C             ( 0C 为命令字 )
  2.    ->  01 00

6) 密码下载 ( 扇区 1 密码为 12 个 F )

  1.  <-  09 06 60 01 FF FF FF FF FF FF (06为命令字,60为PICC_AUTHENT1A(61为PICC_AUTHENT1B),01为扇区号,12个F为密码)
  2.    ->  01 00
  3.    <-  02 0B 0F
  4.    ->  01 00

7) 数据读(扇区1块0块1块2)

  1.  <-  02 02 52          ( 02 为命令字,52 为 PICC_REQALL )
  2.    ->  03 00 04 00       ( 04 为 RegFIFOLength )
  3.    <-  01 03             ( 03 为命令字 )
  4.    ->  05 00 52 00 75 7A ( 52 00 75 7A 为卡号 )
  5.    <-  01 04             ( 04 为命令字 )
  6.    ->  03 00 08 00 
  7.    <-  04 05 60 01 04 (05为命令字,60为PICC_AUTHENT1A(61为PICC_AUTHENT1B),01为扇区1,04为RegFIFOLength)
  8.    ->  01 00
  9.    <-  02 08 04          ( 08 为命令号, 04 为块号 )
  10.    ->  11 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 (1600为数据)
  11.    <-  02 08 05          ( 08为命令号, 05 为块号 )
  12.    ->  11 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 (1600为数据)
  13.    <-  02 08 06          ( 08 为命令号, 06 为块号 )
  14.    ->  11 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 (1600为数据)
  15.    <-  02 08 07          ( 08 为命令号, 07 为块号 )
  16.    ->  11 00 00 00 00 00 00 00 ff 07 80 69 ff ff ff ff ff ff (第一个00为返回代码,后面600为密码A,ff 07 80 69为控制位,后面6个ff为密码B)
  17.    <-  02 0B 0F
  18.    ->  01 00

8) 数据写(扇区1块0块1块2)

  1.  <-  12 09 04 12 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ( 09 为命令字, 04 为块号, 12 开始的 16 个字节为要写的数据 )
  2.    ->  01 00
  3.    <-  02 0B 0F
  4.    ->  01 00
  5.    <-  12 09 05 45 60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ( 09 为命令字, 05 为块号, 45 开始的 16 个字节为要写的数据 )
  6.    ->  01 00
  7.    <-  02 0B 0F
  8.    ->  01 00
  9.    <-  12 09 06 78 90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ( 09 为命令字, 06 为块号, 78 开始的 16 个字节为要写的数据 )
  10.    ->  01 00
  11.    <-  02 0B 0F
  12.    ->  01 00
  13.    <-  12 09 07 11 11 11 11 11 11 ff 07 80 69 11 11 11 11 11 11 ( 09 为命令字, 07 为块号, 把密码 A 和密码 B 都修改成 1 )
  14.    ->  01 00
  15.    <-  02 0B 0F
  16.    ->  01 00

9) 块值操作 ( 初始化 )

  1.    <-  12 09 04 11 11 11 11 EE EE EE EE 11 11 11 11 04 FB 04 FB ( 09 为命令字, 04 为块号, 11 开始的 16 个字节为要写的数据 )
  2.    ->  01 00
  3.    <-  02 0B 0F
  4.    ->  01 00

10) 块值操作 ( 读出 )

  1.    <-  02 08 04 ( 08 为命令字, 04 为块号 )
  2.    ->  11 00 11 11 11 11 EE EE EE EE 11 11 11 11 04 FB 04 FB ( 11 后面的 16 个自己是读出来的数据 )
  3.    <-  02 0B 0F
  4.    ->  01 00

11) 块值操作 ( 加值 )

  1.  <-  08 0A C1 04 22 22 22 22 04 ( 0A 为命令字, C1 为 PICC_INCREMENT, 04 为块号, 4 个字节的 22 是要加值的数据, 04 为块号 )
  2.    ->  01 00
  3.    <-  02 0B 0F
  4.    ->  01 00
  5.    

12) 块值操作 ( 减值 )

  1.  <-  08 0A C0 04 11 11 11 11 04 ( 0A 为命令字, C1 为 PICC_DECREMENT 为块号, 4 个字节的 11 是要减值的数据, 04 为块号 )
  2.    ->  01 00 
  3.    <-  02 0B 0F
  4.    ->  01 00

13) 修改密码

  1.  <-  02 02 26 ( 02 为命令字, 26 为 RegMfOutSelect )
  2.    ->  03 00 04 00 
  3.    <-  01 03    ( 03 为命令字 )
  4.    ->  05 00 52 00 75 7A (52 00 75 7A为卡号)
  5.    <-  01 04    ( 04 为命令字 )
  6.    ->  03 00 80 00 
  7.    <-  04 05 60 01 04 ( 05 为命令字, 60 为 PICC_AUTHENT1A (61为PICC_AUTHENT1B), 01 为扇区号,04 为 RegFIFOLength )
  8.    ->  01 00
  9.    <-  12 09 07 33 33 33 33 33 33 ff 07 80 69 33 33 33 33 33 33 ( 09 为命令字, 07 为块号, 33 后面的 12 个字节为新密码 )
  10.    ->  01 00
  11.    <-  02 0B 0F
  12.    ->  01 00

  

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/67799
推荐阅读
相关标签
  

闽ICP备14008679号