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.

[参考译文] TM4C129ENCPDT:当 SSI UDMA 传输到 TM4C129ENCPDT 的外部 SDRAM 时、数据可能会丢失。

Guru**** 2501705 points
Other Parts Discussed in Thread: TM4C129ENCPDT

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1536579/tm4c129encpdt-data-may-be-lost-when-ssi-udma-is-transferred-to-external-sdram-for-tm4c129encpdt

器件型号:TM4C129ENCPDT


工具/软件:

如果在 CPU 频繁访问外部 SDRAM 时使用 UDMA 将 SSI 数据传输到外部 SDRAM、则传输过程中的数据将丢失。(仅 1 个字节)
观察波形、SSI 传输之间存在一个接近丢失数据的间隔。
我们认为 SSI 的接收 FIFO 已满、但 SSI 的接收 FIFO 在充满数据时是否正常输出 UDMA 请求?

CPU:TM4C129ENCPDT、120MHz
SSI:主器件、TI 模式、主器件、20MHz、8 位
SDRAM:16 位、30MHz

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

    尊敬的 Takeo-San:

    传输过程中的数据将丢失。(仅 1 个字节)
    查看波形时、SSI 传输之间有一个接近丢失数据的间隔。
    被认为 SSI 的接收 FIFO 已满、但 SSI 的接收 FIFO 在充满数据时是否正常输出 UDMA 请求?

    您能否检查 SSISR 寄存器中的 SSI RXFIFO 是否已满? 另请检查 SSI 和 UDMA 模块中是否检测到任何错误?

    是否对 EPI 模块使用非阻塞读取或阻塞读取? 有关详细信息、请参阅数据表。 您能否使用 EPIFIFOLVL 以及是否有任何效果? 尝试降低 FIFO 级别、以便更频繁地生成 UDMA 请求。 结果是什么?

    当 NBRFIFO 处于 EPIFOLVL 寄存器指定的级别时、非阻塞读取通道会从 NBRFIFO 复制值。 对于非阻塞读取、起始地址、每个事务的大小和元素计数必须在 μ µDMA 中编程。 请注意、可以使用两个非阻塞读取寄存器组、并填充 NBRFIFO、使一个运行到完成、然后下一个启动(它们不交错)。 使用 NBRFIFO 可提供最佳的传输速率。

    另请注意、处理器的优先级始终高于 UDMA。  

    μ μDMA 控制器对总线的使用始终从属于处理器内核、因此它绝不会等待处理器的总线事务。 由于 μ μDMA 控制器仅使用以其他方式空闲的总线周期、因此它提供的数据传输带宽基本是自由的、不会影响系统的其余部分。 总线架构经过优化、大大增强了处理器内核和 μ μDMA 控制器有效共享片上总线的能力、从而提高了性能

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

    感谢您的回答。

    >能否检查 SSISR 寄存器中的 SSI RXFIFO 是否已满? 另请检查 SSI 和 UDMA 模块中是否检测到任何错误?

    我只能在 DMA 完成且 RXRXF=0 后进行检查。(SSISR=0x3)
    无法检查 DMA 错误状态、因为它在 DMA 完成时被清除。

    >您是否正在为 EPI 模块使用非阻塞读取或阻塞读取? 有关详细信息、请参阅数据表。 您能否使用 EPIFIFOLVL 以及是否有任何效果? 尝试降低 FIFO 级别、以便更频繁地生成 UDMA 请求。 结果是什么?

    仅使用阻塞读取。
    我将 SDRAM 时钟从 30MHz 增加到 60MHz、并将 SSI 时钟从 20MHz 减少到 5MHz、即使时钟恢复到其原始设置、问题也不会再次发生。

    最好吃的蔬菜

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

    尊敬的 Takeo-San:

    I 将 SDRAM 时钟从 30MHz 增加到 60MHz、并将 SSI 时钟从 20MHz 减少到 5MHz、并且即使时钟恢复到其原始设置、问题也不会再次出现。

    您是否说问题不再发生? 似乎您正逐渐放弃 UDMA 和 CPU、尝试同时访问 SDRAM 并改变频率。 您能否运行更长时间以确认问题不会再次出现? 现在我很高兴这个问题得到了某种程度的解决。