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.

[参考译文] RF430FRL152HEVM:根据有效负载ID以单个消息发送两条NDEF记录

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

https://e2e.ti.com/support/wireless-connectivity/other-wireless-group/other-wireless/f/other-wireless-technologies-forum/1094217/rf430frl152hevm-sending-two-ndef-records-in-single-message-based-on-payload-id

部件号:RF430FRL152HEVM
主题中讨论的其他部件:TRF7970ARF430FRL152HRF430FRL153HRF430FRL154H

大家好,

我正在尝试将NDEF消息从 RF430FRL152HEVM发送 到 trf7970a,  

我得到了一个示例,其中包含单个NDEF消息" TI.com ",

/*
*非定义c
*
* RF430FRL152H仅NFC示例项目
*
*版权所有(C) 2014 Texas Instruments Incorporated - http://www.ti.com/
*
*
*以源代码和二进制形式重新分发和使用,无论是否使用
*允许进行修改,前提是满足以下条件
满足*:
*
*重新分发源代码必须保留上述版权
*注意,此条件列表和以下免责声明。
*
*以二进制形式重新分发必须复制上述版权
*注意,此条件列表和中的以下免责声明
*随提供的文档和/或其他材料
*分发。
*
*既不是德州仪器(TI)公司的名称,也不是的名称
*其贡献者可用于支持或推广衍生产品
*未经事先书面许可。
*
*本软件由版权所有者和贡献者提供
*"按原样"和任何明示或暗示的担保,包括但不包括
*仅限于对适销性和适用性的暗示担保
*不承担特定目的。 在任何情况下,版权都不应享有
*所有者或贡献者对任何直接,间接,附带,
*特殊,典型或后果性损害(包括但不包括
*限于采购替代货物或服务;无法使用,
*数据或利润;或业务中断)
责任理论,无论是合同,严格责任还是侵权行为
*(包括疏忽或其他)因使用而产生的任何原因
本软件的*版本,即使已被告知可能会造成此类损坏。
*
*/

包含"types.h"
包含"ndef.h"
#include "patch.h"
#include <string.h>

/*固件系统控制字节
*
*位0:ISOBlockSize 0 - 4字节,1 - 8字节
*位1:第0页-第1页,第1页-第0页(仅对4字节块模式有效)
*位2:ROMEUSCISupportEnabled 0-已禁用,1-已启用(在RF430FRL153H上强制为0)
*位3-5:保留ISO
*位6:NFCBridgeDisable 0 -已启用,1 -已禁用(请参阅下面的注释)
*位7:ROMSensorSupportEnable 0-已禁用,1-已启用(在RF430FRL154H上强制为0)
*
*建议在此项目中禁用NFC网桥。 可能发生意外行为,
*由于此处正在设置配置,请尝试使用它。
*
*如果需要eUSCI主机控制器部分和RF功能,则为默认项目
必须使用*。 这就是NFC在该应用程序中不受支持(因为I2C/SPI主机控制器
*控制寄存器与NFC文件位于同一位置)。 但是FRAM的其余部分
*使用ISO1.5693万,可以使用内存存储和读取数据。
*/

//此项目基于RF430FRL152H。 但是,它也适用于RF430FRL154H。
//但是,必须在固件系统控制寄存器中设置ROM_SENSOR_support_disabled (或ROMSensorSupportEnable,请参阅上述两者)。 这将在RF430FRL154H上自动强制执行。
//需要使用此设置来禁用使用块0...作为虚拟寄存器的ROM,但是需要此内存用于NDEF目的。
#define firmware_control_address 0xF867
#pragma Retain (Firmware_System_Control_Byte);
#pragma location = firmware_control_address
//此变量需要声明为"volate",以便BlockLockROM_patched函数正常工作。 但是,可以更改分配。
volatile const u08_t Firmware_System_Control_Byte = ROM_SENSOR_support_disabled + EROM_EUSI_support_disabled + NFC_bridge_disabled + four_byte_block + FIRST_ISO_PAGE;//0x7F,//此值用于设置固件系统控制寄存器

