【WCH蓝牙系列芯片】-基于CH585开发板—蓝牙串口透传BLE_UART中,实现睡眠状态下收发数据

-------------------------------------------------------------------------------------------------------------------------------------

  在CH585芯片中,最常用的就是蓝牙转串口功能,但是绝大数多情况下,使用这样的功能都是需要开启低功耗功能,但是在开启低功耗状态,CH585的串口不能直接唤醒芯片,导致数据不能接收和发送到蓝牙上,得需要通过触发GPIO外部中断的方式来唤醒低功耗状态,然后再重新初始化串口功能,再着进行串口收发功能,所以再这个BLE_UART的例程基础上,添加低功耗睡眠功能程序,再通过GPIO外部中断功能,实现串口收发也能在低功耗模式下进行操作。

1、开启低功耗功能,直接在工程宏定义处直接就可以开启

image

2、添加外部中断程序

image

image

  然后再sleep函数中,通过判断串口的那两个脚来触发中断,由触发的标志位来退出睡眠状态。

3、添加TMOS任务事件,来清除flag_sleep唤醒标志位,从而让串口发送完数据之后,蓝牙又重新进入低功耗状态。

image

  并且再任务,还要判断一下串口发送数据给蓝牙时,这个串口数据是否已经全部发送完成,需要再app_uart_process函数中,加上判读发送完成的逻辑程序,这样才能将Serial_RxFlag = 1;

image

4、在蓝牙数据接收的回调函数中,蓝牙将手机APP(BLE调试助手)上发送的数据接收到之后,也是需要先通过至标志位状态,来退出睡眠状态,随后还需要将串口重新初始化一遍之后,再将蓝牙数据通过串口发送出去。

image

  因为之前写的UART_to_BLE_EVT的任务事件是以1秒的循环时间来运行的,所以他会一直检测flag_sleep标志位,只要这个flag_sleep标志位为1后,说明就已经退出睡眠状态,这个时候就需要判断是否要重新进入休眠。

5、通过功耗分析仪可以直观的看到整个睡眠-唤醒-再睡眠的过程。

image

 

posted on 2026-02-27 23:32  凡仕  阅读(87)  评论(0)    收藏  举报