完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
我正在使用 NFC05A1 和 STMF4xx-Nucle-Polling 项目。
我想与 Mifare 经典卡 1K 进行交互。 我知道 Stm 不会提供任何处理加密的代码,这不是我要的。 我遇到的问题是关于 SELECT 之后的第一步:这是一条明文消息,从 30 开始,然后是扇区号。我期望的是用随机数回答的卡片。 我遇到的问题是我收到“框架问题”或“超时”错误消息。 这是前四个请求,我认为它们工作正常,第五个请求则没有。 * 请求 1: 对rfalISO14443ATransceiveShortFrame的回答 (使用 RFAL_14443A_SHORTFRAME_CMD_REQA 作为命令)是:04 00。 *请求 2: 然后这次有另一个r falISO14443ATransceiveShortFrame 指令和RFAL_14443A_SHORTFRAME_CMD_WUPA *请求 3: 然后设置 rfalNfcaSelReq 结构: selReq (rfalNfcaSelReq 结构体) selReq.selCmd = 93 selReq.selPar =20 rfalNfcaTxRetry( ret, rfalISO14443ATransceiveAnticollisionFrame ( (uint8_t*)&selReq, &bytesTxRx, &bitsTxRx, &bytesRx, RFAL_NFCA_FDTMIN ), ((devLimit==0)?RFAL_NFCA_N_RETRANS:0), RFAL_NFCA_T_RETRANS ); 请求答案:请求结果包括 卡 Uid D0 74 CC A4,(正确的 uid) 和密件抄送 *请求 4: 然后另一个请求是 SELECT。 selReq.selCmd =93; selReq.selPar= 70; selReq.nfcid1[0]= D0 selReq.nfcid1[1]=74; selReq.nfcid1[2]=抄送; selReq.nfcid1[3]=A4; selReq.bcc=抄送; rfalNfcaTxRetry( ret, rfalTransceiveBlockingTxRx ( (uint8_t*)&selReq, sizeof(rfalNfcaSelReq), (uint8_t*)selRes, sizeof(rfalNfcaSelRes), &bytesRx, RFAL_TXRX_FLAGS_DEFAULT, RFAL_NFCA_FDTMIN ), ((devLimit==0)?RFAL_NFCA_N_RETRANS:0), RFAL_NFCA_T_RETRANS ) ; 其结果可以在 selRes 中找到: 萨克:08 到目前为止,该设备是一个 Mifare Classic (sak 08) ,这个设备是 device[0] 并且它的 uid 是已知的。 *请求 5:这是有问题的地方。 要求卡访问扇区 00。 正如迈克尔罗兰先生在这篇文章中所建议的那样: https://stackoverflow.com/questions/56334836/is-there-any-function-for-reading-nfc-a-iso14443a-tag-with-x-nucleo-nfc05a1 lenTx = 0; bufferTx[lenTx++] = 0x30; bufferTx[lenTx++] = 0x00; // 扇区 lenRxMax = 16; lenRx = 0; status = rfalTransceiveBlockingTxRx (&bufferTx[0], lenTx, &bufferRx[0], lenRxMax, &lenRx, RFAL_TXRX_FLAGS_DEFAULT, rfalConvMsTo1fc(5)); 回答 状态值:9 另一种尝试使用不同的标志。 status = rfalTransceiveBlockingTxRx (&bufferTx[0], lenTx, &bufferRx[0], lenRxMax, &lenRx, RFAL_TXRX_FLAGS_CRC_TX_AUTO | RFAL_TXRX_FLAGS_CRC_RX_REMV | RFAL_TXRX_FLAGS_NFCIP1_OFF | RFAL_TXRX_FLAGS_AGC_ON | RFAL_TXRX_FLAGS_PAR_RX_REMV | RFAL_TXRX_FLAGS_PAR_TX_AUTO | RFAL_TXRX_FLAGS_NFCV_FLAG_AUTO , RFAL_NFCA_T_RETRANS); 相同的答案 状态值:9 ERR_FRAMING = 9, /*!< 成帧错误 */ 我在rfalTransceiveBlockingRx中添加了一些日志来查看状态: platformLog("gRFAL.state %drn", gRFAL.state); 做{ rfalWorker(); platformLog("gRFAL.TxRx.state %drn", gRFAL.TxRx.state); } 成功请求(REQA、SEL)的日志是: gRFAL.状态 3 gRFAL.TxRx.state 83 ( RFAL_TXRX_STATE_RX_WAIT_RXS) gRFAL.TxRx.state 90 ( RFAL_TXRX_STATE_RX_FAIL) gRFAL.TxRx.state 0 ( RFAL_TXRX_STATE_IDLE) 状态为 0 ERR_NONE 最后一次读取请求的日志是: gRFAL.状态 3 gRFAL.TxRx.state 83(RFAL_TXRX_STATE_RX_WAIT_RXS) gRFAL.TxRx.state 84 ( RFAL_TXRX_STATE_RX_WAIT_RXE) gRFAL.TxRx.状态 84 gRFAL.TxRx.状态 84 gRFAL.TxRx.状态 84 gRFAL.TxRx.状态 84 gRFAL.TxRx.状态 84 gRFAL.TxRx.state 90(RFAL_TXRX_STATE_RX_FAIL) gRFAL.TxRx.state 0( RFAL_TXRX_STATE_IDLE) 状态为 9 ERR_FRAMING /*!< 帧错误 */ |
|
相关推荐
1个回答
|
|
|
我浏览了您的模板并设法了解您是如何从“ a2 0f ”……到“ a2 1e ”……
尽管我不在“编写”阶段,但仍在“身份验证”过程中,但我想基本原理是相似的,如果是这样,您发送的模板肯定会有很大帮助。 读卡器应发送回卡以进行身份验证的答案由以下内容组成: 8 个字节 + 每个字节上的 1 个奇偶校验位 + 2 个字节的 CRC(在这 8 个字节上)+ CRC 字节上的 1 个奇偶校验位(正如您所说的“CRC 字节也将具有奇偶校验”。)。 一旦按照模板的方式重新移动,大小将保持不变:它使 8 * 8 位 + 8 * 1 位 + 2 * 8 位 + 1 位 = 89 位。 这就是你用 36 位示例描述的情况,它需要以原始模式发送,不是吗? |
|
|
|
|
只有小组成员才能发言,加入小组>>
stm32mp157的异核通信的rpmsg_sdb的m4固件和a7驱动该如何编写?
1453 浏览 0 评论
stm32f103用freertos对一个采样率为1kHz的传感器,进行采样,数据出差
1502 浏览 0 评论
请教:在使用UDE STK时,单片机使用SPC560D30L1,在配置文件怎么设置或选择?里面只有SPC560D40的选项
3649 浏览 1 评论
3842 浏览 1 评论
请问是否有通过UART连接的两个微处理器之间实现双向值交换的方法?
2461 浏览 1 评论
STM32H7打开DCache后,出现了串口接收信息为空的现象,是哪里出了问题?
727浏览 5评论
用NANO STM32F103RBT6的开发板烧录不了是哪里出了问题?
663浏览 5评论
710浏览 5评论
外部中断触发类型为双边沿触发,进入中断回调后有什么办法判断该边沿是上升沿还是下降沿?
941浏览 5评论
STM32L071CBT6低温环境下无法正常工作是什么原因引起的?
745浏览 5评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 15:36 , Processed in 0.466195 second(s), Total 42, Slave 35 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
3227