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.

[参考译文] TMS570LC4357:UART TX DMA

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/986077/tms570lc4357-uart-tx-dma

器件型号:TMS570LC4357

大家好、我已经为微控制器上的一个 UART 通道配置了传输 DMA 功能。 我正在通过检查 HBC 和 BTC 标志来检查 DMA 完成状态。 我希望这些标志在成功发送请求的字节后被置位。 但我看到、虽然 TX DMA 缓冲区中有字节、但接口正在设置这些错误地指示操作已完成的标志。 这会导致接收端受到监控时 TX 数据损坏

请告诉我、这里可能会发生什么情况。

谢谢、

Kishore

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

    您好  Kishore、

    当产生 BTC 中断时,传输的数据数是否等于 FRCNT*ELCNT?  

    请尝试以下应用手册中的示例 CCS 项目:

    www.ti.com/.../spna213.pdf

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

    大家好、我不使用 DMA 中断。 这将对我们的处理周期产生影响。 相反、我们要对其进行轮询、因此我目前正在轮询 HBC 和 BTC 标志、以设置为假设我之前启动的 DMA 传输已成功完成。

     

    但这会留下少量字节仍在 DMA 缓冲区中进行传输。 因此、我正在寻找一些查询 DMA 传输完成状态的好方法。

     

    谢谢、

    Kishore

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

    BTC 标志只有在最后一帧的最后一个元素被传输后才被置位。 您的 DMA 缓冲区中的数据(由 DMA 源地址定义)应该被传输。

    如果您想要传输位于 DMA 缓冲区中的8个字节、当 BTC 标志被置位时、SCI 模块只传输6个字节。 其他2个字节保留在 SCI 寄存器(移位寄存器和缓冲寄存器)中。  

    简单的权变措施是在 DMA 缓冲器中添加额外的2个虚拟字符。  

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

    谢谢王。 我无法传输虚拟字节、因为接收器将受到影响。 因此、我添加了一个额外的等待、以允许从移位寄存器传输字节。 我能够解决这个问题。 非常感谢。