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:读取外部和内部 RSSI 值

Guru**** 2540720 points


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

https://e2e.ti.com/support/wireless-connectivity/other-wireless-group/other-wireless/f/other-wireless-technologies-forum/790679/trf7970a-reading-rssi-values-external-and-internal

器件型号:TRF7970A

您好!

我已经尝试通过   两种方法来发送内部和外部命令来读取 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 值,用于内部和外部命令,以获得正确的顺序。

 

谢谢。

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

    内部 RSSI 通常用于检查应答器响应的信号强度。 例如、当读取器向应答器(标签)发送命令时、标签完成答复(我们收到 RX 完成中断)后、RSSI 水平寄存器将自动更新。 因此、在接收到来自标签的应答后、只需要读取 RSSI 寄存器(0x0F)。 RSSI 值7表示标签更接近线圈、而值1表示标签从更远的距离回复。

    外部 RSSI 用于检查天线上是否存在外部 RF 场。 这主要用于 P2P 应用、尤其是 Active P2P。 我们的器件勘误表中实际上突出了执行此操作的正确过程、请参阅器件#B09的最后一项、该项显示了如何使用外部 RSSI 作为 RF 冲突避免的手段: www.ti.com/.../sloz011b.pdf
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Ralph、

    感谢您的回答。

    我正在使用 ISO-15693支持的标签,这意味着我需要为天线范围测量使用内部 RSSI -我是不是正确的?

     

    要读取内部 RSSI,我将执行以下步骤序列:

    正在初始化 TRF7970。

    对寄存器的写入:   

    SPI_writeSingle (0x22、TRF79X0_CHIP_STATUS_CTRL_REG);
    SPI_directCommand (TRF79X0_TEST_INTERNAL_RF_CMD);

    读取 UID (正如您提到的从 TRF/TAG 获取响应)。

    4.从寄存器读取 RSSI 值:

    SPI_readSingle (&ui8Value1、TRF79X0_RSSI_Level_REG)

    是否正确或有任何建议。

    我是否可以执行以下序列:

    1.初始化 TRF。

    写入寄存器。

    从寄存器读取 RSSI 值。

    请向我提供您的答案

    谢谢  

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

    您好、Ralph、

    感谢您的回答。

    我正在使用 ISO-15693支持的标签,这意味着我需要为天线范围测量使用内部 RSSI -我是不是正确的?

     

    要读取内部 RSSI,我将执行以下步骤序列:

    正在初始化 TRF7970。

    对寄存器的写入:   

    SPI_writeSingle (0x22、TRF79X0_CHIP_STATUS_CTRL_REG);
    SPI_directCommand (TRF79X0_TEST_INTERNAL_RF_CMD);

    读取 UID (正如您提到的从 TRF/TAG 获取响应)。

    4.从寄存器读取 RSSI 值:

    SPI_readSingle (&ui8Value1、TRF79X0_RSSI_Level_REG)

    是否正确或有任何建议。

    我是否可以执行以下序列:

    1.初始化 TRF。

    写入寄存器。

    从寄存器读取 RSSI 值。

    请向我提供您的答案

    谢谢  

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

    我认为您甚至不需要 TRF79X0_TEST_INTERNAL_RF_CMD。

    只需与一个标签通信、然后在从 FIFO 中获得 RX 数据后、读取 RSSI 寄存器。 请注意、您需要来自被识别以获得 RSSI 的标签的回复、因此除非您获得 RX 完整 IRQ、否则数据将不可用。

    请告诉我这是否可行、如果不可行、我将再次检查。