我们的业务场景:定期扫描所有蓝牙设备,收到串口请求后,发送蓝牙设备信息。
技术实现:在BLE-CC254x-1.4.0的Demo程序SimpleBLECentral的基础上,参考SimpleBLEPeripheral。使用UART DMA ,在配置里关掉POWER_SAVING,串口接收数据使用Poll模式。蓝牙发现间隔为200ms,发现周期为2000ms。上位机发送串口请求蓝牙设备的频率为1000ms一次。
调试的时候发现一个奇怪的问题,系统运行正常,串口会隔几分钟收不到来自上位机的数据,大约1分钟后自动恢复正常。如果关闭发现蓝牙设备,串口通讯就会很正常,从不出错。
看到有人说可以修改官方的DMA Buffer的处理,在blog.itpub.net/.../ 找到一个例子,试验了一下发现没有效果。
大家有没有遇到过类似的问题呢?不胜感激。
===================================================================================================================
问题备忘录:
2014年7月18日,推测官方的DMA处理中,关于接收和发送的逻辑没有处理好,所以我就索性关闭了接收功能,定期把发现的蓝牙设备发送给上位机,再测试,没发现过死掉的情况。以后需要的话再继续研究DMA Buffer处理的函数。
非常感谢各位的回复。