This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC2541:扫描活动时使用CC2541的UART DMA

Guru**** 2558250 points
Other Parts Discussed in Thread: CC2541

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/583621/cc2541-using-the-uart-dma-of-the-cc2541-while-scanning-is-active

部件号:CC2541

我没有过多地详细介绍我的项目的具体细节,而是设计一个BLE应用程序,它基于UART命令,广播数据包,或者进入观察模式并扫描任何通告的数据包。 一旦进入观察模式,设备将保持在观察模式,直到另一个UART数据包指示设备进入休眠状态。

这些应用程序在某些功能上运行良好,但在其他功能上运行不一致。 使用CC2541 UART DMA,我可以将设备从睡眠模式唤醒,广播数据,通过UART打印出数据已广播的消息,然后再次进入睡眠模式。

困难是在扫描模式下一次,UART模块要么很少工作,要么根本没有响应。 一旦扫描处于活动状态,MCU就不会对任何UART命令作出响应,在调查DMA缓冲数据后,显然会发现接收到的数据不正确。

使用DMA例程(HAL_UART_WRITE)也会在扫描模式下产生错误,如下图所示。 UART DMA将开始正确传输数据包,但是数据会被拉长,因此接收错误。

如果有人有使用BLE简单外设(带串行接口)项目的经验,对于CC2541 (使用堆栈1.4。2),请回答,我很乐意提供其他信息或回答任何相关问题。

谢谢!

Michael