ST意法半导体
直播中

王利祥

7年用户 1447经验值
私信 关注
[问答]

为什么ST25R3911B芯片没有收到帧结束就出现定时器中断呢?

我正在尝试使用 X-NUCLEO-NFC06A1 扩展板与 ISO14443-A 智能卡进行通信。根据收到的 ATS,智能卡支持以下比特率:106、212、424 和 848 kbit/s。如果我在传输和接收中与智能卡协商 848 kbit/s 比特率,并且我尝试发送 APDU,rfal 库在接收中返回 ERROR FRAMING。特别是错误是由 rfal_rfst25r3911.c 文件中实现的 rfalTransceiveRx() 方法返回的:
  • case RFAL_TXRX_STATE_RX_WAIT_RXE:
  •             irqs = st25r3911Getinterrupt( (ST25R3911_IRQ_MASK_RXE | ST25R3911_IRQ_MASK_FWL | ST25R3911_IRQ_MASK_EOF) );
  •             if( irqs == ST25R3911_IRQ_MASK_NONE )
  •             {
  •                 /*******************************************************************************/
  •                 /* REMARK: Silicon workaround ST25R3911B Errata #1.1                           */
  •                 /* ST25R3911 may indicate RXS without RXE afterwards, this happens rarely on   */
  •                 /* corrupted frames.                                                           */
  •                 /* SW timer is used to timeout upon a missing RXE                              */
  •                 if( rfalTimerisExpired( gRFAL.tmr.RXE ) )
  •                 {
  •                   gRFAL.TxRx.status = ERR_FRAMING;
  •                   gRFAL.TxRx.state  = RFAL_TXRX_STATE_RX_FAIL;
  •                 }
  •                 /*******************************************************************************/
  •                 break;  /* No interrupt to process */
  •             }
好像是芯片没有收到帧结束,出现定时器中断。相反,如果将比特率设置为 424 kbit/s,则不会出现任何问题。有没有人可以解释我为什么会这样?此外,我在哪里可以找到 ST25R3911B 勘误表 #1.1?

回帖(1)

郝汉

2023-1-6 10:35:58
进入优化级别 -O3 时问题消失。在高比特率下,还建议将 SPI 速度提高到例如 4MHz。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分