BD地址外部内存

5个帖子/ 0新
最后一篇
Shuhei Matsushita
离线
最后一次露面:1年8个月前
加入:2014-01-27 06:53
BD地址外部内存

你好对话小组

我想反射BD地址,该地址读取表格的外部存储器的特定区域到DA14580。
在AN-B23第9.1章和第12章和第12.5章中,已仅针对TrimMig值描述了示例源。
关于来自外部内存读取的BD地址值,我不知道修改。
BD地址应该如何从延伸记忆中反映为DA14580?

最好的祝福

wt_dialog.
离线
最后一次露面:3年2个月前
职员
加入:2013-12-05 14:43
嗨舒河,

嗨舒河,

BD地址由Custom_nvds_get_func加载到堆栈中。

Uint8_t custom_nvds_get_func(uint8_t tag,nvds_tag_len_t * lengeptr,uint8_t * buf)
{
UINT8_T status = nvds_fail;
开关(标签)
{
案例nvds_tag_bd_address:
#ifdef bdaddr_from_otp //检查dev_bdaddr是否不是零
{
if(memcmp(&dev_bdaddr,&co_null_bdaddr,nvds_len_bd_address))
{
memcpy(buf,&dev_bdddr,nvds_len_bd_address);
* lengemptr = nvds_len_bd_address;
返回nvds_ok;
}
}
#万一
if(nvds_data_ptr-> nvds_validation_flag&bd_address_valid)
{
if(* lenderptr
{
* lengemptr = 0;
status = nvds_length_out_of_range;
}
别的
{
memcpy(buf,nvds_data_ptr-> nvds_tag_bd_address,nvds_len_bd_address);
* lengemptr = nvds_len_bd_address;
status = nvds_ok;
}
}
休息;
您可以从闪存中复制BD地址并将其分配“BUF”,而不是从OTP复制BD地址。
希望这能回答你的问题。
Shuhei Matsushita
离线
最后一次露面:1年8个月前
加入:2014-01-27 06:53
你好对话小组

你好对话小组

感谢您的回复。
我通过将从外部内存读取的BD地址复制到NVDS.C中的“BUF”来确认它很好。
感谢您的信息。

最好的祝福

最好的祝福

双524.
离线
最后一次露面:3年10个月前
加入:2016-11-22 02:10
嗨,对话

嗨,对话
我的芯片组也是14580。
我想动态地改变BD地址,因为我引用了这个艺术。
我知道我必须在nvds.c中修改custom_nvds_get_func
因此,我在char数组中准备一个bd地址:{{0x61},{0x62},{0x63},{0x64},{0x65},{0x66}}
这是我的custom_nvds_get_func:

extern char device_bd_addr [6];
Uint8_t custom_nvds_get_func(uint8_t tag,nvds_tag_len_t * lengeptr,uint8_t * buf)
{
开关(标签)
{
案例nvds_tag_bd_address:
if(nvds_data_ptr-> nvds_validation_flag&bd_address_valid)
{
if(* lenderptr {
* lengemptr = 0;
返回nvds_length_out_of_range;
}
别的
{
uint8_t buf1 [6];
Memcpy(&buf1,&device_bd_addr,nvds_len_bd_address);
* lengemptr = nvds_len_bd_address;
返回nvds_get_func(标记,lengeptr,buf1);
}
}
休息;
}
返回nvds_get_func(标记,lengeptr,buf);
}

我的调用版位于UART_SPS.C中

nvds_tag_len_t loadingptr;
uint8_t buff1 [6];
uint8_t re = custom_nvds_get_func(nvds_tag_bd_address,&lengeptr,bud1);
if(re == nvds_ok)
{
app_gapm_reset_msg_create();
app_easy_gap_advertise_with_timeout_stop();
app_easy_gap_undircated_advertise_start();
}

最终的BD地址已经完全更改(不是默认{0x00,0x00,0x00,0xca,0xea,0x80}),但其值未预期{{0x61},{0x62},{0x63},{0x64},{0x65},{0x66}}
它是0x00,0x06,0x00,0x00,0x00,0x00
怎么了?

mt_dialog.
离线
最后一次露面:57分18秒前
职员
加入:2015-06-08 11:34
嗨Double524,

嗨Double524,

我完全没有得到你想要做的事情,但是你为什么要分配一个额外的本地数组并从全局变量中拥有的数组复制BD地址,也是为什么在做你再次调用nvds_get_func()之后?

只需执行以下操作,您就可以从您所设置的Device_BD_ADDR数组中获取所需的广告地址。

案例nvds_tag_bd_address:
{
if(nvds_data_ptr-> nvds_validation_flag&bd_address_valid)
{
if(* lenderptr {
* lengemptr = 0;
返回nvds_length_out_of_range;
}
别的
{
memcpy(buf,device_bd_addr,nvds_len_bd_address);
* lengemptr = nvds_len_bd_address;
返回(nvds_ok);
}
}
休息;
}

谢谢mt_dialog.