esccfl 发表于 2020-6-18 02:31:42

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

基于stm32f103的rc522射频识别,在读函数中,传递的第二个参数uint_t *pDate是什么?if ( ( cStatus == MI_OK ) && ( ulLen == 0x90 ) )是什么意思啊/**
* @brief读取M1卡一块数据
* @paramucAddr,块地址
* @parampData,读出的数据,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;               
}


一堆废铁 发表于 2020-7-1 21:18:09

90是2进制的10010000,转10进制是144,除8是18个字节,正好是16个字节的信息和两个字节的crc冗余校验位。判断 ( cStatus == MI_OK )是判断cStatus = PcdComMF522 (。。。)的返回值,这个函数我理解为通讯协议函数,很多读卡写卡啥的子函数里,只要涉及pcb和picc的通信,都要调用。自己胡拽的,不喜勿喷

ly216 发表于 2020-9-23 17:06:33

第二个参数uint_t *pDate是读取的数据存放的数组首地址,自己定义的

if ( ( cStatus == MI_OK ) && ( ulLen == 0x90 ) )
cStatus == MI_OK 表示返回读取的状态,=0正确,否侧错误
ulLen == 0x90是指返回数据的位长度
页: [1]
查看完整版本: RC522射频识别历程中,进行读操作时,传递的参数中,读出的数据是什么??