鱼C论坛

 找回密码
 立即注册
查看: 2376|回复: 2

RC522射频识别历程中,进行读操作时,传递的参数中,读出的数据是什么??

[复制链接]
发表于 2020-6-18 02:31:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
基于stm32f103的rc522射频识别,在读函数中,传递的第二个参数uint_t *pDate是什么?if ( ( cStatus == MI_OK ) && ( ulLen == 0x90 ) )是什么意思啊
  1. /**
  2.   * @brief  读取M1卡一块数据
  3.   * @param  ucAddr,块地址
  4.   * @param  pData,读出的数据,16字节
  5.   * @retval 状态值= MI_OK,成功
  6.   */
  7. char PcdRead ( uint8_t ucAddr, uint8_t * pData )
  8. {
  9.   char cStatus;
  10.   uint8_t uc, ucComMF522Buf [ MAXRLEN ];
  11.   uint32_t ulLen;
  12.   
  13.   ucComMF522Buf [ 0 ] = PICC_READ;
  14.   ucComMF522Buf [ 1 ] = ucAddr;

  15.   CalulateCRC ( ucComMF522Buf, 2, & ucComMF522Buf [ 2 ] );

  16.   cStatus = PcdComMF522 ( PCD_TRANSCEIVE,
  17.                                        ucComMF522Buf,
  18.                                        4,
  19.                                        ucComMF522Buf,
  20.                                        & ulLen );

  21.   if ( ( cStatus == MI_OK ) && ( ulLen == 0x90 ) )
  22.   {
  23.    for ( uc = 0; uc < 16; uc ++ )
  24.        * ( pData + uc ) = ucComMF522Buf [ uc ];   
  25.   }
  26.   
  27.   else
  28.        cStatus = MI_ERR;   
  29.    
  30.   return cStatus;               
  31. }
复制代码


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-1 21:18:09 | 显示全部楼层
90是2进制的10010000,转10进制是144,除8是18个字节,正好是16个字节的信息和两个字节的crc冗余校验位。判断 ( cStatus == MI_OK )是判断cStatus = PcdComMF522 (。。。)的返回值,这个函数我理解为通讯协议函数,很多读卡写卡啥的子函数里,只要涉及pcb和picc的通信,都要调用。自己胡拽的,不喜勿喷
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-23 17:06:33 | 显示全部楼层
第二个参数uint_t *pDate是读取的数据存放的数组首地址,自己定义的

if ( ( cStatus == MI_OK ) && ( ulLen == 0x90 ) )  
cStatus == MI_OK 表示返回读取的状态,=0正确,否侧错误
ulLen == 0x90  是指返回数据的位长度
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-27 05:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表