【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]