工具与软件:
大家好!
我正在使用rfPacketRx
SDK 中的示例开发 CC1352R 以捕获 IQ 样本。 我遵循 TI 文档 SWRA571.pdf。 目前,我在回调函数中接收数据,但当我尝试使用打印此数据时Display_printf()
,回调函数停止。 我认为这是由于射频内核中的缓冲区覆盖导致的、进而导致回调停止。 我正在寻找有关如何处理缓冲区的指导、以便连续接收数据并不间断地发送到 UART。 非常感谢在这一问题上提供任何帮助。
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.
工具与软件:
大家好!
我正在使用rfPacketRx
SDK 中的示例开发 CC1352R 以捕获 IQ 样本。 我遵循 TI 文档 SWRA571.pdf。 目前,我在回调函数中接收数据,但当我尝试使用打印此数据时Display_printf()
,回调函数停止。 我认为这是由于射频内核中的缓冲区覆盖导致的、进而导致回调停止。 我正在寻找有关如何处理缓冲区的指导、以便连续接收数据并不间断地发送到 UART。 非常感谢在这一问题上提供任何帮助。
尊敬的 Yasir:
当您处于连续 Rx 中时、无线电内核会将所有传入的数据转发到应用、并触发回调函数以将数据写入缓冲区。 如果通过任何数据处理减慢回调函数的速度、它将在缓冲区溢出中结束。 如果您想观察数据接收速度有多快、我建议您在回调函数中实现 LED 切换。
相比而言、在 UART 上打印数据是一个非常慢的过程、如果您需要实施该过程、则它必须在回调函数之外、以便您不会中断它。
另外、也可以使用存储器概述功能直接从缓冲区中复制接收到的数据。
此致、
等等
当您停止获取回调时、我假定 RX 命令的状态为:
RF_cmdPropRx.status = 0x3802 (ROP_ERROR_RXFULL)
这表示 在部分读取缓冲区中接收期间超出 RX 缓冲区。
同样、这种情况很可能是因为应用程序中的操作花费的时间太长(Display_printf)、以至于缓冲区的释放速度不够快
currentReadEntry->status = data_entry_pending;
currentReadEntry =(RFC_dataEntryPartial_t*) currentReadEntry->pNextEntry;
如果要通过 UART 打印接收到的 IQ 样本、应在收到要查看的样本后执行此操作。
我认为您无法在以足够快的速度处理回调的同时打印此内容。
Siri
我想这取决于您的 UART 代码、UART 速度、使用的数据速率、缓冲区大小等
我简单地说、如果您看到回调突然停止的问题、这很可能意味着无线电由于错误而退出 RX 状态、并且该错误很可能是溢出(由于 RX 配置为无限模式、除非发生错误、否则不会退出)。
为了确认这一点、我已经要求您在错误发生时检查 RX 命令的状态。
正如应用手册所述、我们不会提供有关如何处理传入数据的任何示例代码等。 我们只需展示如何获取数据。
Siri