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.

[参考译文] RTOS/TRF7970A:读取 TRF7970失败。

Guru**** 2595770 points
Other Parts Discussed in Thread: MSP430FR5969, MSP430G2553, MSP-EXP430G2ET, DLP-7970ABP, TRF7970A

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

https://e2e.ti.com/support/wireless-connectivity/other-wireless-group/other-wireless/f/other-wireless-technologies-forum/815832/rtos-trf7970a-reading-trf7970-failed

器件型号:TRF7970A
主题中讨论的其他器件:MSP430FR5969MSP430G2553MSP-EXP430G2ETDLP-7970ABP

工具/软件:TI-RTOS

大家好、

MSP430FR5969 - TRF79790 - NTAG213  

1)这里、我使用 MSP 从使用 TRF7970 IC 的 NTAG213读取数据。 我有 TI 库、这些库对读取数据非常有用  

void Iso14443aLoop (u08_t 级联_level、u08_t NVB、u08_t * uid)
{
u08_tI = 0;
u08_tnvbytes = 0、nvbits = 0、xbits = 0、found = 0;
u08_t new_uid[4];
u08_t select、new_uid1[4]、coll_at1、nvbits1;
u08_t 级联_level1;
#ifdef enable_host
u08_t RSSI[2];
#endif

while (级联_level < 4)
{
开关(级联电平)
{
案例1:
SELECT = 0x93;
中断;
案例2:
SELECT = 0x95;
中断;
案例3:
SELECT = 0x97;
中断;
默认值:
中断;
}

if ((NVB & 0x0F)!= 0x00)
{
nvbytes =(NVB >> 4)- 2;//已知有效字节的数量
Xbits = NVB & 0x07;//已知有效位的数量

//在 UID 计算中都使用这两种方法
对于(i = 0;i < xbits;i++)
{
nvbits =(nvbits << 1)+ 1;
}
}
RX_ERROR_FLAG = 0;
coll_poss = 0x21;
RxTx_state = 1;//响应将向上存储在 buf[1]中
Iso14443a SelectCommand (SELECT、NVB、uid);

//while (coll_poss < 0x20){
//if (i_reg =0x00){
//中断;
//}
//}; 

如果(coll_poss = 0x20)
I_reg = 0x02;//在 coll_poss=0x20的情况下意味着没有接收到响应
for (i = 0;i < 5;i++)
...
(笑声)
(笑声)
(笑声)

。} 

我评论了这么粗体的代码、因为代码总是在那里存根、即使我使用看门狗计时器来解决问题、但我也使用 IR 传感器来检查障碍物、因此由于存根代码、IR 也无法正常工作。

2) 2) MSP 能够正确读取数据、但有时会读取另一个数据、例如、不是"a"读取"e"。  我也无法进行滤波。 我在那里使用了这样的条件:在读取数据后、我正在进行数据验证、但我仍然面临着人的问题。

对于(ui8BlockNumber = 0x04;ui8BlockNumber < 0x28;ui8BlockNumber = ui8BlockNumber + 4)
{
NFC_Type2_Read_4_Blocks (ui8BlockNumber);
_DELAY_CYCLES (400);
}
}
//////////////////////////////////////////////////////////////////////////////////////////////

