STM32
直播中

李星童

7年用户 998经验值
私信 关注
[问答]

stm32wb55在串口发送大量数据时BLE会大概率断开连接,为什么?

如标题,我的串口在定时循环发送一个达10K左右的大数据包,两秒一次,波特率115200,间隔时间内是够发完的。
发送时蓝牙信号可以搜索到,但连接后停几秒就会自动断开,请问可能是什么原因?
串口通过DMA发送,中断方式也试过了,都会影响
测试发现如果只发几十个字节则没有问题。但我必须要整包发出去,,,不知道为什么不阻塞还会影响cpu2的蓝牙连接
另外,发送大量数据是蓝牙连接需要的时间也大幅增加
请大佬解答,谢谢

回帖(1)

LL-LING宁

2024-5-20 17:30:12
在这种情况下,STM32WB55在串口发送大量数据时BLE断开连接的原因可能有以下几点:

1. **CPU资源竞争**:STM32WB55具有两个CPU核心,CPU1负责应用处理,CPU2负责无线通信(包括蓝牙)。当你在CPU1上进行大量数据的串口发送时,可能会占用大量的CPU资源,导致CPU2的性能受到影响,从而影响蓝牙连接的稳定性。

2. **DMA冲突**:虽然你提到使用了DMA发送数据,但如果DMA通道与蓝牙通信使用的DMA通道相同或存在资源竞争,可能会导致蓝牙通信受到影响。

3. **中断处理**:在使用中断方式发送数据时,如果中断优先级设置不当或者中断服务程序执行时间过长,可能会影响蓝牙通信的正常进行。

4. **蓝牙连接超时**:在大量数据发送过程中,如果蓝牙连接的保活机制(如定期发送信标或心跳包)受到影响,可能导致蓝牙连接超时断开。

为了解决这个问题,你可以尝试以下几种方法:

1. **优化代码**:检查并优化你的代码,确保在发送大量数据时不会占用过多的CPU资源。

2. **调整DMA设置**:确保DMA通道分配合理,避免与蓝牙通信的DMA通道产生冲突。

3. **优化中断处理**:调整中断优先级,确保中断服务程序尽可能简洁高效。

4. **调整蓝牙连接参数**:尝试调整蓝牙连接的超时时间、信道选择等参数,以提高连接的稳定性。

5. **分包发送**:如果可能,可以考虑将大量数据分包发送,以降低单次发送对系统资源的影响。

希望这些建议能帮助你解决问题。如果问题仍然存在,请提供更多详细信息,以便进一步分析。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分