ST意法半导体
直播中

莫循虎

8年用户 1035经验值
私信 关注
[问答]

MB_LEN_Dyn报告的错误消息长度怎么解决?

在执行从 RF 到 I2C 的 FTM 传输并读取 MB_LEN_Dyn 寄存器时,它总是报告比实际消息长度多 6 个字节(或在我的代码中增加 1 后为 7 个字节)的长度。
下面是 ISR 处理这个的代码。你能告诉我我做错了什么吗?
在移动端,我正在运行 NFC Tap 并使用 FTM - 数据传输屏幕。

尼尔。
  • void IOCAF3_ISR(void) {
  • unsigned char RX_BYTE,i;
  • unsigned char length;
  •           RX_BYTE= ST25_readbyte(FTM_MEMORY,ST25_DYNAMIC_REG_IT_STS);
  •           if ( ( RX_BYTE & 0x20 ) == ( 0x20 ) )
  •           {
  •           RX_BYTE= ST25_readbyte(FTM_MEMORY,ST25_DYNAMIC_REG_MB_CTRL);
  •           if ( ( RX_BYTE & 0x85 ) == ( 0x85 ) )
  •           {
  •           length= ST25_readbyte(FTM_MEMORY,ST25_DYNAMIC_REG_MB_LEN);
  •           length++;
  •           printf("nLength %dnr",length);
  •           for (i=0;i          {
  •           data_buffer  = ST25_readbyte(FTM_MEMORY,ST25_MAILBOX_START+i);   
  •           }
  •           for (i=0;i
  •           {
  •           printf("n %dnr",data_buffer);     
  •           }
  •           }
  •             }
  •           IOCAFbits.IOCAF3 = 0;
  • }

回帖(1)

顾鸿兰

2022-12-6 11:19:23
NFC Tap 在 FTM 功能之上使用一种软件协议,以允许对长数据传输进行控制和错误检查。它旨在与 ST25DV-DISCOvery 板一起使用,ST25DV-DISCOvery 板理解此协议以用于其 FTM 嵌入式演示。
基本上,此协议会向您要发送的数据添加一些标头和 CRC。ST25DV 发现套件的 STM32 FW 能够解码这些标头和 CRC,以便整个系统能够检测错误并最终重新传输数据包。
在您的示例中,第一个字节“113”表示发送的数据是完整的数据段,下一个字节是传输的数据长度并且存在 CRC。
下一个“7”,如您所料,是即将到来的数据的长度。
然后你有“5”,这意味着在这个 SW 协议中“FTM 发送数据”
然后你有你的 2 个字节的数据。
最后是这个数据包的 4 个字节的 CRC。
举报

更多回帖

×
20
完善资料,
赚取积分