请问CH579使用USB通讯时,如何开启蓝牙低功耗呢?

请问CH579使用USB通讯时,如何开启蓝牙低功耗呢?

我们的低功耗是通过睡眠来实现的,单片机在进入睡眠状态时,USB模块是停止工作的,但是由于配置了RB_UC_DEV_PU_EN强制上拉,根集线器不会判断为设备断连,主机也就不会移除USB设备。若此时主机给USB设备发送数据,而设备的USB模块停止工作而不能及时应答,主机可能会主动移除USB设备导致断连,设备需要再次经过枚举才能连上。

可以自行设置一个标志,检测USB模块是否处于工作中。在即将进入睡眠时判断标志,若仍在收发数据,就跳出而不进入睡眠状态。


HAL_SLEEP是在宏定义开启,如何在工作中关闭不进入睡眠呢?


HAL_SLEEP只用于睡眠功能的使能,进入睡眠需要调用进入低功耗睡眠模式的函数,对于58x系列的单片机函数名为CH58X_LowPower。

手动设置一个flag标志,在枚举收到令牌包时,这个flag置位,表示USB正在工作中。在调用CH58X_LowPower前或是在函数中添加对flag的判断,若判断为USB仍在工作中则直接return,不继续执行睡眠模式的启动。

当USB数据传输完毕,用户从USB接口拔掉设备时,flag需要清除标志位。可以向主机发个数据包看主机是否有应答,或者是读D+D-两脚上的电压是否都没有上拉,来判断设备是否手动拔出。若已经拔出,flag标志清除,则可以进入低功耗睡眠。


只有登录才能回复,可以选择微信账号登录