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.

[参考译文] TRF7960ATB:TRF7960ATB 配置问题

Guru**** 2595805 points
Other Parts Discussed in Thread: TRF7960A, TRF7960

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

https://e2e.ti.com/support/wireless-connectivity/other-wireless-group/other-wireless/f/other-wireless-technologies-forum/564631/trf7960atb-trf7960atb-configuration-problem

器件型号:TRF7960ATB

早上好、

I´m 使用 TRF7960ATB 评估板来配置 ISO15693。 我将调制器和 SYS_CLK 控制寄存器(0x09)设置为0x21、这意味着系统输出频率应为6.78MHz、因为 B7位被设置为0。 但是、当我测量信号时、我测量3、339Mhz、当我用0x49读取寄存 器时、TRF7960A 用0x21回答。 您知道会发生什么情况吗?

我´m 使用的代码以及我测量的信号的一些图像。

主{

 uint8_t   writing[4];

 uint8_t   命令[2];

uint8_t   iso_control=0x02;

命令[0]= CHIP_STACE_CONTROL;

COMMAN[1]= CHIP_STATE_CONTROL;

Trf796xReadSingle (&command[1]、1);

命令[1]&= 0x3F;

命令[1]|= 0x20;

Trf796xWriteSingle (命令、2);

//Escritura en registro 0x01

写入[0]= ISO_CONTROL;

写入[1]= ISO_CONTROL;

write[1]&= 0xDF;// BIT5 A 0参数建立的 RFID 模式

Trf796xWriteSingle (写入、2);

ISO_CONTROL &= 0x1F;

//Escritura en registro 0x0D

WRITE[0]= IRQ_MASK;

写入[1]= 0x3E;

Trf796xWriteSingle (写入、2);

//Escritura en registro 0x09

// nota:elegir 模量 OOK/ASK (0x21/0x20)

WRITE[0]=调制器控制;

WRITE[1]= 0x21;//// OOK 100% 6.78MHz

Trf796xWriteSingle (写入、2);

//Escritura en registro 0x06

WRITE[0]= TX_PULSE_LENGTH_CONTROL;

写入[1]= 0x80;// 9.44us

Trf796xWriteSingle (写入、2);

//Escritura en registro 0x07

WRITE[0]= RX_NO_RESPONSE_WAIT_TIME;

写入[1]= 0x14;// 755us

Trf796xWriteSingle (写入、2);

//Escritura en registro 0x08

WRITE[0]= RX_WAIT_TIME;

写入[1]= 0x1F;// 293us

Trf796xWriteSingle (写入、2);

//Escritura en registro 0x0A

写入[0]= RX_SPECIAL _SETTINGS;

写入[1]= RX_SPECIAL_SETTINGS;

Trf796xReadSingle (&write[1]、1);

write[1]&= 0x0F;

write[1]|= 0x40;//带通200kHz 至900kHz

Trf796xWriteSingle (写入、2);

//Escritura en registro 0x10

WRITE[0]=特殊函数;

write_1]=特殊函数;

Trf796xReadSingle (&write[1]、1);

write[1]|= 0xEF;//位4 A 0->已建立时间网格

Trf796xWriteSingle (写入、2);

对于(;;)//这个无限循环是读取示波器上的寄存器0x09

WRITE[0]=调制器控制;

   Trf796xReadSingle (WRITE、1);

这就是我使用的所有代码。 只有使用此代码、TRF7960A 才应检测标签、没有 μ¿?

谢谢、

