eefocus_4231172 发表于 2026-6-27 12:19:38

【Telink - 泰凌 TL322X 开发板】- BLE Coded Phy远距离通信设置篇

本帖最后由 eefocus_4231172 于 2026-6-27 12:29 编辑

一、前言
1、本篇介绍,如何设置BLE的为Coded Phy模式,并通过nRF Connect手机APP软件来查看是否切换成功。
2、Coded Phy模式的好处是提高了BLE的通信距离,目前BLE中有三种模式分别为1M Phy ,2M Phy和Codey Phy,其中Codey Phy使用的1 Msym/s的调制速率来进行通信。
3、Coded Phy模式有两种模式,第一种是S=2,第二种是S=8,这两种方式体现在传输的速度和传输的距离上,其中在泰凌微的SDK默认的是S=8,默认125 kb/s的速度,长距离传输模式,详细的见下图:


二、SDK和DEMO的使用介绍
1、使用的SDK

下载地址:Telink Semiconductor/tl_ble_sdk - Gitee.com

2、使用的DEMO
路径为:tl_ble_sdk\vendor\acl_peripheral_demo

三、开发板展示


四、正文
1、app_config.h更改

如上图所示,demo中不采用安全管理和低功耗

2、调用API开启从机的Coded PHY

blc_ll_init2MPhyCodedPhy_feature();         //enable 2M/coded PHY在app.c文件中的user_init_normal函数中增加blc_ll_init2MPhyCodedPhy_feature函数,用来开启2M PHY或者Coded PHY 。
备注:如果不加blc_ll_init2MPhyCodedPhy_feature()这个函数,也是依然可以发送PHY请求,不过此时主机机会切换到到指定的PHY模式,但从机任然是1M的模式,在主机切换完毕之后,主机和从机就无法进行通讯了,所以会出现断连的现象,这一点读者朋友们请注意。

3、编写调用发送PHY请求函数

void send_Phy_to_Peer(void)
{
    static u8 fist_enter = 0;
    static u32 time_count = 0;
    if(acl_conn_periphr_num == 1)
    {
      if(fist_enter == 0){
            fist_enter = 1;
            time_count = clock_time();
      }
    }
    else
    {
      fist_enter = 0;
    }

    if((fist_enter == 1) && clock_time_exceed(time_count, 1500000))
    {
      fist_enter = 2;
      time_count = clock_time();
      blc_ll_setPhy(conn_dev_list.conn_handle, PHY_TRX_PREFER, PHY_PREFER_CODED,    PHY_PREFER_CODED,    CODED_PHY_PREFER_NONE);
    }
}
该代码的功能为,在连接上主机之后,延时1.5s,发送更新PHY为Coded Phy的请求命令,发送函数为blc_ll_setPhy,其中关键的参数为PHY_PREFER_CODED,表示采用Coded Phy的模式。

4、将send_Phy_to_Peer()函数放入主函数中

send_Phy_to_Peer();
5、使用nRF Connect手机APP软件进行连接
5.1、搜索“periphr_demo”广播名

点击CONNECT

5.2、点击CONNECT后的GATT服务表

点击右上角的三个.

5.3、点击Show log



5.4、出现如下红色框出来的log信息LE Coded说明更新为LE Coded Phy成功


6、视频演示操作
https://www.bilibili.com/video/BV1sy7n6yEMk/







页: [1]
查看完整版本: 【Telink - 泰凌 TL322X 开发板】- BLE Coded Phy远距离通信设置篇

Baidu
map