完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
使用ST25R3912/3911 读写ISO15693卡片扇区的报错,卡片ID可以正常读出
以下是串口打印的内容: 错误ID为21(ERR_CRC CRC错误) ISO15693/NFC-V card found. UID: E007A40003BCD511Read Block: FAIL Data: C4A5DC68err = 21下面是移植的例程 bool demoPollNFCV( void ){ ReturnCode err; rfalNfcvListenDevice nfcvDev; bool found = false; uint8_t devCnt = 0; uint8_t devUID[RFAL_NFCV_UID_LEN]; uint16_t rcvLen; uint8_t blockNum = 1; uint8_t rxBuf[ 1 + DEMO_NFCV_BLOCK_LEN + RFAL_CRC_LEN ]; /* Flags + Block Data + CRC */ uint8_t wrData[DEMO_NFCV_BLOCK_LEN] = { 0x11, 0x22, 0x33, 0x99 }; /* Write block example */ uint8_t reqFlag; /*******************************************************************************/ /* ISO15693/NFC_V_PASSIVE_POLL_MODE */ /*******************************************************************************/ rfalNfcvPollerInitialize(); /* Initialize for NFC-V */ rfalFieldOnAndStartGT(); /* Turns the Field On if not already and start GT timer */ err = rfalNfcvPollerCollisionResolution(1, nfcvDev, devCnt); if( (err == ERR_NONE) (devCnt > 0) ) { /******************************************************/ /* NFC-V card found */ /* NFCID/UID is contained in: invRes.UID */ ST_MEMCPY(devUID, nfcvDev.InvRes.UID, RFAL_NFCV_UID_LEN); /* Copy the UID into local var */ REVERSE_BYTES(devUID, RFAL_NFCV_UID_LEN); /* Reverse the UID for display purposes */ found = true; printf("ISO15693/NFC-V card found. UID: %srn", hex2Str(devUID, RFAL_NFCV_UID_LEN));#if 1 /*寻址模式 *///RFAL_NFCV_REQ_FLAG_DEFAULT err = rfalNfcvPollerReadSingleBlock((RFAL_NFCV_REQ_FLAG_DEFAULT | RFAL_NFCV_REQ_FLAG_SELECT), nfcvDev.InvRes.UID, blockNum, rxBuf, sizeof(rxBuf), rcvLen); // printf(" Read Block: %s Data: %s rn", (err != ERR_NONE) ? "FAIL": "OK", (err != ERR_NONE) ? "" : hex2Str( rxBuf[1], DEMO_NFCV_BLOCK_LEN) ); printf(" Read Block: %s Data: %s rn", (err != ERR_NONE) ? "FAIL": "OK", hex2Str( rxBuf[1], DEMO_NFCV_BLOCK_LEN) ); #if 0 /* 写*/ err = rfalNfcvPollerWriteSingleBlock(RFAL_NFCV_REQ_FLAG_DEFAULT, nfcvDev.InvRes.UID, blockNum, wrData, sizeof(wrData)); platformLog(" Write Block: %s Data: %srn", (err != ERR_NONE) ? "FAIL": "OK", hex2Str( wrData, DEMO_NFCV_BLOCK_LEN) ); err = rfalNfcvPollerReadSingleBlock(RFAL_NFCV_REQ_FLAG_DEFAULT, nfcvDev.InvRes.UID, blockNum, rxBuf, sizeof(rxBuf), rcvLen); platformLog(" Read Block: %s Data: %srn", (err != ERR_NONE) ? "FAIL": "OK", (err != ERR_NONE) ? "" : hex2Str( rxBuf[1], DEMO_NFCV_BLOCK_LEN) ); #endif#else /* Using Select mode */ printf("rfalNfcvPollerSelectrn"); reqFlag = RFAL_NFCV_REQ_FLAG_DEFAULT; err = rfalNfcvPollerSelect( reqFlag, nfcvDev.InvRes.UID); printf(" Select %s rn", (err != ERR_NONE) ? "FAIL (revert to addressed mode)": "OK" ); if( err == ERR_NONE ) { reqFlag = (RFAL_NFCV_REQ_FLAG_DEFAULT | RFAL_NFCV_REQ_FLAG_SELECT); } err = rfalNfcvPollerReadSingleBlock(RFAL_NFCV_REQ_FLAG_DEFAULT, nfcvDev.InvRes.UID, blockNum, rxBuf, sizeof(rxBuf), rcvLen); printf(" Read Block: %s Data: %srn", (err != ERR_NONE) ? "FAIL": "OK", hex2Str( rxBuf[0], rcvLen) ); if(err != ERR_NONE) printf("err = %drn",err); #if 0 /* Writing example */ err = rfalNfcvPollerWriteSingleBlock(RFAL_NFCV_REQ_FLAG_DEFAULT, NULL, blockNum, wrData, sizeof(wrData)); platformLog(" Write Block: %s Data: %srn", (err != ERR_NONE) ? "FAIL": "OK", hex2Str( wrData, DEMO_NFCV_BLOCK_LEN) ); err = rfalNfcvPollerReadSingleBlock(RFAL_NFCV_REQ_FLAG_DEFAULT, NULL, blockNum, rxBuf, sizeof(rxBuf), rcvLen); platformLog(" Read Block: %s Data: %srn", (err != ERR_NONE) ? "FAIL": "OK", (err != ERR_NONE) ? "" : hex2Str( rxBuf[1], DEMO_NFCV_BLOCK_LEN) ); #endif#endif } return found;} |
|
相关推荐
1个回答
|
|
从错误信息来看,报错原因是CRC错误。ISO15693标准的读写操作中,读取数据时需要通过CRC校验来确保数据的完整性,如果CRC校验失败,则会报错。这通常是由于通信过程中发生了一些错误导致的,比如传输过程中发生了干扰、噪声等。
在你的移植例程中,可能存在以下一些可能导致CRC错误的问题: 1. 通信距离过远:ISO15693标准的读写距离一般为10cm,如果距离过远,信号衰减可能会导致通信错误。尝试将读写设备靠近ISO15693卡片。 2. 通信速率不匹配:ISO15693卡片和读写设备之间的通信速率需要相匹配,检查你的读写器设备和ISO15693卡片的通信速率设置是否一致。 3. 通信设置错误:检查你的读写器设备与ISO15693卡片之间的通信参数设置是否正确,包括波特率、帧格式等。 4. 设备硬件问题:可能是你的读写器设备或ISO15693卡片本身存在硬件故障或损坏导致通信错误。 通过检查以上可能的问题,你可以找到导致CRC错误的具体原因,并进行相应的修复和调整。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
879 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
686 浏览 1 评论
419 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
331 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
743 浏览 2 评论
1476浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
148浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
190浏览 3评论
166浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
169浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-7-1 12:04 , Processed in 0.809822 second(s), Total 80, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号