鱼C论坛

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

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

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

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

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

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

  CalulateCRC ( ucComMF522Buf, 2, & ucComMF522Buf [ 2 ] );
 
  cStatus = PcdComMF522 ( PCD_TRANSCEIVE,
                                       ucComMF522Buf,
                                       4, 
                                       ucComMF522Buf,
                                       & ulLen );

  if ( ( cStatus == MI_OK ) && ( ulLen == 0x90 ) )
  {
   for ( uc = 0; uc < 16; uc ++ )
       * ( pData + uc ) = ucComMF522Buf [ uc ];   
  }
  
  else
       cStatus = MI_ERR;   
   
  return cStatus;                
}

想知道小甲鱼最近在做啥?请访问 -> 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-12-22 15:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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