Joseba

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

    Jiseba 您好!

    从我在您的读取命令的示波器捕获中看到的内容、您将从 TRF7960A 获得一个0x11作为回复。 根据数据表的表7-12、这将达到3.39MHz SYS_CLK 输出。 请根据 http://www.ti.com/lit/an/sloa140/sloa140.pdf 检查您的 SPI 时钟极性以了解写入寄存器操作

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

    早上好、Ralph、


    访问 http://www.ti.com/lit/an/sloa140/sloa140.pdf (图2),在 MCU 写入中,数据表指定了必须在下降沿更改位,并且必须在上升沿执行读取操作。 从我的示波器捕获中可以看到、写入和读取操作的时钟极性是正确的。 我´s 的唯一区别是、当 TRF7960应答 MCU 时、数据表指定 MOSI 不得进行数据转换、并且在查看我的示波器捕获时、会发生数据转换。 该数据转换是 MCU 发送到 TRF 的最后一条命令、但极性已切换。 这可能是问题吗?

    谢谢

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

    Jiseba 您好!

    关于 MOSI 线路上的数据转换、某些转换可能会出现问题、尤其是在从 FIFO 读取数据时。 然而,在这种情况下,我不相信这是这个具体问题的根本原因。 也就是说 、您需要针对未来的情况解决此问题、因为它已知会导致 FIFO 数据损坏。

    对于 SYC_CLK 输出的问题、我们现在具有以下行为:

    1) 1)读取0x49的寄存器返回0x11的值

    2) 2) TRF7960A SYS_CLK 输出为3.33MHz、这非常接近寄存器0x09 = 0x11的3.39MHz 数据表规格、即读取结果上显示的值。

    对我来说、这说明 TRF7960A 的行为是基于写入的内容。 现在、如果您的代码打算写入0x21、那么写入时可能存在极性问题。 不过、我无法用一种方法来判断、因为我没有看到写入操作逻辑线路的示波器截图。 我希望看到这一点,因此我对局势有了一个全面的了解。

    如果您可以显示以下内容的 O 范围捕获:

    WRITE[0]=调制器控制;

    WRITE[1]= 0x21;//// OOK 100% 6.78MHz

    Trf796xWriteSingle (写入、2);

    然后、我还可以看到写入操作的 SPI 极性。

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

    您好、Ralph、


    我´ve 你 这么说、结果是:

    我发送调制器控制命令、然后读取该寄存器以确认所有操作均已正确完成:


          WRITE[0]=调制器控制;
          写入[1]= 0x21;                //// OOK 100% 6.78MHz
          Trf796xWriteSingle (写入、2);

          WRITE[0]= 0x49;
          Trf796xReadSingle (&write[0]、1);
      

    在这里、您可以看到德斯波形捕获、其中可以看到转换和接收命令为 OK。 其中 D8-SPI_CLK  D9=MOSI   D10=MISO  D11=SS*


     

    第二次捕捉显示了 WRITE [0]=调制器控制命令和时钟周期

    第三次捕获显示了 write[1]=0x21命令、其时钟极性与最后一次时的时钟极性相同

    下一个捕获显示了读取寄存器命令0x49

    现在、当 clk 极性发生变化时、响应0x21的答案是正确的答案

    测量信号 SYS_CLK 可证明 TRF7960在6、6MHz 下工作正常

    对于此测量、 我使用以下代码:

    void startRFIDTask (void const *参数)

      
       Trf796xTurnRfOn();       
       Trf796xWriteIsoControl (0x02);

     for (;;)
       {
          WRITE[0]=调制器控制;
          写入[1]= 0x21;                //// OOK 100% 6.78MHz
          Trf796xWriteSingle (写入、2);
       
          WRITE[0]= 0x49;
          Trf796xReadSingle (&write[0]、1);
          
          osDelay (1);    
          }
     /*用户代码结束 startRFIDTask */

    空 Trf796xTurnRfOn (空)

       命令[0]= CHIP_STACE_CONTROL;
       命令[1]= 0x20;
    //Trf796xReadSingle (&command[1]、1);
    //   command[1]&= 0x3F;
    //   命令[1]|= 0x20;
       Trf796xWriteSingle (命令、2);

    void Trf796xWriteIsoControl (uint8_t ISO_control)

       uint8_t writing[4];
       
       //Escritura en registro 0x01
          写入[0]= ISO_CONTROL;
          写入[1]= ISO_CONTROL;
          write[1]&= 0xDF;// BIT5 A 0参数建立的 RFID 模式
          Trf796xWriteSingle (写入、2);
       
          ISO_CONTROL &= 0x1F;
       
       //Escritura en registro 0x0D
          WRITE[0]= IRQ_MASK;
          写入[1]= 0x3E;
          Trf796xWriteSingle (写入、2);
       
       //Escritura en registro 0x09
       // nota:elegir 模量 OOK/ASK (0x21/0x20)
          WRITE[0]=调制器控制;
          写入[1]= 0x21;                //// OOK 100% 6.78MHz
          Trf796xWriteSingle (写入、2);

       //Escritura en registro 0x06
          WRITE[0]= TX_PULSE_LENGTH_CONTROL;
          写入[1]= 0x80;                //9.44us
          Trf796xWriteSingle (写入、2);
          
       //Escritura en registro 0x07
          WRITE[0]= RX_NO_RESPONSE_WAIT_TIME;
          写入[1]= 0x14;             // 755us
          Trf796xWriteSingle (写入、2);
          
       //Escritura en registro 0x08    
          WRITE[0]= RX_WAIT_TIME;
          写入[1]= 0x1F;                //23us
          Trf796xWriteSingle (写入、2);
       
       //Escritura en registro 0x0A
          写入[0]= RX_SPECIAL _SETTINGS;
          写入[1]= RX_SPECIAL_SETTINGS;
          Trf796xReadSingle (&write[1]、1);
          write[1]&= 0x0F;
          write[1]|= 0x40;                //带通200kHz 至900kHz
          Trf796xWriteSingle (写入、2);
          
       //Escritura en registro 0x10
          WRITE[0]=特殊函数;
          write_1]=特殊函数;
          Trf796xReadSingle (&write[1]、1);
          write[1]|= 0xEF;//位4 A 0->已建立时间网格
          Trf796xWriteSingle (写入、2);

    为了捕获示波器、我生成了一个循环、MCU 在其中连续配置和读取调制器控制寄存器。  n´t、我使用 Trf796xWriteIsoControl (uint8_t ISO_control)功能来配置 TRF、但使用此函数、我不会像使用循环那样配置寄存器。 Trf796xWriteIsoContro 是 TI 推荐的代码 sloc251的副本、代码中可能存在 soming 错误?

    谢谢

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

    Jiseba 您好!

    可以看到 SYS_CLK 输出符合预期。

    sloc251代码中的该函数没有任何问题、它在我尝试使用它的所有 TI 处理器上都可以正常工作。

    您的 TRF7960A 启动顺序是什么? 也许您是在晶体启动并稳定之前写入寄存器? TRF7960A 的启动时间大约为5mSec、您可以通过读取寄存器0x0F 并在器件启动后查看 B7来检查晶体的稳定性。

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

    您好 Ralph、

    查看数据表、在0x0F 寄存器中、B7未使用、B6是晶体振荡器 stabe 指示器、我要求这样做以确保。 我知道 、如果晶体稳定、该位应该是高电平吗?

    检查 B6后、我开始启动启动序列?

    谢谢、

    Joseba

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

    啊、是的、我是指 B6、抱歉。 这就是我试图从内存中说话而不进行双重检查的结果... 我的差。 )

    正确、验证 B6是否设置为高电平后、您将完成启动序列。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢、工作正常