if (Column_Ctr = 2)////设置密码
{
if (Rx_Data[3]= tag_1)///选择作为 NFC 标签
{
TX_Uart1_String (VALLED_CHECKSUM); 接收到具有有效校验和的//MSG

strlen_read_Data = strlen (dummy_read_array);
if ((addr1 <= 0)||(length_of _Read1 <= 0))
{
TX_Uart1_String ("*h;33#_R");
返回;
}
否则、如果(strlen_read_Data < 108) //如果 UID 和 TAG 无法完全读取
{
TX_Uart1_String ("*h;33#_L");
返回;
}

for (read_Count=0;read_Count<108;read_Count++)//如果读取数据无效
{
if ((伪读取数组[Read_Count]< 0x21)||(虚拟读取数组[Read_Count]> 0x7A)||(虚拟读取数组[Read_Count]> 0x5A &&虚拟读取数组[Read_Count]< 0x61)
{
TX_Uart1_String ("*h;33#_D");
返回;
}
}

for (;Read_Count<112;Read_Count++) //表示下一个 NULL 字符
{
if (dummy_read_array[read_Count]!= 0x00)
{
TX_Uart1_String ("*h;33#_N");
返回;
}
} 

因此、即使经过大量验证、我也无法获取正确的数据。

问题出在哪里?

此致、

Anil。

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

    Anil、您好!

    根据您发布的代码、您从~2011中提取了一个早期开发的旧示例代码、并且有许多错误。 我们现在发布了更好的软件示例、不再支持该代码。

    请下载以下示例并将其移植到您的 MCU: http://www.ti.com/lit/zip/sloc297

    该代码已多次通过 NTAG 213测试。

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

    您好、Ralph、

    是否仍在进行开发?

    如果它继续、我将停止导入编码。  

    如果它是 TI 的最终版本、那么我将继续使用此版本。 因为它给我的产品生产带来了很多问题。

    如果还有其他东西、那么请告诉我。

    谢谢、

    Anil。

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

     您好、Ralph、

    看到上载的图像、我遇到这种问题、所以我问 VLO 库的用途是什么?

    您能告诉我 VLO 库用于读取 NTAG213的用途是什么吗?

    我不需要 FeliCa、ISO14443B、ISO15693等。 因此、我将从编码中删除该部分。

    请您尽快回复、以便我继续进行此编码。 请您紧急为我提供帮助。

    谢谢、

    Anil。

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

    Anil、您好!

    这是该软件的最终版本、已经过全面测试、我们建议用于简单的 RFID 读取应用。

    我们还有一个完全开发的 NFC 堆栈、它处理对等、卡仿真和读取 NDEF 消息: http://www.ti.com/lit/pdf/sloa227

    VLO 库用于 MSP430G2553、因为 VLO 具有很大的不精确度。 MSP430FR5969不需要它、可以将其从代码中剪掉。 这样您就可以开始运行了。

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

    好的、Ralph、

    这对我来说很棒、因为从4到5个月以来、我一直在努力从 NTAG213标签获取数据、但无法正确读取和写入 

    希望这样可以解决我的所有问题。

    感谢您的友好支持。

    此致、

    Anil。

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

    是的 Ralph、

    在这里、我已经对编码进行了更改、但代码不会从 NFC 标签读取数据

    这是代码、您能告诉我问题是什么。

    e2e.ti.com/.../NFC_5F00_REDAING_5F00_CODE.zip

    请仔细查看并告诉我我需要做什么?

    请参见此处的 MCLK = 16MHz

    SMCLK = 8MHz

    ACLK = 10kHz

    IRQ、使能、SPI、UART 等的引脚根据我的硬件进行了更改。 和   TRF79xxA_setTrfPowerSetting (TRF79xxA_5V_FULL_POWER);     //更改、而不是3V、我将使用5V、因为在硬件中、它连接到5V。

    您能否将原始代码的硬件原理图发送给我、以便我在这里判断某个问题?

    即使我尝试使用 MCLK = 8MHz 并且 SPI 频率为1/2/4MHz,但我仍然会遇到读取标签的问题。

    我在之前的代码中观察到的另一件事是、如果硬件(天线)与电源线接触、那么它会给我带来垃圾价值。 这个问题实际上是什么?

    谢谢、

    Anil。

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

    Anil、您好!

    这个设置和代码对于您的设置太特别、我无法轻松调试。 如果您可以在 MSP430FR5969 LaunchPad 上尝试此操作、我可以尝试进行评论。

    原理图仅为 MSP-EXP430G2ET LaunchPad 和 DLP-7970ABP BoosterPack ... 没什么特别的

    我建议您使用逻辑状态分析器或示波器来解码 SPI 信号、并确保代码正确控制 MCU 以便与 TRF7970A 进行通信。

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

    您好, Ralph,

    我用8MHz - MCLK 和 SMCLK - 8MHz 尝试了相同的代码,然后得到结果。  

    根据我的知识、该代码是为8MHz 设计的、我无法以16MHz 的主频率进行移植。  

    由于在两种情况下 MCLK 均为8或16 MHz、因此 SPI 频率相同为2MHz 或4Mhz。

    SPI - 2或4Mhz 均使用8MHz 主频率(MCLK)。

    让我们看看。 我将首先使用8MHz 完成开发、然后尝试使用 MCLK 16MHz。

    谢谢、

    Anil。

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

    Anil、您好!

    如果更改至16MHz 是问题所在、那么您的计时器可能未进行调整、并且运行速度是原来的两倍。 这是延迟之外的另一个基于时间的调整。

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

    您好 Ralph、

    是的、您是对的、

    因此、我更改了 MCLK = 16MHz 并将 DELAY_TIME 更改为16000、SPI 频率从4MHz 更改为8MHz。 在这一变化之后、它开始工作。

    我现在不会遇到读取 NFC (NTAG213)标签的任何问题。

    感谢您的支持。 最后我完成了编码。

    此致、

    Anil。

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

    您好 Ralph、

    我检查了您发送给我的已更新文件,并根据我的应用程序进行了上述更改和一些其他更改。  

    我运行6000次读取-写入标签(大约48小时)(NTAG 213)。 其中、我有41个损坏的数据、我无法处理这些数据。 因为如果我保持数据验证、我也无法验证、因为垃圾邮件是以不像 junks 的字符出现的。  

    我正在读取 NFC 标签上的110个字符、这是可以的吗?  

    我要写16个字符。 我在写作时没有遇到任何问题、只读有问题。

    如果是这种情况、我就不能继续了。  

    为此、我需要一个强大的解决方案。

    如果数据读取被破坏、那么软件本身为什么不会进行任何拒绝或读取失败?

    已经存在了、但这并没有为我提供100%的精度。

    我现在该怎么办?

    Anil。

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

    Anil、您好!

    您如何确定数据是否损坏? 您是否看到 FIFO 缓冲区内或 PC 输出上的损坏? 如果仅在 PC 上、则应获得 SPI 示波器、并查看损坏的数据是否实际来自 TRF7970A FIFO 缓冲区、或者您的应用是否是损坏的原因。 器件将始终检测错误接收的数据、并报告处理的错误、如 CRC 错误。

    或者、您是否实际看到"损坏"是由于奇偶校验或 CRC 错误等错误导致读取失败? 根据您的意见、听起来不是这样、但如果是这样、我可以更详细地解释一下这种情况。

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

    您好、Ralph、

    FIFO 缓冲区意味 着 g_pui8TrfBuffer  该缓冲区只有您在讨论?  

    所以            NFC_read_array[NFC_read_counter++]=g_pui8TrfBuffer[ui8LoopCount1];

    我正在将此缓冲区数据复制到缓冲区中、我正在进行数据验证、因此我如何进行数据验证-我知道数据中保存了哪些数据、因此我正在验证数据是否正确。

    例如:  

    #*g;1;04:17:75:FA:6D:4D:81;0000051300C;d63286c17ve3a309ade26c58a9bad23540ef1d7db244db37f8afc48dec0bf9f0;03-29-2019;0003000;0001361; ;35#
    
    #*g;1;04:17:75:FA:6D:4D:81;0000051300C;d63286c172e3a309ade26c58a9bad23540ef1d7db244db37f8afc48dec0bf9f0;03-29-2019;0003000;0001361; ;79#
    

    这就是我通过 UART 获得的数据 LIGHT 的含义。 我尚未使用 SPI 示波器进行检查。

    这是我的数据的格式、这就是我的数据被破坏的方式。 我得到了所有正确的结果、但1个字符已损坏。

    现在、您可以清楚地识别问题。

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

    Anil、您好!

    如果器件未以 CRC 错误进行答复、这就是您观察损坏的方式、那么 UART 输出很可能会出现问题、尤其是在 UART 显示的是"v"、与字符串的其余部分不同、该字符甚至不是十六进制字符的情况下 只包含十六进制字符。

    不过、如果您想完全验证器件不是根本原因、则需要在此时使用示波器检查 SPI 线路、但实际上 UART 会在十六进制字符串中显示"v"、 仅凭这一点就可以很好地证明 UART 存在问题。

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

    是的 Ralph、

    您的观点是正确的。 我要做的是进行验证、如果我获得的字符不是'A'到'f'字符、那么我将放弃该字符串、我将再次尝试读取数据。

    这可能是一个电压问题、但我使用了 RS232、因此我认为它将处理电压电平。 那么、该 UART 是如何给我造成问题的呢?

    可能是因为我的板由另一个板供电、而不是直接由适配器供电、也可能是因为电源问题、我也可能会遇到此数据损坏问题?

    因为 Ralph、我观察到的是、对于系统(PC)、我使用 dock-light 进行检查、然后得到正确的结果。 我在这里使用的是电源适配器、但对于其他微控制器 UART 到 UART 的通信、我只观察到这种错误。

    我可以做些什么来解决这个 UART 问题。 如果我遇到错误、我也无法使用 RS232、那么我需要在硬件级别尝试什么?

    感谢您的澄清。

    ANI。

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

    Anil、您好!

    我对该 MCU 不够熟悉、因此我不知道自己。 我建议在 MSP430论坛上发布问题、以获取他们的专家反馈: https://e2e.ti.com/support/microcontrollers/msp430/f/166

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

    好的、Ralph、

    我将在 MSP430论坛中发布与 UART 相关的相同问题。  

    感谢您对我的大力支持。 你对我帮助很大。

    希望事情会稳定下来、否则我会回来的。

    此致、

    Anil。