ST意法半导体
直播中

康桃花

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

如何使用DLL在代码中执行ISO 15693 R2H FTM数据传输呢?

我正在尝试使用 C/C++ (QT) 开发一个应用程序,以使用 STR25R3111DISCOComm DLL 执行带有 STDV04 标签的 ISO 15693 R2H FTM 数据传输。我能够链接到 DLL,连接到 DISCO 板并使用我自己的代码对我的标签执行被动读取。我还能够使用 ST 标签编辑器成功执行 FTM 传输。但完全不清楚我是如何使用 DLL 在我的代码中执行这些传输的。
以下是我希望执行的传输类型的 ST25DV FTM 演示的日志。我如何用 DLL 调用重现它?
我尝试使用 iso15693TxRxNBytes() 发送由 ST25R3911B_SENDRECEIVE 命令发送的正在记录的数据,但是当我开始发送命令 0xAA 时,我总是收到 INVALID_CRC 错误。
阅读其他帖子,我想我需要使用 rfalStartTransceive() / rfalGetTransceiveStatus() 命令,但我无法锻炼我实际需要发送的内容。他们总是只返回表明我发送错误的数据,或者没有正确设置的数据。
(响应:01020000000000000000000000000000 例如,我相信 0102 是未知命令?)
请给我一些关于如何使用 DLL 复制此命令的想法:
ST25R3911B_SENDRECEIVE, 02 AA 02 12 03 00 00 01 00 00 00 06 00 01 00 01 06 26 30 30 3A 0D 0A
我搜索了所有我能想到的地方,并阅读了很多关于这个主题的帖子,但我就是找不到任何能为我提供足够信息来让它发挥作用的东西。
几行示例调用会很棒,我查看了 ST25R3911B Discovery GUI 附带的所有演示代码和谷歌找到的一些东西,但没有发现任何东西可以帮助我理解我需要做什么或我做错了什么。

  • 05-20-2022 09:31:00        ST25R3911B CONFIGURAtiON : ISO15693 100% HIGH DATARATE ONE SUBCARRIER
  •                         >>> ST25R3911B_PROTOCOL_SELECT, 0109
  •                         <<< 0000
  • 05-20-2022 09:31:14        FILE SELECTED
  •                         >>> C:Userstim_nDocumentsMessage00 - Ident.bin
  • 05-20-2022 09:31:14        FILE CRC
  •                         >>> AF91E5A9
  • 05-20-2022 09:31:35        FILE SELECTED
  •                         >>> C:Userstim_nDocumentsMessage00 - Ident.bin
  • 05-20-2022 09:31:35        FILE CRC
  •                         >>> AF91E5A9
  • 05-20-2022 09:31:38        ---- STARTING FIRMWARE UPGRADE DEMO ----
  • 05-20-2022 09:31:38        -> DEMO SETTING :
  • 05-20-2022 09:31:38        PRESENT PASSWORD CONFIG
  •                         >>> ST25R3911B_SENDRECEIVE, 02B302000000000000000000
  •                         <<< 80040078F000
  • 05-20-2022 09:31:38        WRITE CONFIG GPO = B0
  •                         >>> ST25R3911B_SENDRECEIVE, 02A10200B0
  •                         <<< 80040078F000
  • 05-20-2022 09:31:38        WRITE CONFIG MB_EN = 01
  •                         >>> ST25R3911B_SENDRECEIVE, 02A1020D01
  •                         <<< 80040078F000
  • 05-20-2022 09:31:38        WRITE CONFIG MB_WDG = 00
  •                         >>> ST25R3911B_SENDRECEIVE, 02A1020E00
  •                         <<< 80040078F000
  • 05-20-2022 09:31:38        WRITE DYN REGISTER @00
  •                         >>> ST25R3911B_SENDRECEIVE, 02AE020D00
  •                         <<< 80040078F000
  • 05-20-2022 09:31:38        WRITE DYN REGISTER @01
  •                         >>> ST25R3911B_SENDRECEIVE, 02AE020D01
  •                         <<< 80040078F000
  • 05-20-2022 09:31:38        -> STARTING DOWNLOADING FIRMWARE
  • 05-20-2022 09:31:38        SEND FRAME (NUMBER : 1)
  •                         >>> ST25R3911B_SENDRECEIVE, 02 AA 02 12 03 00 00 01 00 00 00 06 00 01 00 01 06 26 30 30 3A 0D 0A
  •                         <<< 80040078F000
  • 05-20-2022 09:31:38        POLLING ON DYN REG UNTIL HOST READ MSG
  •                         >>> ST25R3911B_SENDRECEIVE, 02AD020D
  •                         <<< 80050043D87F00 43
  • 05-20-2022 09:31:38        READ MESSAGE & CRC :
  •                         >>> ST25R3911B_SENDRECEIVE, 02AC020000
  •                         <<< 800D000301000004A9E591AFEA2F00
  • 05-20-2022 09:31:38        ---> CRC SENT BY HOST= A9E591AF
  •                         ---> CRC COMPARISON OK
  •                         ---> TRANSFER DONE SUCCESSFULLY
  • 05-20-2022 09:31:38        SEND ACKNOWLEDGE :
  •                         >>> ST25R3911B_SENDRECEIVE, 02AA02040302000000
  •                         <<< 80040078F000
  • 05-20-2022 09:31:38        --------------- FILE TRANSFER ENDED ---------------

回帖(1)

王波

2022-12-27 11:07:24
您可能只是遇到了缓冲区问题。对 AA 命令的响应比之前对其他命令的响应长一个字节。在 ST25R3911B 中,需要在软件中检查 NFC-V 的 CRC,为此还需要将其接收到用户提供的缓冲区中。如果没有足够的空间来放置 CRC,板上的固件将标记 CRC 错误。
我将上述字符串输入 ISO15693 选项卡上的 ST25R3911B-DISCO,它正在工作(使用 iso15693TxRxNBytes())。
使用 iso15693TxRxNBytes() 应该没问题,它只是 rfalStartTransceive()/GetTransceiveStatus() 的遗留粘合层。
举报

更多回帖

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