你好,我使用DA14585的静态唯一随机地址,在user_app_init中获取蓝牙地址还是
#define CFG_NVDS_TAG_BD_ADDRESS {0x19, 0x00, 0x00, 0x00, 0x00, 0x20}
定义的地址,而不是随机生产的地址,在使用定时器2s后获取,才是随机生成的地址;想在广播前就获得地址,因为需要广播地址
蓝牙设置
/*************************************************************************
* Privacy Capabilities and address configuration of local device:
* - APP_CFG_ADDR_PUB No Privacy, Public BDA
* - APP_CFG_ADDR_STATIC No Privacy, Random Static BDA
* - APP_CFG_HOST_PRIV_RPA Host Privacy, RPA, Public Identity
* - APP_CFG_HOST_PRIV_NRPA Host Privacy, NRPA (non-connectable ONLY)
* - APP_CFG_CNTL_PRIV_RPA_PUB Controller Privacy, RPA or PUB, Public Identity
* - APP_CFG_CNTL_PRIV_RPA_RAND Controller Privacy, RPA, Public Identity
*
* Select only one option for privacy / addressing configuration.
**************************************************************************
*/
#define USER_CFG_ADDRESS_MODE APP_CFG_ADDR_STATIC
回调设置:
.app_on_data_length_change = NULL,
.app_on_update_params_request = default_app_update_params_request,
.app_on_generate_static_random_addr = default_app_generate_unique_static_random_addr, --》改为唯一静态地址
.app_on_svc_changed_cfg_ind = NULL,
获取:
void user_app_init(void)
{
user_init_button_interrupt(GPIO_BUTTON_PORT,GPIO_BUTTON_PIN);
//LCD显示
VKL128_Init();
//保存flash相关数据
user_flash_read_set();
//获取地址
MAC_H = GetWord32(BLE_BDADDRU_REG);
MAC_L = GetWord32(BLE_BDADDRL_REG);
debug显示
MAC_H 0x00002000
MAC_L 0x00000019
而定时器成功获取蓝牙静态唯一地址为:
0x0001D66C
0xC8EE98EA
希望有广播前获取静态唯一地址的方法。
Hi Yekun,
请问您的需求是设备在广播前地址便是唯一且不可改变吗?
如果这样可以试用Public Address的类型。请参考:
http://lpccs-docs.dialog-semiconductor.com/DA145xx_Advertising_Tutorial/...
Static Address类型是在一个上电周期内保持不变,下次上电就会改变。
Br
Martin
你好我想在 user_app_init中获取静态地址
Hi
你所用的该寄存器BLE_BDADDRU_REG,是协议栈操作的,用户层面只能访问,协议栈只有运行起来,才会对这个寄存器赋值。
想要在user_app_init中获取静态地址,建议使用附件中的方法。
Br
Martin