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:DMA FIFO/端口 A-B 自动更改问题

Guru**** 2457760 points
Other Parts Discussed in Thread: HALCOGEN

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1192580/tms570lc4357-dma-fifo-port-a-b-automatic-change-issue

器件型号:TMS570LC4357
主题中讨论的其他器件:HALCOGEN

您好!

我正在开发一个代码、其中 DMA 用于接收到达 SCI 外设的事务。

该程序通常在几分钟内工作、但最终会卡住。

对其进行调试时、观察到当这种情况发生时、FIFO (有时在  spnu563a 和 CCS 中被称为端口)已从 A 更改为 B。(在标称操作期间、粉色的端口寄存器、包括 trfcount、为0)

根据我的理解、该程序不会更改 FIFO、此外、我不知道是否可以通过某种方式进行更改。

此外、在这些寄存器的命名约定中存在一些混合、如在 CCS 中的上图所示、但在 spu563中、这些字被更多地称为 FIFO、而不是端口、尽管有时这些字也被混合。

我不知道有没有对这种行为的解释、即自动从端口/FIFO A 更改为 B、或者是否有办法避免它、或者是否有办法使它返回到 FIFO/端口 A

我要提前向大家表示感谢。

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

    吉列尔莫、您好!

    您的代码是否可以共享?

    如果它可以共享、那么我们可以很容易地在最后调试您的问题

    --

    谢谢、此致、
    Jagadish。

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

    您好 Jagadish、

    恐怕我无法分享该代码、但如果您有任何猜测、我可以回答有关该代码的任何特定问题。

    我发现调试这个问题非常困难、但我认为我的主要疑问是:为什么始终使用 FIFO 的 DMA 传输关联寄存器(FAACSADDR、FAACDADDR 和 FAACTC)在某个时刻更改为使用 FIFO B 关联寄存器? 这是可控的吗?

    再次感谢、此致、

    吉列尔莫。

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

    吉列尔莫、您好!

    我会说这种变化可能会发生、因为当我们从外设寄存器读取数据并将该数据移到 SRAM 存储器(缓冲区)右侧时。

    为此、我们将对 DMA 配置执行 PORTB 读取和 Porta 写入。

    您提到的更改可能是由于此原因。

    您能否尝试在 HALCoGen 中引用 SCI DMA 示例一次?

    --

    谢谢、此致、

    Jagadish。

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

    你好、Jagadish、

    首先感谢您的回复。

    根据我的经验、FIFO A 或 B 的使用似乎与端口相关事务的存储器类型无关。 用户参考手册将 FIFO 和端口这两个术语混合在一起、我认为这会误导人们对这个问题的理解。

    与 FIFO 变化相关的似乎是 DMA 的当前使用。 因此、如果当前正在进行一个传输、并且另一个来自不同 DMA 通道的传输被发出、看起来使用的 FIFO 未被使用。  我发现与此相关的唯一问题是:  

    但我的问题更多地是为了控制将使用哪一个 FIFO 来知道要查看哪一个 FXACTC 寄存器。 我可以检查 FXACDADDR 或 FXACSADDR、但如果可能、我希望避免它。

    再次感谢、致以诚挚的问候。

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

    吉列尔莫、您好!

    [引用 userid="186225" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1192580/tms570lc4357-dma-fifo-port-a-b-automatic-change-issue/4497284 #4497284">但我的问题更多地是控制将使用哪一个 FIFO 来知道要查找哪一个 FXACTC 寄存器。 我可以检查 FXACDADDR 或 FXACSADDR、但如果可能、我希望避免它。[/QUERPLET]

    我再次完整地浏览 DMA 一章、看不到任何可以控制 DMA FIFO 的东西。 我理解的是、它由 DMA 自动控制。 我们在这里唯一可以控制的是"旁路" FIFO。

    我们可以将 FIFO 配置为旁路模式、以便使用此模式降低加罐之间的切换延迟。 在此模式下、以源粒度对通道进行仲裁、这意味着如果通道配置为8位传输、则每8位 DMA 传输就会发生一次仲裁。

    --

    谢谢、此致、
    Jagadish。