我有一个包含 13 个页面的标签,每个页面有 4 个块,标签总共有 52 个块。由于我尝试使用 ISO 15693 命令登录标签,添加,保存或保护里面的数据,我想使用“获取多块状态保护”,看看标签的块是如何受到保护的(有4种保护状态类型)。结果检查该函数输出一个字符串以显示该命令是否可以正确使用(“_0”为假或“_1”为真)。当我预先选择要保护的页面并使用“获取多个块状态保护”进行检查时,它确实会在输出中显示该块具有哪种保护。但它总是给出“_0”而不是“_1”
我添加了命令信息的屏幕截图以及需要哪些参数:
[1]:https ://i.stack.imgur.com/oJ76e.png
但是我在函数中找不到错误..
对于每一个帮助或提示,我都会很高兴!非常感谢提前
void TAG_MSP_GET_PAGE (uint8_t ui8ReqFlag, uint8_t ui8_getPage)
{ uint8_t ui8Offset = 0;
#ifdef ENABLE_HOST
uint8_t ui8LoopCount = 1;
uint8_t ui8RxLength = 0;
#endif
g_pui8TrfBuffer[ui8Offset++] = 0x8F; // Reset FIFO
g_pui8TrfBuffer[ui8Offset++] = 0x91; // Send with CRC
g_pui8TrfBuffer[ui8Offset++] = 0x3D; // Write Continuous
g_pui8TrfBuffer[ui8Offset++] = 0x00; // length
g_pui8TrfBuffer[ui8Offset++] = 0xF0; // length
if (ui8ReqFlag & 0x20)
{
g_pui8TrfBuffer[ui8Offset++] = 0xC0; // Length of packet in bytes - lower and broken nibbles of transmit byte length
}
else
{
g_pui8TrfBuffer[ui8Offset++] = 0x40; // Length of packet in bytes - lower and broken nibbles of transmit byte length
}
// if (ui8ReqFlag & 0x20)
// {
// g_pui8TrfBuffer[ui8Offset++] = 0xB0; // Length of packet in bytes - lower and broken nibbles of transmit byte length
// }
// else
// {
// g_pui8TrfBuffer[ui8Offset++] = 0x30; // Length of packet in bytes - lower and broken nibbles of transmit byte length
// }
g_pui8TrfBuffer[ui8Offset++] = ui8ReqFlag; // ISO15693 flags
g_pui8TrfBuffer[ui8Offset++] = 0x2C; // GET COMMAND CODE
g_pui8TrfBuffer[ui8Offset++] = 0x16; //IC Mfg Code
if (ui8ReqFlag & 0x20)
{
g_pui8TrfBuffer[ui8Offset++] = g_pui8Iso15693UId[0]; // Tag UID
g_pui8TrfBuffer[ui8Offset++] = g_pui8Iso15693UId[1]; // Tag UID
g_pui8TrfBuffer[ui8Offset++] = g_pui8Iso15693UId[2]; // Tag UID
g_pui8TrfBuffer[ui8Offset++] = g_pui8Iso15693UId[3]; // Tag UID
g_pui8TrfBuffer[ui8Offset++] = g_pui8Iso15693UId[4]; // Tag UID
g_pui8TrfBuffer[ui8Offset++] = g_pui8Iso15693UId[5]; // Tag UID
g_pui8TrfBuffer[ui8Offset++] = g_pui8Iso15693UId[6]; // Tag UID
g_pui8TrfBuffer[ui8Offset++] = g_pui8Iso15693UId[7]; // Tag UID
}
g_pui8TrfBuffer[ui8Offset++] = ui8_getBlock;
g_pui8TrfBuffer[ui8Offset++] = ui8_Protection_Status;
TRF79xxA_writeRaw(&g_pui8TrfBuffer[0], ui8Offset);
g_sTrfStatus = TRF79xxA_waitRxData(5,15); // 5 millisecond TX timeout, 15 millisecond RX timeout
if (g_sTrfStatus == RX_COMPLETE) // If data has been received
{
if (g_pui8TrfBuffer[0] == 0x00) // Confirm "no error" in response flags byte
{
#ifdef ENABLE_HOST
UART_sendCString("START:AW_GET_PRO_PAGE_");
UART_putByteDecimalValue(ui8_getBlock);
UART_sendCString("_");
UART_putByte(ui8_Protection_Status);
UART_sendCString("_1:END");
ui8RxLength = TRF79xxA_getRxBytesReceived();
if (ui8ReqFlag & BIT6)
{
ui8Offset = 2;
}
else
{
ui8Offset = 1;
}
for (ui8LoopCount = ui8Offset; ui8LoopCount < ui8RxLength; ui8LoopCount++)
{
UART_putByte(g_pui8TrfBuffer[ui8LoopCount]);
}
#endif
}
else
{
UART_sendCString("START:AW_GET_PRO_PAGE_");
UART_putByteDecimalValue(ui8_getBlock);
UART_sendCString("_");
UART_putByte(ui8_Protection_Status);
UART_sendCString("_0:END");
}
}
else
{
UART_sendCString("START:AW_GET_PRO_PAGE_");
UART_putByteDecimalValue(ui8_getBlock);
UART_sendCString("_");
UART_putByte(ui8_Protection_Status);
UART_sendCString("_0:END");
}
}