Thread 中讨论的其他器件: CC2650、 SYSBIOS
工具与软件:
您好!
我使用的 CC2650MODA 采用2.2.8.12版蓝牙堆栈和 Simplelink SDK 6.30.01.03版。 我的应用基于 SimplePeripheral 示例。
CC2650MODA 通过 UART 连接到另一个器件、该器件每秒发送一次消息。 它可以异步接收由连接的 BLE 中央设备(PC)发送的消息并发送答案。 CC2650MODA 配置有两个特性(一个用于读取、一个用于写入) 、每个特性的长度为80个字符。
CC2650MODA 将接收到的 UART 消息复制到发送特性中、以便 BLE 中央设备(PC)通过蓝牙读取。 在收到已连接 PC 的消息后、CC2650MODA 会使用 UART 将此消息写入已连接的器件。 它将通过使用用于1秒常规消息的相同 UART 端口发送特定应答消息来回复该消息。 在这个例子中,我没有包括阅读和回答过程,以使这个例子尽可能简单。
SBP_PERIODIC_EVT_PERIOD 设置为1000、因此 SimpleBLEPeripheral_performPeriodicTask()将每秒执行一次。
SimpleBLEPeripheral_performPeriodicTask()如下所示:
SimpleBLEPeripheral_performPeriodicTask() { UARTCC26XX_read(my_Handle, &my_Buffer, 80); SimpleProfile_SetParameter(SIMPLEPROFILE_CHAR4, SIMPLEPROFILE_CHAR4_LEN, my_Buffer); }
非常简单。 问题是:
通过蓝牙连接时、我的电流消耗从1.40 mA 开始、并在2小时内降至0、7 mA。 之后、立即上升至1、7 mA、并随着时间的推移缓慢下降至0、7 mA。
我想情况是:调用 UARTCC26XX_READ 函数并等待数据传入时、UART 外设处于活动状态、阻止了睡眠模式。 电流消耗的缓慢下降可以通过连接器件和 CC2650MODA 中的时钟之间的时序差异来解释。 因此、睡眠模式被阻断的周期变得更短并且突然变为最大值1、7mA。
我已经尝试通过回调函数分段读取 UART、但这会使 UART 外设始终处于激活状态、这意味着睡眠模式永久停用、因此电流消耗始终为1、7mA。
我尝试优化应用的电流消耗、因此这个问题对于我的项目至关重要。
是否有办法停止活动的 UART 外设阻止睡眠模式? 或者优化时序以尽可能延长睡眠模式下的时间?
感谢您的时间和帮助。