This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TRF7970A:我能否使用单个插槽资源清册命令来检测是否确实不存在标签?

Guru**** 1821780 points
Other Parts Discussed in Thread: TRF7970A
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/other-wireless-group/other-wireless/f/other-wireless-technologies-forum/1348648/trf7970a-can-i-use-a-single-slot-inventory-command-to-detect-if-definitely-no-tag-is-present

器件型号:TRF7970A

我正在处理一个 基于 sloc297代码的 TRF7970A 应用。

除了读取特定标签数据之外、我还想使用"findTag"结果来检测我的器件中是否存在已标记的器件(以查看器件中的机械间隙是否被阻止)。

我需要定期检查以下情况:

  • 到达时正好有一个标签-->然后读取数据,并注意我的设备中有一个部件。
  • 是否有多个到达的标签-->忽略数据,但请注意我的设备中有一个部件
  • 绝对没有标签到达-->没有要读取的数据,我可以确定我的设备中没有标记的部件

可以通过单槽库存命令(例如使用函数 ISO15693_sendSingleSlotInventory())来回答此条件。

我曾使用该功能、我只能区分"存在1个标签"和"不存在2个或更多个标签"。 为了确保不存在标签、我将需要运行一个防冲突例程(-> ISO15693_runAnticolision ())、此例程打击了我的通信流量。

是否有办法使用单个插槽资源清册结果来安全检测到没有到达的标签?

需要如何修改函数 ISO15693_sendSingleSlotInventory()? 我在下面的代码中添加了一些注释。

uint8_t ISO15693_sendSingleSlotInventory (void)
{
   uint8_t ui8Offset = 0;
   uint8_t ui8LoopCount = 0;
   uint8_t ui8Status = STATUS_FAIL;

   G_pui8TrfBuffer[ui8Offset++]= 0x8F;      //复位 FIFO
   G_pui8TrfBuffer[ui8Offset++]= 0x91;      //通过 CRC 发送
   G_pui8TrfBuffer[ui8Offset++]= 0x3D;      //连续写入
   G_pui8TrfBuffer[ui8Offset++]= 0x00;      //字节形式的数据包长度-发送字节长度的高半字节和中半字节
   G_pui8TrfBuffer[ui8Offset+]= 0x30;      //字节数据包长度-发送字节长度的低半字节和不完整的半字节
   G_pui8TrfBuffer[ui8Offset++]= 0x26;      // ISO15693标志
   G_pui8TrfBuffer[ui8Offset++]= 0x01;      //库存命令代码
   G_pui8TrfBuffer[ui8Offset++]= 0x00;      //屏蔽长度= 0 (也不发送 AFI)

   TRF79xxA_writeRaw (&g_pui8TrfBuffer[0]、ui8Offset);      //发出 ISO15693清单命令

   g_sTrfStatus = TRF79xxA_waitRxData (5、15);         // 5毫秒 TX 超时、15毫秒 RX 超时

   if (g_sTrfStatus == RX_COMPLETE)      //如果已接收到数据
   {
      如果(g_pui8TrfBuffer[0]== 0x00)      //确认响应标志字节中的"无错误"
      {
         //-->在此处检测到精确的1个标签
           ui8Status = STATUS_SUCCESS;
           // UID 从第3个接收的位开始(第1个是标志、第2个是 DSFID)
         对于(ui8LoopCount = 2;ui8LoopCount < 10;ui8LoopCount++)
         {
            G_pui8Iso15693UId[ui8LoopCount-2]= g_pui8TrfBuffer[ui8LoopCount];   //将 UID 存储到缓冲区
         }

         G_ui8TagDetectedCount = 1;
      }

       否则

       {

          //-->该分支的情况如何

                 }
   }
   否则
   {
       //-->如果没有任何标签或超过1个标签、我将在此处进行联系
      ui8Status = STATUS_FAIL;
   }
   返回 ui8Status;

谢谢- Martin

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    抱歉、请注意、 此产品的论坛支持已简化为首先参考我们现有的文档和配套资料。 如需支持、请查看该主题页面右下角的"类似主题"部分。 此外、请参阅 产品网页的"技术文档"部分中的现有配套资料 以及 常见问题解答文档。 或者、您可以使用您选择的搜索引擎来查找相关的 E2E 主题。 借助这些资源、我们相信可以帮助解决您的问题。