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.
大家好、我已经为微控制器上的一个 UART 通道配置了传输 DMA 功能。 我正在通过检查 HBC 和 BTC 标志来检查 DMA 完成状态。 我希望这些标志在成功发送请求的字节后被置位。 但我看到、虽然 TX DMA 缓冲区中有字节、但接口正在设置这些错误地指示操作已完成的标志。 这会导致接收端受到监控时 TX 数据损坏
请告诉我、这里可能会发生什么情况。
谢谢、
Kishore
您好 Kishore、
当产生 BTC 中断时,传输的数据数是否等于 FRCNT*ELCNT?
请尝试以下应用手册中的示例 CCS 项目:
大家好、我不使用 DMA 中断。 这将对我们的处理周期产生影响。 相反、我们要对其进行轮询、因此我目前正在轮询 HBC 和 BTC 标志、以设置为假设我之前启动的 DMA 传输已成功完成。
但这会留下少量字节仍在 DMA 缓冲区中进行传输。 因此、我正在寻找一些查询 DMA 传输完成状态的好方法。
谢谢、
Kishore
BTC 标志只有在最后一帧的最后一个元素被传输后才被置位。 您的 DMA 缓冲区中的数据(由 DMA 源地址定义)应该被传输。
如果您想要传输位于 DMA 缓冲区中的8个字节、当 BTC 标志被置位时、SCI 模块只传输6个字节。 其他2个字节保留在 SCI 寄存器(移位寄存器和缓冲寄存器)中。
简单的权变措施是在 DMA 缓冲器中添加额外的2个虚拟字符。
谢谢王。 我无法传输虚拟字节、因为接收器将受到影响。 因此、我添加了一个额外的等待、以允许从移位寄存器传输字节。 我能够解决这个问题。 非常感谢。