// ROM变量-请勿更改!!!
//声明为防止编译器使用
/************************************** /
#pragma保留(DS)
#pragma location = 0x1C00
u08_t DS;
#pragma保留(RF)
#pragma location = 0x1C6A
const u08_t RF;
#pragma保留(NRX)
#pragma location = 0x1CA4 //rx
const u08_t NRX[34];
#pragma保留(NTX)
#pragma location = 0x1CC6 //TX
const u08_t NTX[33];
#pragma保留(EL)
#pragma location = 0x1CF2
const u08_t EL;
#pragma保留(PF)
#pragma location = 0x1C0A
const U16_t PF[48];
/************************************** /

/*
*这是一条NDEF消息:www.ti.com
*可根据需要延长和编辑。 但是,它仅限于第一页(约968字节),
*第二页主要用于修补固件,但也可以通过NFC读取正确的命令。
*/

#define NDEF_START_ADDRESS 0xF868
#pragma Retain (NFC_NDEF_Message);
#pragma location = NDEF_START_ADDRESS;//地址的位置
const u08_t NFC_NDEF_Message[100]={

//块0
0xE1,// NDEF魔法编号
0x40,//版本号,读/写访问条件
0x79,//0x7E,// 1008字节/ 8 = 126个块
0x00,//0x04,//8字节扩展内存//0x00,//不支持读取多个块(仅限于3个块)

//块1
0x03,//存在NDEF消息
0x0B,//长度,11字节(讯息长度)
0xD1,//记录标题
0x01,//键入长度

//块2
//0x07,//有效负载长度
0x59,//有效负载长度
0x54,//记录类型U (URI)
0x02,// URI标头标识符
0x65,0x6e,//en

0x74,//'t'

//第3栏
0x69,//'I'
0x2E,//'.'
0x63,//'c'
0x6f,//'o'

//第4组
0x6D,//'m'
0xFE,// TLV终结器
0x00,//空不在乎
0x00 //空不在乎
//'h','e','l','l','h','e','l','p','h','l','q','h','e','e','h','e','h','e','''h',','''''''''''''''''''e',',''''''''''h',','''''''''''''''h',',''''''''''e','''''''h','''''''''、''''''''''''''''、''''''''''''''''、''''''''''''''''、''''''''''''''''、'''''''''''''、
0xFE,// TLV终结器

};

*************************
* initISO1.5693万
******************
*
*简介:初始化RF堆栈
*
* PARAM[IN]:参数-用于设置ISO1.5693万的配置(用于清除锁块的选项)
*
* Param[Out:无
*
*返回"无"
*********************** /
void initISO1.5693万(U16_t参数)

RF13MCTL || RF13MTXEN + RF13MRXEN + RF13MRFTOEN;//在RF13M模块上设置Rx和TX功能
//启用中断**请勿更改以下两行,这两行是正确的RF堆栈操作所必需的
RF13MINT |= RF13MRXIE + RX13MRFTOIE;//在RX上,超时时以及流检查上和下启用中断

IF (参数和clean_block_locks)

Memset (((u08_t *) fRAM_LOCK_blocks,0xFF,fRAM_LOCK_BLOCK_Area_Size);//block被零位锁定,清除FRAM和RAM锁定块
}

// BlockLockAPI (3,lock_block);//测试此API
//
// BlockLockAPI (3,check_lock);//测试此API
}

*************************
* BlockLockAPI
******************
*
*简介:锁定FRAM或RAM中的块。
*
* PARAM[IN]:block -要锁定的块。 在4字节模式下,这将锁定两个块,具体取决于所选页面。
*
* Param[Out:无
*
*返回"无"
*********************** /
u16_t BlockLockAPI (u16_t块,u08_t checkLock)

U16_t已锁定;

Locked = BlockLockROM_patched(block, checkLock);
返回锁定;
}

此示例包含单个NDEF消息,但我想发送多个NDEF记录,如" ti.com","dst.com"...在使用有效负载ID的单个消息中,请帮助我获得基于有效负载ID包括多个记录的正确格式。(请告诉我如何为每个记录设置有效负载ID)。

提前感谢

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

    Shivraj,您好!

    很抱歉回复延迟。 我上周不在办公室,很遗憾接下来的3天我都很忙。 之后我会看看你的要求。

    此致,

    Andreas。

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

    Shivraj,您好!

    NDEF标准由NFC Forum维护,并且免费提供。 请理解,TI只能支持特定于器件或产品的问题。

    此致,

    Andreas。

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

    您好 ,很抱歉 ,一定会问相关问题。

    谢谢!

    shivaraj