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:"通道挂起寄存器"在 SCI TX DMA 传输完成后绝不会清除。

Guru**** 2448780 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1282106/tms570lc4357-channel-pending-register-is-never-cleared-after-the-sci-tx-dma-transfer-is-completed

器件型号:TMS570LC4357

您好!

在 SPNU563A 20.3.1.2通道挂起寄存器(PEND)中、我看到了以下信息:

"在下列情况下、挂起位自动清零:
•在帧或块传输结束时、具体取决于通道是如何按照编程方式触发的
"TCTRL 的 tType 位字段中添加了一个数字"。

我使用卤素和 SCI DMA 示例(附件)创建了一段代码、这证明在 DMA 传输结束时、相应的挂起位(5)仍然有效。 是预期行为吗? 需要该信息才能尽快触发另一个 DMA 传输。 是否看到任何其他同步方法?

e2e.ti.com/.../DMA2.zip

此致、

塞巴斯

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

    尊敬的 Sebastian:

    Unknown 说:
    我使用卤素和 SCI DMA 示例(随附)创建了一段代码、证明在 DMA 传输结束时、相应的挂起位(5)仍然有效。 是否为预期行为?

    是的、这是 DMA 传输的预期行为。

    如果您查看上面突出显示的行、 会清楚地提到  每次将数据移出时都会生成 DMA 请求(CITXSHF 寄存器
    和 TD0均为空)。 这意味着、即使您配置 DMA 在再次移位所有字节后传输一些"x"个字节 、TXSHF 寄存器和 TD0将在右侧变为空、这意味着它将再次生成 DMA 请求标志。  

    我的意思是 、在传送所需的"x"字节数后、挂起标志将被清除、 但您不会注意到、因为 TD0变为空时、向 DMA 发出的新请求会立即执行。

    请参阅、如果您为 SCI 接收设置了 DMA、那么您可以注意到挂起的清除标志。

    在这里、我刚刚为接收创建了一个 DMA 示例:

    这里、我将在帧传输模式下接收4个字节、这意味着在我接收到每个帧后应清除 DMA 挂起标志。

    在这里、我刚刚从接收缓冲区收到了一个字符、但仍挂起标志仅为清除。 这意味着它只是在传输帧(0xFF)时设置的、并且在将帧移到接收缓冲区后被清除。

    查看即使在接收到所有帧(块传输)完成后、此处也不会设置标志通道挂起标志。

    区别在于、DMA RX 请求仅在向 SCI RD 寄存器接收到新字符后生成、而 DMA TX 请求将在 SCI TD 寄存器为空时生成。

    我在上一个示例中所做的就是在接收完所有字节后再发送一个字节(这意味着 DMA 完成了所有块传输、但我在 DMA 完成其工作后再发送一个字节)、由于 DMA 完成块传输、它不会正确处理这个额外的字节、 因此在本例中、我可以看到 SCI DMA 均流的通道挂起标志。

    我希望这澄清了您的疑问、我将在此附上我经过测试的示例。

    e2e.ti.com/.../SCI_5F00_DMA_5F00_LC4357.zip

    我希望这能澄清您对 DMA 待定标志的怀疑。

    --

    谢谢。此致、
    Jagadish。