找回密码
 立即注册

微信扫码登录

查看: 67|回复: 5

[BLE SDK] 蓝牙suspend mode,串口问题

[复制链接]

1

主题

2

回帖

13

积分

英勇黄铜

积分
13
发表于 3 天前 | 显示全部楼层 |阅读模式 来自 湖南长沙
Information
说明:   建议参照本版块置顶帖内容输入必要信息
芯片型号: tlsr8258
SDK及版本: -
我想在连接的时候不进入休眠,不连接的时候进入休眠。但我开启挂起模式后,连接之后串口通信就会出现问题,数据不完整是什么情况,但如果我在连接之后将挂起模式禁止就不会出现串口通信异常。
程序是蓝牙作为从机和主控通过串口通信,主控会一直有数据发过来,这是什么情况,我在链接断开清空缓存区也不行。麻烦解惑下

比如:
一开始默认这样设置:bls_pm_getSuspendMaskSUSPEND_ADV)此时串口数据是不正常的。
此时如果按照以下情况写,有不同的问题
1、如果这样写,串口接收发正常
if(连接蓝牙)
{
bls_pm_getSuspendMaskSUSPEND_DISABLE            
}

2、如果这样写,串口接收发异常
if(连接蓝牙)
{
bls_pm_getSuspendMaskSUSPEND_DISABLE            
} else{

bls_pm_getSuspendMaskSUSPEND_ADV

}


0

主题

29

回帖

104

积分

荣耀黄金

积分
104
发表于 前天 14:35 | 显示全部楼层 来自 上海
你好:
   关于串口 PM 配置,有两个关键注意事项:一是串口收发过程中不能进入 PM,否则会丢失串口数据;二是 deepret 唤醒后,需对串口重新初始化,而 suspend 唤醒后则需重新配置 rx dma。

不过关于方案 2 的可行性,你可以通过实验验证:初始化时配置为bls_pm_getSuspendMask(SUSPEND_ADV),看看是否能正常工作

帮忙补充一个SDK及版本

0

主题

29

回帖

104

积分

荣耀黄金

积分
104
发表于 前天 14:36 | 显示全部楼层 来自 上海
你好:
   关于串口 PM 配置,有两个关键注意事项:一是串口收发过程中不能进入 PM,否则会丢失串口数据;二是 deepret 唤醒后,需对串口重新初始化,而 suspend 唤醒后则需重新配置 rx dma。

不过关于方案 2 的可行性,你可以通过实验验证:初始化时配置为bls_pm_getSuspendMask(SUSPEND_ADV),看看是否能正常工作

帮忙补充一个SDK及版本

1

主题

2

回帖

13

积分

英勇黄铜

积分
13
 楼主| 发表于 前天 21:42 | 显示全部楼层 来自 中国
TL_ZRL 发表于 2025-10-29 14:36
你好:
   关于串口 PM 配置,有两个关键注意事项:一是串口收发过程中不能进入 PM,否则会丢失串口数据; ...

您好,感谢回复,我使用的ndma方法,使用SUSPEND_ADV模式。v3.4.0.0。初始配置为bls_pm_getSuspendMask(SUSPEND_ADV)时,串口接受发不正常,我打印了下数据会有问题。此时如果连接成功后串口数据也不正常的。(除非我此时做一个标志位,只有连接成功在处理中断数据,这时候第一次连接串口正常,但断开重连数据就不正常了)我想使用第二种方式,但奇怪在于我再连接断开时候如果调用这句话bls_pm_getSuspendMask (SUSPEND_ADV),链接成功串口数据也是不正常的,但如果我在断开连接的时候把bls_pm_getSuspendMask (SUSPEND_ADV)注释,在连接成功的事件调用bls_pm_getSuspendMask (SUSPEND_DISABLE  )(要配合使用一个标志位,没连接时不处理串口数据),后面断开重连都是正常的。   你说:而 suspend 唤醒后则需重新配置 rx dma,如果使用ndma,suspend 唤醒是不需要处理的么

48

主题

310

回帖

1155

积分

版主

积分
1155
发表于 昨天 18:46 | 显示全部楼层 来自 上海
你的意思是用的bls_pm_setSuspendMask吧?而不是bls_pm_getSuspendMask

1

主题

2

回帖

13

积分

英勇黄铜

积分
13
 楼主| 发表于 昨天 21:12 | 显示全部楼层 来自 中国
TL_SW 发表于 2025-10-30 18:46
你的意思是用的bls_pm_setSuspendMask吧?而不是bls_pm_getSuspendMask

是的,是用的bls_pm_setSuspendMask。帖子写错了。不知道哪里有问题,配置bls_pm_getSuspendMask (SUSPEND_ADV)时,如果关闭或者挂起不需要初始化其他东西吧
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Telink forum ( 沪ICP备17008231号-1 )

GMT+8, 2025-10-31 21:39 , Processed in 0.101930 second(s), 21 queries .

Powered by Telink 隐私政策

泰凌微电子版权所有 © 。保留所有权利。 2024

快速回复 返回顶部 返回列表