修改phy只支持1M

eddy wen · 5次点击 · 11小时前


1.6621E 默认是可以支持1M和2M,如果应用端只是想设置支持1M需要修改代码,修改如下:


static uint8_t supp_featue[8];
static void change_ll_feature(void)
{
  uint8_t *p_supp_feature = (uint8_t *)(*(uint32_t *)0x200097e8);
  memcpy(&supp_featue[0], p_supp_feature, 8);
  supp_featue[1] &= ~(0x01);
  *(uint32_t *)0x200097e8 = (uint32_t)&supp_featue[0];
}
int main(void)
{
 
    ble_stack_config();
    om_ble_enable(NULL);   

   softdevice_ble_evt_handler_set(on_ble_evt);

   

    change_ll_feature();//需要放在co_sche()前面
    co_sche();


   

}

2.修改后抓包结果如下截图

image.png

第4个字节0X21表示支持LE Encryption和LE Data Packet Length Extension ,2M是LE 2M PHY对应的BIT8,这里是0

(第5个字节是0X00)表示不支持,具体可以参考BLUETOOTH CORE SPECIFICATION文档里面的  Link Layer Feature说明,

下面的截图是5.2版本的文档

image.png



被收藏 0  ∙  0 赞  
加入收藏
点赞
0 回复  
善言善语 (您需要 登录 后才能回复 没有账号 ?)

请先登录网站