OTP NVDS Minor重要值

⚠️
大家好. .谢谢你来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台,它将提供更好的功能,包含在主对话网站中。所有岗位和账户都已迁移。我们现在只接受新论坛的流量-请在上面发布任何新帖子//www.xmece.com/support.我们将在未来几天修复bug /优化搜索和标记。
7个帖子/ 0个新
最后发表
dlo
离线
最后看到:1个月2个星期前
加入:2017-05-26十六21
OTP NVDS Minor重要值

我想修改信标示例,从OTP NVDS中提取主要值和次要值。

在生产过程中,OTP NVDS将使用不同的值进行编程(BD地址,主要,次要),以充当各种序列号。

我是否需要在nvds_data_struct中添加一个字段来定义主要和次要字段?即。

struct nvds_data_struct {
uint32_t NVDS_VALIDATION_FLAG;//定义哪些字段有效
uint32_t NVDS_TAG_UART_BAUDRATE;// UART波特率
uint32_t NVDS_TAG_DIAG_SW;/ / Diagport配置
uint32_t NVDS_TAG_DIAG_BLE_HW;/ / Diagport配置
uint16_t NVDS_TAG_NEB_ID;// Neb会话ID
uint16_t NVDS_TAG_LPCLK_DRIFT;//低功率时钟度数
uint8_t NVDS_TAG_SLEEP_ENABLE;//开启睡眠模式
uint8_t NVDS_TAG_EXT_WAKEUP_ENABLE;/ /外部唤醒启用
uint8_t NVDS_TAG_SECURITY_ENABLE;//启用BLE应用程序的安全性
uint8_t ADV_DATA_TAG_LEN;//发布数据大小
uint8_t SCAN_RESP_DATA_TAG_LEN;//扫描响应数据大小
uint8_t DEVICE_NAME_TAG_LEN;//设备名称大小
uint8_t NVDS_TAG_APP_BLE_ADV_DATA [32];/ /广告数据
uint8_t NVDS_TAG_APP_BLE_SCAN_RESP_DATA [32];//扫描响应数据
uint8_t NVDS_TAG_DEVICE_NAME [62];/ /设备名称
uint8_t NVDS_TAG_BD_ADDRESS [6];//设备蓝牙地址
uint16_t NVDS_TAG_BLE_CA_TIMER_DUR;//默认通道评估定时器持续时间
uint8_t NVDS_TAG_BLE_CRA_TIMER_DUR;//默认通道重估定时器持续时间
NVDS_TAG_BLE_CA_MIN_RSSI;//默认最小RSSI阈值
uint8_t NVDS_TAG_BLE_CA_NB_PKT;//接收统计的默认数据包数
uint8_t NVDS_TAG_BLE_CA_NB_BAD_PKT;//移除通道时默认的坏包数

NVDS_TAG_MAJOR;//主要广告数据
NVDS_TAG_MINOR;//次要发布数据
};

然后在代码的初始化部分:

Const struct user_beacon_config_tag user_default_beacon_config = {
.uuid = {0xC3, 0x8B, 0x2D, 0x50, 0xBE, 0xE8, 0xCE, 0x52, 0x14, 0xA6, //10字节命名空间
0xF3, 0xA7, 0xC6, 0x99, 0x2F, 0x0B},//6字节实例
.major_ALT_val1 = NVDS_TAG_MAJOR, //Major值
.minor_ALT_val2 = NVDS_TAG_MINOR, //次要值
.亚博全网company_id = APPLE_COMP_ID, //Beacon公司ID
.adv_int = BEACON_ADVERTISING_INTERVAL, //发布间隔
.power = 0xC5, //Tx Power
.beacon_type = DEFAULT_BEACON_TYPE,
.url_prefix = HTTPWWW,
.url = {0 x0e,‘d’,‘我’,‘‘,‘s’,‘e’,‘米’,‘我’,互联网},
.TLM_version = 0 x00,
.TLM_used = 0 x01
};

因为我们需要在OTP上测试这个,因为它是一次性可编程的,所以很难在不浪费很多零件的情况下进行试验和错误。
谢谢你的帮助!

设备:
最迟报
离线
最后看到:11个月4天前
工作人员
加入:2016-09-16 11:16
你好,

你好,

在OTP中添加私有参数的方法不能保证有效。您可以将参数直接存储在可用的OTP地址中,并直接从该地址读取参数。

问候,
yhe_Dialog

dlo
离线
最后看到:1个月2个星期前
加入:2017-05-26十六21
你好,

你好,

所以我可以创建一个指向NVDS地址的指针,例如:

Uint16_t *nvds_tag_major = 0x20000360;//主要广告数据指针
Uint16_t *nvds_tag_minor = 0x20000364;//次要广告数据指针

Const struct user_beacon_config_tag user_default_beacon_config = {
.uuid = {0xC3, 0x8B, 0x2D, 0x50, 0xBE, 0xE8, 0xCE, 0x52, 0x14, 0xA6, //10字节命名空间
0xF3, 0xA7, 0xC6, 0x99, 0x2F, 0x0B},//6字节实例
.major_ALT_val1 = nvds_tag_major, //Major值
.minor_ALT_val2 = nvds_tag_minor, //次要值
.亚博全网company_id = APPLE_COMP_ID, //Beacon公司ID
.adv_int = BEACON_ADVERTISING_INTERVAL, //发布间隔
.power = 0xC5, //Tx Power
.beacon_type = DEFAULT_BEACON_TYPE,
.url_prefix = HTTPWWW,
.url = {0 x0e,‘d’,‘我’,‘‘,‘s’,‘e’,‘米’,‘我’,互联网},
.TLM_version = 0 x00,
.TLM_used = 0 x01
};

然后使用PLT将数据写入NVDS位置?

什么是推荐的方法来生成一个顺序数字被编程到那个NVDS存储器位置?是否有一个脚本在PLT工具来实现这一点?

感谢您一直以来的支持!

最迟报
离线
最后看到:11个月4天前
工作人员
加入:2016-09-16 11:16
你好,

你好,

不建议修改OTP NVDS。在PLT中,有一种方法将客户特定的字段刻入OTP报头中。检查UM-B-041第7.2.8节。
在您的固件中,您可以从正确的OTP字段读取并应用它。

问候,
最迟报

dlo
离线
最后看到:1个月2个星期前
加入:2017-05-26十六21
谢谢你最迟报,

谢谢你最迟报,

最后一个问题如果你能在我在文档中找到答案。OTP客户字段的内存地址是多少,这样我就可以分配MAJOR = &0xXXXX和MINOR = &0xXXXX ?

感谢您的及时支持!

dlo
离线
最后看到:1个月2个星期前
加入:2017-05-26十六21
我想我找到了

我想我找到了信息:自定义特定字段是在字地址0x7F54到0x7F60。如果这些地址被镜像到RAM上,这是否意味着变量可以在RAM地址:0x20007F54到0x20007F60中找到?

谢谢你!
dlo

最迟报
离线
最后看到:11个月4天前
工作人员
加入:2016-09-16 11:16
你好,

你好,

我不认为OTP头将镜像到RAM。在你的固件中,你需要直接从OTP读取你的自定义特定字段。

问候,
最迟报