您好!
我已经尝试通过 两种方法来发送内部和外部命令来读取 RSSI 水平寄存器、但每个方法提供不同的结果。 您能告诉我哪个序列是正确的吗:
序列1:
SPI_directCommand (TRF79X0_SOFT_INIT_CMD);
SPI_directCommand (TRF79X0_IDLE_CMD);
usleep(1000);
SPI_directCommand (TRF79X0_RESET_FIFO_CMD);
SPI_writeSingle (0x01、TRF79X0_MODE_CONTROL_REG);// ASK 100%、无 SYS_CLK 输出
SPI_writeSingle (0x01、TRF79X0_reguler_control_REG);
SPI_writeSingle (0x00、TRF79X0_NFC_TARGET_LEVEL_REG);
if (checkext){
SPI_writeSingle (0x22、TRF79X0_CHIP_STATUS_CTRL_REG);
SPI_directCommand (TRF79X0_TEST_EXTERNAL_RF_CMD);
}
否则{
SPI_writeSingle (0x22、TRF79X0_CHIP_STATUS_CTRL_REG);
SPI_directCommand (TRF79X0_TEST_INTERNAL_RF_CMD);
}
usleep (200);//延迟至少50uS
SPI_readSingle (&ui8Value1、TRF79X0_RSSI_Level_REG);// 获取 值(x40)、即使天线上存在标签。
SPI_writeSingle (0x02、TRF79X0_ISO_CONTRAL_REG);
SPI_writeSingle (0x01、TRF79X0_MODIANG_CONTRAL_REG);
SPI_writeSingle (0x15、TRF79X0_RX_NO_RESPONSE_WAIT_REG);
SPI_writeSingle (0x0C、TRF79X0_FIFO_IRQ_LEVEL);
SPI_writeSingle (0x00、TRF79X0_NFC_TARGET_LEVEL_REG);
usleep(20000);
ISO15693_sendSingleSlotInventory();
while (1) //读取 UID
{
SPI_readSingle (&irqsts、TRF79X0_IRQ_STATUS_REG);
if ((irqsts =TRF79XXA_IRQ_STATUS_TX_COMPLETE)&&(fifeanet =0))
{
usleep(2000);
SPI_directCommand (TRF79X0_RESET_FIFO_CMD);//在 TX 之后复位 FIFO
fiefenet=1;
}
否则、如果(irqsts = TRF79XXA_IRQ_STATUS_RX_COMPLETE)
{
SPI_readSingle (&g_ui8FifoRxLength、TRF79X0_FIFO_STATUS_REG);
}
SPI_readSingle (&g_ui8FifoRxLength、TRF79X0_FIFO_STATUS_REG);
usleep (1000);//延时为50uS
IF (g_ui8FifoRxLength = 0x0A)
{
SPI_readCont (g_pui8T5TBuffer、TRF79X0_FIFO_REG、0x0F);
usleep(100);
SPI_readSingle (&ui8Value1、TRF79X0_RSSI_Level_REG);//在此处读取.. 如果天线上有标签,则获得全功率7F。
中断;
}
序列2:
SPI_directCommand (TRF79X0_SOFT_INIT_CMD);
SPI_directCommand (TRF79X0_IDLE_CMD);
usleep(1000);
SPI_directCommand (TRF79X0_RESET_FIFO_CMD);
SPI_writeSingle (0x01、TRF79X0_MODE_CONTROL_REG);// ASK 100%、无 SYS_CLK 输出
SPI_writeSingle (0x01、TRF79X0_reguler_control_REG);
SPI_writeSingle (0x00、TRF79X0_NFC_TARGET_LEVEL_REG);
if (checkext){
SPI_writeSingle (0x22、TRF79X0_CHIP_STATUS_CTRL_REG);
SPI_directCommand (TRF79X0_TEST_EXTERNAL_RF_CMD);
}
否则{
SPI_writeSingle (0x22、TRF79X0_CHIP_STATUS_CTRL_REG);
SPI_directCommand (TRF79X0_TEST_INTERNAL_RF_CMD);
}
usleep (200);//延迟至少50uS
SPI_readSingle (&ui8Value1、TRF79X0_RSSI_Level_REG); //没有得到任何东西
SPI_writeSingle (0x02、TRF79X0_ISO_CONTRAL_REG);
SPI_writeSingle (0x01、TRF79X0_MODIANG_CONTRAL_REG);
SPI_writeSingle (0x15、TRF79X0_RX_NO_RESPONSE_WAIT_REG);
SPI_writeSingle (0x0C、TRF79X0_FIFO_IRQ_LEVEL);
SPI_writeSingle (0x00、TRF79X0_NFC_TARGET_LEVEL_REG);
usleep(20000);
ISO15693_sendSingleSlotInventory();
while (1) // 读取 uid
{
SPI_readSingle (&irqsts、TRF79X0_IRQ_STATUS_REG);
if ((irqsts =TRF79XXA_IRQ_STATUS_TX_COMPLETE)&&(fifeanet =0))
{
usleep(2000);
SPI_directCommand (TRF79X0_RESET_FIFO_CMD);//在 TX 之后复位 FIFO
fiefenet=1;
}
否则、如果(irqsts = TRF79XXA_IRQ_STATUS_RX_COMPLETE)
{
SPI_readSingle (&g_ui8FifoRxLength、TRF79X0_FIFO_STATUS_REG);
}
SPI_readSingle (&g_ui8FifoRxLength、TRF79X0_FIFO_STATUS_REG);
usleep (1000);//延时为50uS
IF (g_ui8FifoRxLength = 0x0A)
{
SPI_readCont (g_pui8T5TBuffer、TRF79X0_FIFO_REG、0x0F);
if (checkext){ //标记以检查内部或外部值。
SPI_writeSingle (0x22、TRF79X0_CHIP_STATUS_CTRL_REG);
SPI_directCommand (TRF79X0_TEST_EXTERNAL_RF_CMD);
}
否则{
SPI_writeSingle (0x22、TRF79X0_CHIP_STATUS_CTRL_REG);
SPI_directCommand (TRF79X0_TEST_INTERNAL_RF_CMD);
}
usleep(100);
SPI_readSingle (&ui8Value1、TRF79X0_RSSI_Level_REG); //在此处读取:如果 标签在天线上,则获得(x40到 x5d)范围内小于7f 的值
中断;
}
您能告诉我哪个序列提供正确的值:1. 需要在读取 uid 或读取 UID 之前向 trf7970发送命令
2.天气我将获得相同或不同的 RSSI 值,用于内部和外部命令,以获得正确的顺序。
谢谢。