当前位置: 首页 > news >正文

Telink泰凌微TLSR8258蓝牙开发笔记(二)

在开发过程中遇到了以下问题,记录一下

1.在与ios手机连接后,手机app使能notify,设备与手机通过write和notify进行数据交换,但是在连接传输数据一端时间后,设备收到write命令后不能发出notify命令,打印错误码180 = 0xB4,GATT_ERR_DATA_PENDING_DUE_TO_SERVICE_DISCOVERY_BUSY,设备发送notify失败的原因是ios蓝牙master主机正在发现蓝牙服务,此时不允许发送notify数据。

解决办法:出现这个错误后,将发送notify失败的数据保存到一个全局数组中,并保存数据长度,设置一个标记位为1,记录当前的系统时间,将此在主循环中轮询,如果检测到这个标记位为1且时间过了500ms,之后再重发一次之前notify失败的数据,就可以成功发送了。

2.配置蓝牙串口唤醒口,cpu_set_gpio_wakeup (GPIO_WAKEUP_MODULE, Level_Low, 1);
GPIO_WAKEUP_MODULE_HIGH;设置成低电平唤醒,上拉,每次进入睡眠都会IO抖动,造成毛刺,用逻辑分析仪抓TX、RX、CTS和RTS四根线,如下图:

而如果配置成cpu_set_gpio_wakeup (GPIO_WAKEUP_MODULE, Level_High, 1);
GPIO_WAKEUP_MODULE_LOW;,则不会出现这个问题

但是我们的串口发送数据的时序已经确定是低电平唤醒,所以会遇到图一的问题,原因是上拉10K的控制中不要使用PC0~PC7,在deepsleep retention wakeup时会有短时间的抖动,产生毛刺,而我们用的串口IO和唤醒IO恰好是这几个。

 

解决办法:如果在条件允许的情况下,更改硬件连线,需要将唤醒蓝牙的IO换成PA或者PB的IO口,不要用PC的IO口,如果不能修改硬件,那么就直接不用PM_DEEPSLEEP_RETENTION_ENABLE深度睡眠模式,将其定义改成0,从而使用suspend去做低功耗,功耗在50uA左右,深度睡眠模式功耗在5uA左右

http://www.lryc.cn/news/188958.html

相关文章:

  • vue3+elementPlus:el-tree复制粘贴数据功能,并且有弹窗组件
  • JTS:10 Crosses
  • MySQL中的SHOW FULL PROCESSLIST命令
  • VsCode 常见的配置、常用好用插件
  • 深度学习问答题(更新中)
  • JavaScript 笔记: 函数
  • 2023NOIP A层联测9-天竺葵
  • react antd table表格点击一行选中数据的方法
  • 【VUEX】最好用的传参方式--Vuex的详解
  • 【.net core】yisha框架 SQL SERVER数据库 反向递归查询部门(子查父)
  • java处理时间-去除节假日以及双休日
  • 快讯|Tubi 有 Rabbit AI 啦
  • Zookeeper从入门到精通
  • 10.11作业
  • 如何对比github中不同commits的区别
  • 串的基本操作(数据结构)
  • ctfshow-web12(glob绕过)
  • hive3.1核心源码思路
  • LATR:3D Lane Detection from Monocular Images with Transformer
  • 什么是UI自动化测试工具?
  • 计算顺序表中值在100到500之间的元素个数
  • 【问题总结】级数的括号可以拆吗?
  • 抖音自动养号脚本+抖音直播控场脚本
  • uvm中transaction的response和id的解读
  • 第四节(1):EXCEL中判断一个WORD文件是否被打开
  • java.util.concurrent.locks.Condition详解
  • 选择适合变更管理的产品开发工具的要点和建议
  • 小程序 词云图 echarts-for-weixin-wordcloud
  • VScode配置Jupyter
  • java模拟GPT流式问答