带外部存储器的BD地址

5个职位/0个新职位
最后一篇文章
松下树黑
离线
最后一次见到:1年11个月前
已加入:2014-01-27 06:53
带外部存储器的BD地址

你好对话小组

我想把从外部存储器的特定区域读取的BD地址反映到DA14580上。
在AN-B23第9.1.1章和第12.5章中,仅针对trimmig值描述了示例源。
关于从外存读取的BD地址值,不知修改。
扩展内存中的BD地址值应该如何反映到DA14580中?

致以最诚挚的问候

WT\U对话框(未验证)
嗨,舒黑,

嗨,舒黑,

BD地址由custom\u nvds\u get\u func加载到堆栈中。

uint8\u t custom\u nvds\u get\u func(uint8\u t tag,nvds\u tag\u leng\u t*lengthPtr,uint8\u t*buf)
{
uint8\u t status=NVDS\u FAIL;
开关(标签)
{
案例NVDS\标签\ BD\地址:
#ifdef BDADDR\u FROM \u OTP//检查dev\u BDADDR是否不为零
{
if(memcmp(&dev\u bdaddr,&co\u null\u bdaddr,NVDS\u LEN\u BD\u ADDRESS))
{
memcpy(buf,&dev\u bdaddr,NVDS\u LEN\u BD\u地址);
*lengthPtr=NVDS\u LEN\u BD\u地址;
返回NVDS\u OK;
}
}
#结束
if(nvds\u data\u ptr->nvds\u VALIDATION\u FLAG&BD\u ADDRESS\u VALID)
{
if(*lengthPtr
{
*长度ptr=0;
状态=NVDS长度超出范围;
}
其他的
{
memcpy(buf,nvds\u data\u ptr->nvds\u TAG\u BD\u ADDRESS,nvds\u LEN\u BD\u ADDRESS);
*lengthPtr=NVDS\u LEN\u BD\u地址;
状态=NVDS\U OK;
}
}
中断;
不用从OTP复制BD地址,您可以从flash复制BD地址并为其分配“buf”。
希望这能回答你的问题。
松下树黑
离线
最后一次见到:1年11个月前
已加入:2014-01-27 06:53
你好对话小组

你好对话小组

谢谢你的回复。
通过将从外部存储器读取的BD地址复制到nvds.c中的“buf”,我确认它工作良好。
谢谢你的消息。

致以最诚挚的问候

致以最诚挚的问候

双524
离线
最后一次见到:4年1个月前
已加入:2016-11-22 02:10
嗨,Dialog

嗨,Dialog
我的芯片组也是14580。
我想动态地改变BD地址,因此,我引用了这篇文章。
我知道我必须在nvds.c中修改custom\u nvds\u get\u func
所以我在char数组中准备了一个bd地址:{0x61},{0x62},{0x63},{0x64},{0x65},{0x66}
这是我的自定义功能:

外部字符设备地址[6];
uint8\u t custom\u nvds\u get\u func(uint8\u t tag,nvds\u tag\u leng\u t*lengthPtr,uint8\u t*buf)
{
开关(标签)
{
案例NVDS\标签\ BD\地址:
if(nvds\u data\u ptr->nvds\u VALIDATION\u FLAG&BD\u ADDRESS\u VALID)
{
if(*lengthPtr{
*长度ptr=0;
返回NVDS\长度\超出\范围;
}
其他的
{
uint8_t buf1[6];
memcpy(&buf1,&device\bd\u addr,NVDS\u LEN\u bd\u ADDRESS);
*lengthPtr=NVDS\u LEN\u BD\u地址;
返回nvds\u get\u func(tag,lengthPtr,buf1);
}
}
中断;
}
返回nvds\u get\u func(tag,lengthPtr,buf);
}

我的调用程序在uart\u sps.c中

nvds标签长度;
uint8_t buff1[6];
uint8\u t re=custom\u nvds\u get\u func(nvds\u TAG\u BD\u ADDRESS,&lengthPtr,buff1);
如果(re==NVDS\u OK)
{
app_gapm_reset_msg_create();
应用程序\u easy \u gap \u Advertised \u with \u timeout \u stop();
app_easy_gap_undirected_advertise_start();
}

最终的bd地址确实发生了更改(不是默认的{0x00,0x00,0x00,0xCA,0xEA,0x80}),但是它的值不是预期的{0x61},{0x62},{0x63},{0x64},{0x65},{0x66}
它是0x00,0x06,0x00,0x00,0x00,0x00,0x00
怎么了?

MT\u对话框
离线
最后一次见到:2个月2周前
工作人员
已加入:2015-06-08 11:34
你好,524,

你好,524,

我不完全明白你想做什么,但是为什么你要分配一个额外的本地数组并从全局变量中的数组中复制bd地址,以及为什么在这样做之后你要再次调用nvds\u get\u func()?

只需执行以下操作,就可以从已设置的设备\u bd\u addr数组中获得所需的广告地址。

案例NVDS\标签\ BD\地址:
{
if(nvds\u data\u ptr->nvds\u VALIDATION\u FLAG&BD\u ADDRESS\u VALID)
{
if(*lengthPtr{
*长度ptr=0;
返回NVDS\长度\超出\范围;
}
其他的
{
memcpy(buf,设备地址,NVDS长度地址);
*lengthPtr=NVDS\u LEN\u BD\u地址;
返回(NVDS\u OK);
}
}
中断;
}

谢谢你的对话