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.

[参考译文] DLP-7970ABP:读取写 RFID 存储器位置

Guru**** 655270 points
Other Parts Discussed in Thread: MSP-EXP430F5529LP, DLP-7970ABP, TRF7970A, MSP-EXP430G2ET, TRF7960
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/other-wireless-group/other-wireless/f/other-wireless-technologies-forum/1117150/dlp-7970abp-read-write-rfid-memory-locations

器件型号:DLP-7970ABP
主题中讨论的其它器件:MSP-EXP430F5529LPTRF7970AMSP-EXP430G2ETTRF7960

大家好、

即将开始一个项目、我们需要在 RFID 中的内存块中读取数据并将数据写入其中。 我们只是想在太远之前澄清几个问题。

请注意

一些问题

  1. 通常、如果我们想要修改现有代码以便从 RFID 上的某些存储器位置读取和写入、我们该怎么做? 我们只是修改.Net 解决方案、还是还必须修改在 TI 芯片上运行的软件?
  2. 我可以告诉您通过 COM 端口进行通信。 如何以这种方式访问 RFID 的存储器位置?

提前感谢

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

    您好、John、

    我很高兴看到您对 TRF7970A 评估感兴趣。

    以下是我对您问题的回答:

    此演示将自动读取标签的整个存储器内容。 如果您希望将其限制在特定的存储器位置、则必须修改 MSP-EXP430F5529LP 固件(源文件位于:[已安装路径]\examples\boards\MSP-EXP430F5529LP_F5529LP_TRF7970A_All_NFC_modes)。 您必须修改相应的标签状态机。

    2.我不确定此示例固件是否提供 COM 端口功能来解决特定的存储器块。 很可能不会。 还有另一个适用于 MSP-EXP430G2ET LaunchPad 的示例固件(http://www.ti.com/lit/zip/sloc297)。 此固件在没有 PC GUI 的情况下工作、所有交互仅通过 COM 端口进行。 也许这个代码可以让您了解如何通过 COM 端口访问特定的存储器块。

    您尝试访问哪种标签类型? ISO15693?

    此致、

    Andreas。

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

    你(们)好、Andreas

    非常感谢您的回复

    根据您的回答、我可以再问您几个问题

    • 让运行 Windows 或 Linus 的 PC 连接 到 MSP-EXP430F5529LP 是否有意义、或者这是否是超时。 基本上、我们只是在使用 TRF7970A 的生产环境中尝试读取和写入 RFID? 您会推荐什么?
    • 是否有另一个可连接  TRF7970A 的 TI 电路板。 它还需要能够支持手持式 USB 条形码扫描仪、网络 连接、GUI 创建和 HDMI 输出

    提前感谢

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

    您好、John、

    PC 接口取决于用例。 如果需要向操作员显示内容或从操作员处获取输入、则需要 PC GUI。 如果您只想在无需用户交互的情况下写入和读取数据、则可以由 MCU 处理。

    TI 电路板(MSP-EXP430F5529LP 和 MSP-EXP430G2ET)用于评估和开发目的。 它们是通用的。 如果是采用 TRF7970A 的大规模生产产品、通常会完成结合了 MCU 和 TRF7970A 的定制电路板设计。 您的手持设备和条形码扫描仪接口也可以添加到您的定制板设计中。 如果您仍想使用 TI LaunchPad、则可能会有未使用的 I/O 引脚用于连接手持设备和条形码扫描仪(可行性取决于接口类型)。 TI LaunchPad 种类繁多(请参阅此 技术文章)、但您必须根据自己的要求选择相应的套件。 另请注意、给定的 MCU 固件需要开发工作。 除了给定的 MSP-EXP430F5529LP 和 MSP-EXP430G2ET 示例、没有现成可用的解决方案。

    如果您有其他问题、请告诉我。

    此致、

    Andreas。

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

    您好!

    一段时间以来没有反馈、因此我假设这种胎纹已解决、可以关闭。 关闭该线程后、您仍可以回复该线程、也可以创建新线程。

     此致、
    Andreas。

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

    尊敬的 Andreas:

    我离开了几个星期、很抱歉得到了延迟的回复。

    我有一个工作源代码项目、它是一个 Visual Studio 解决 方案、与 TRF7960和自定义处理器一起使用。 我需要使代码与 TRF7970A + 430一起工作。

    那么、有几个问题

    我有此代码、我想将其与 trf7970A 结合使用

    BOOL readMemBlock(UINT8 mem_block_num, BYTE *data_read_buf, BYTE *mem_lock_status)
    {
    	// Request Mode, Address Flag & Option Flag, Read cmd, UID, Block #, Data (64-bits)
    	static BYTE data[12];
    	char read_err_code[3], mem_block_lock_byte[3], tmp_str_buff[3];
    	INT8 i;
    
    	// Beginning of command
    	data[0] = 0x18;
    	data[1] = 0x60;
    	if (ISO_CONTROL & 0x02 )
    	{
    		data[1] = data[1] | 0x02; // Set to use high bit rate (26.48 kbps)
    	}		
    	data[2] = 0x20;
    
    	// Add UID
    	for (i=0; i<8; i++)
    	{
    		data[i+3] = UID_LSB[i];
    	}
    
    	// Add the block number to write
    	data[11] = mem_block_num;
    
    	// Send the command
    	if (!sendCmd(data, sizeof(data), COMPortNum))
    	{
    		return FALSE;
    	}
    }

    这是

    BOOL sendCmd(const unsigned char *data, size_t cmd_len, wstring COM_num)
    {
    	size_t packet_len, i;
    	BOOL retval = TRUE;
    	char *curr_cmd_pos;
    
    	// The packet length is the number of characters that will be sent via USB,
    	// not the number of bytes that will be transmitted by the TRF7960
    	packet_len = (cmd_len+7)*2;
    
    	/* Given the cmd length, create the packet */
    	char *packet = new char[packet_len+1];
    
    	curr_cmd_pos = packet;
    	curr_cmd_pos += sprintf_s(packet, 11, "01%02X000304", cmd_len+7);
    	for (i=0; i<cmd_len; i++)
    	{
    		curr_cmd_pos += sprintf_s(curr_cmd_pos, 3, "%02X", data[i]);
    	}
    	curr_cmd_pos += sprintf_s(curr_cmd_pos, 5, "0000");
    
    	// Send the command to the COM port
    	if (!comMgr->portWrite(COM_num, FALSE, packet, packet_len))
    	{
    		retval = FALSE;
    	}
    
    	delete [] packet;
    	
    	return retval;
    }
    

    • 与 TRF9760配合使用的旧处理器是 嵌入式芯片- PIC32MX5XX6XX7XX_Family) Datashee_DS60001156K。 在  TRF7970A 的新平台上实现这一切最简单的方法是什么
    •  使用 MSP-EXP430F5529LP 将代码从 TRF7960移植到 TRF7970A 是多么容易 。 代码是否应该相同?  
    • 在 TI、是否可以与其他人就此致电、以加快解决这些问题、因为我们面临着时间压力?

    提前感谢

    John

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

    尊敬的 Andreas:

    我忘记说我正在使用这些标签

    https://www.verigenics.com/gammatag-rfid-tags.htm

    谢谢

    John

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

    尊敬的 Andreas:

    我离开了几个星期、很抱歉得到了延迟的回复。

    我有一个工作源代码项目、它是一个 Visual Studio 解决 方案、与 TRF7960和自定义处理器一起使用。 我需要使代码与 TRF7970A + 430一起工作。

    那么、有几个问题

    我有此代码、我想将其与 trf7970A 结合使用

    BOOL readMemBlock(UINT8 mem_block_num, BYTE *data_read_buf, BYTE *mem_lock_status)
    {
    	// Request Mode, Address Flag & Option Flag, Read cmd, UID, Block #, Data (64-bits)
    	static BYTE data[12];
    	char read_err_code[3], mem_block_lock_byte[3], tmp_str_buff[3];
    	INT8 i;
    
    	// Beginning of command
    	data[0] = 0x18;
    	data[1] = 0x60;
    	if (ISO_CONTROL & 0x02 )
    	{
    		data[1] = data[1] | 0x02; // Set to use high bit rate (26.48 kbps)
    	}		
    	data[2] = 0x20;
    
    	// Add UID
    	for (i=0; i<8; i++)
    	{
    		data[i+3] = UID_LSB[i];
    	}
    
    	// Add the block number to write
    	data[11] = mem_block_num;
    
    	// Send the command
    	if (!sendCmd(data, sizeof(data), COMPortNum))
    	{
    		return FALSE;
    	}
    }

    这是

    BOOL sendCmd(const unsigned char *data, size_t cmd_len, wstring COM_num)
    {
    	size_t packet_len, i;
    	BOOL retval = TRUE;
    	char *curr_cmd_pos;
    
    	// The packet length is the number of characters that will be sent via USB,
    	// not the number of bytes that will be transmitted by the TRF7960
    	packet_len = (cmd_len+7)*2;
    
    	/* Given the cmd length, create the packet */
    	char *packet = new char[packet_len+1];
    
    	curr_cmd_pos = packet;
    	curr_cmd_pos += sprintf_s(packet, 11, "01%02X000304", cmd_len+7);
    	for (i=0; i<cmd_len; i++)
    	{
    		curr_cmd_pos += sprintf_s(curr_cmd_pos, 3, "%02X", data[i]);
    	}
    	curr_cmd_pos += sprintf_s(curr_cmd_pos, 5, "0000");
    
    	// Send the command to the COM port
    	if (!comMgr->portWrite(COM_num, FALSE, packet, packet_len))
    	{
    		retval = FALSE;
    	}
    
    	delete [] packet;
    	
    	return retval;
    }
    

    • 与 TRF9760配合使用的旧处理器是 嵌入式芯片- PIC32MX5XX6XX7XX_Family) Datashee_DS60001156K。 在  TRF7970A 的新平台上实现这一切最简单的方法是什么。 是否有一个文档描述了如何使用 Microchip 代码和移植到 TI 430平台来移植 SPI 读取和写入?
    •  使用 MSP-EXP430F5529LP 将代码从 TRF7960移植到 TRF7970A 的容易程度 如何?
    • 在 TI、是否可以与其他人就此致电、以加快解决这些问题、因为我们面临着时间压力?

    提前感谢

    John

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

    您好!

    很抱歉耽误你的回答。 我不在办公室。
    我必须赶上许多线程、因此请耐心等待、直到我能够处理您的请求。

     此致、
    Andreas。

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

    您好、John、

    遗憾的是、没有其他 MCU 平台的移植指南可用。 但有两个示例固件可用(请参阅 常见问题解答文档中的第1.3章)。 也许最好的战略方法是从这两个例子中的一个作为基准开始。

    将一个代码从 TRF7960移植到 TRF7970A 不应太复杂。 一个主要的变化是 SPI 处理(请参阅本应用手册"使用 SPI 接口与 TRF7960"中的第1.1章)。 其他差异可在文档"TRF7960和 TRF7970A 比较"中找到。 但前面提到的两个示例固件已经针对 TRF7970A 进行了定制。

    如果您需要、我们可以致电、但我并不是 TRF7970A 的代码专家。 如果您仍想打电话、请告诉我。

    此致、

    Andreas。

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

    您好!

    一段时间以来没有反馈、因此我假设这种胎纹已解决、可以关闭。 关闭该线程后、您仍可以回复该线程、也可以创建新线程。

     此致、
    Andreas。