4 posts / 0 new
Last post
yekun
Offline
Last seen: 2 months 7 hours ago
Joined: 2020-04-28 12:09
DA14585 获取蓝牙MAC地址;

你好,我使用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

希望有广播前获取静态唯一地址的方法。

Device: 
Martin.Ge
Offline
Last seen: 8 months 4 weeks ago
Staff
Joined: 2020-01-06 06:51
Hi Yekun, 

Hi Yekun, 

请问您的需求是设备在广播前地址便是唯一且不可改变吗? 

如果这样可以试用Public Address的类型。请参考:

http://lpccs-docs.dialog-semiconductor.com/DA145xx_Advertising_Tutorial/...

Static Address类型是在一个上电周期内保持不变,下次上电就会改变。

Br

Martin

yekun
Offline
Last seen: 2 months 7 hours ago
Joined: 2020-04-28 12:09
你好我想在 user_app_init中获取静态地址

你好我想在 user_app_init中获取静态地址

Martin.Ge
Offline
Last seen: 8 months 4 weeks ago
Staff
Joined: 2020-01-06 06:51
Hi

Hi

你所用的该寄存器BLE_BDADDRU_REG,是协议栈操作的,用户层面只能访问,协议栈只有运行起来,才会对这个寄存器赋值。

想要在user_app_init中获取静态地址,建议使用附件中的方法。

Br

Martin

Attachment: