我使用的SDK版本是
NxpNfcRdLib_RC663_v07.14.00_Pub.zip
使用one slot 读取标签速度非常快,但是改成16 slots后,经常报错0x201或者0x203
我的修改逻辑是把所有的 |
还有哪里漏改了吗?
具体修改如下:
diff --git a/Middlewares/Third_Party/nxp/NxpNfcRdLib/comps/phacDiscLoop/src/Sw/phacDiscLoop_Sw_Int_V.c b/Middlewares/Third_Party/nxp/NxpNfcRdLib/comps/phacDiscLoop/src/Sw/phacDiscLoop_Sw_Int_V.c
index a2b1dd9..317b4b2 100644
--- a/Middlewares/Third_Party/nxp/NxpNfcRdLib/comps/phacDiscLoop/src/Sw/phacDiscLoop_Sw_Int_V.c
+++ b/Middlewares/Third_Party/nxp/NxpNfcRdLib/comps/phacDiscLoop/src/Sw/phacDiscLoop_Sw_Int_V.c
@@ -47,7 +47,7 @@ phStatus_t phacDiscLoop_Sw_DetTechTypeV(
/* Inventory request with one slot */
status = phpalSli15693_Inventory(
pDataParams->pPalSli15693DataParams,
- pDataParams->sTypeVTargetInfo.bFlag | PHPAL_SLI15693_FLAG_NBSLOTS | PHPAL_SLI15693_FLAG_INVENTORY,
+ pDataParams->sTypeVTargetInfo.bFlag /*| PHPAL_SLI15693_FLAG_NBSLOTS*/ | PHPAL_SLI15693_FLAG_INVENTORY,
0,
NULL,
0,
@@ -106,7 +106,7 @@ phStatus_t phacDiscLoop_Sw_Int_CollisionResolutionV(
/* Symbol 0 */
status = phpalSli15693_Inventory(
pDataParams->pPalSli15693DataParams,
- pDataParams->sTypeVTargetInfo.bFlag | PHPAL_SLI15693_FLAG_NBSLOTS | PHPAL_SLI15693_FLAG_INVENTORY,
+ pDataParams->sTypeVTargetInfo.bFlag /*| PHPAL_SLI15693_FLAG_NBSLOTS*/ | PHPAL_SLI15693_FLAG_INVENTORY,
0,
aMaskBuffer,
bMaskBitLength,
diff --git a/Middlewares/Third_Party/nxp/NxpNfcRdLib/comps/phpalSli15693/src/Sw/phpalSli15693_Sw.c b/Middlewares/Third_Party/nxp/NxpNfcRdLib/comps/phpalSli15693/src/Sw/phpalSli15693_Sw.c
index a99ad24..d507f8e 100644
--- a/Middlewares/Third_Party/nxp/NxpNfcRdLib/comps/phpalSli15693/src/Sw/phpalSli15693_Sw.c
+++ b/Middlewares/Third_Party/nxp/NxpNfcRdLib/comps/phpalSli15693/src/Sw/phpalSli15693_Sw.c
@@ -1839,7 +1839,7 @@ phStatus_t phpalSli15693_Sw_InventoryExt(
/* Clear INVENTORY, AFI and NBSLOTS flag */
if((status & PH_ERR_MASK) != PH_ERR_SUCCESS)
{
- pDataParams->bFlags &= (uint8_t)~(uint8_t)(PHPAL_SLI15693_FLAG_INVENTORY | PHPAL_SLI15693_FLAG_AFI | PHPAL_SLI15693_FLAG_NBSLOTS);
+ pDataParams->bFlags &= (uint8_t)~(uint8_t)(PHPAL_SLI15693_FLAG_INVENTORY | PHPAL_SLI15693_FLAG_AFI /*| PHPAL_SLI15693_FLAG_NBSLOTS*/);
}
/* Verify the exchange status. */
@@ -1967,7 +1967,7 @@ phStatus_t phpalSli15693_Sw_InventoryExt(
}while(bAllBlocksRead == 0U);
/* Clear INVENTORY, AFI and NBSLOTS flag */
- pDataParams->bFlags &= (uint8_t)~(uint8_t)(PHPAL_SLI15693_FLAG_INVENTORY | PHPAL_SLI15693_FLAG_AFI | PHPAL_SLI15693_FLAG_NBSLOTS);
+ pDataParams->bFlags &= (uint8_t)~(uint8_t)(PHPAL_SLI15693_FLAG_INVENTORY | PHPAL_SLI15693_FLAG_AFI /*| PHPAL_SLI15693_FLAG_NBSLOTS*/);
pDataParams->bExplicitlyAddressed = 0;请尝试以下步骤:
1.初始化阅读器。
将协议设置为 ISO15693。
启用避免碰撞功能。
选择时间段 = 16(用于多标记方案)。
2。启动存货命令。
读取器发送存货命令,标签随机选择一个时段进行响应。
读者收集回复:
如果一个时隙内只有一个标签 → 获取 UID。
如果碰撞发生在一个时隙 → 无法识别,标记为"不完整" 。
3.记录识别的标签。
将成功读取的 UID 储存到列表中。
向识别到的标签发送选择命令,将其从随后的防碰撞中移除。
4.循环直至完成。
重复步骤 2-4,直到
所有标签 UID 均已识别,或重试次数已达上限。
我把