彩虹天空cc 发表于 2025-6-5 17:17

CH592的BLE+USB应用冲突怎么解决

例程BLE主机模式加入USB CDC功能后,BLE偶尔会占用系统时间过久,造成USB掉线,有没有好的解决办法

WCHTECH75 发表于 2025-6-5 19:47

BLE是主循环查询,tmos任务和回调实现通常不会占用太长时间,可以查看下程序中是否有其他事件处理事件较长或开启睡眠低功耗导致usb掉线。

dffzh 发表于 2025-6-6 08:56

是已经通过实际测试仿真确认了BLE占用系统时间太久了?

彩虹天空cc 发表于 2025-6-6 08:58

在CONFIG.h中已经把HAL_SLEEP设为FALSE
把BLE任务屏蔽掉,USB就不会掉线,不然偶尔会掉线

彩虹天空cc 发表于 2025-6-6 09:04

我usb是这样做的

彩虹天空cc 发表于 2025-6-6 09:07

串口打印显示USB过一会就自己掉线
Discovering...
Device 1 - Addr 38 c8 c6 36 31 36
Device 2 - Addr 2b d7 58 41 b2 7c
Device 3 - Addr 2a d9 3d 2f 35 c2

收←◆Device 4 - Addr 99 ba 60 59 2c 14
Device 5 - Addr b0 3d fd 22 39 3d
Device 6 - Addr d4 a0 a5 1 30 75
Device 7 - Addr b5 5a f d8 e5 9
Device 8 - Addr 75 a3 d7 5a 82 2

收←◆Device 9 - Addr 7b 38 a2 c5 80 68
Device 10 - Addr 8d 1 24 52 16 c1

收←◆SET_ADDRESS:48
str 3
str 3
str 0
str 0
str 2
str 2

收←◆SET_CONFIGURATION
GET_LINE_CODING:0
ctl 00 00
SET_LINE_CODING
21 20 00 00 00 00 07 00
LINE_CODING 0 115200 8 1 0
GET_LINE_CODING:0
str 0
str 0
str 0
str 0
str 1
str 1
str 1
str 1
str 2
str 2
str 2
str 2

收←◆ctl 00 00

收←◆ctl 00 00

收←◆Device not found...

低语之树 发表于 2025-6-6 09:41

在使用 沁恒 CH592 开发 BLE + USB 同时工作的应用时,确实可能出现资源冲突或接口竞争的问题,比如:

BLE 占用主频高、中断多,干扰 USB 时序;
USB 使用独立端点和中断系统,与 BLE 堆栈冲突;
SRAM/Flash 空间分配不合理;
某些引脚(如USB D+/D-)与外设复用冲突;

彩虹天空cc 发表于 2025-6-6 09:54

最后发现关闭DCDC POWER就好了
#if (defined(DCDC_ENABLE)) && (DCDC_ENABLE == TRUE)
    PWR_DCDCCfg(ENABLE);
#endif

绝影孤狼 发表于 2025-6-9 08:27

这个问题可能是由于资源冲突引起的。你可以尝试调整BLE和USB的优先级,或者优化BLE的数据传输速率,减少对系统资源的占用。

暖茶轻语 发表于 2025-6-9 14:49

这个问题可能是由于BLE和USB共用系统资源导致的。你可以尝试优化BLE的代码,减少其占用系统时间,或者使用中断服务来管理BLE和USB的数据传输。

绝影孤狼 发表于 2025-6-9 15:22

这个问题可能需要对CH592的固件进行优化。你可以尝试调整BLE和USB的优先级,确保USB通信不会因BLE占用时间过长而中断。

暖心小太阳 发表于 2025-6-9 15:43

这个问题可能是由于资源冲突导致的。建议检查BLE和USB的中断优先级设置,确保USB的优先级更高。

tpgf 发表于 2025-6-25 10:12

使用时间片分配方案:
void TMOS_SystemProcess() {
    if(USB_IsActive()) {
      TMOS_TimeUpdate(10); // USB活跃时分配更多时间
    } else {
      TMOS_TimeUpdate(5);
    }
}
页: [1]
查看完整版本: CH592的BLE+USB应用冲突怎么解决