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.

[参考译文] RTOS/TM4C129DNCPDT:SSI2 Tx UDMA 不能 n't 运行

Guru**** 2531950 points
Other Parts Discussed in Thread: TM4C129DNCPDT, EK-TM4C1294XL

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/748082/rtos-tm4c129dncpdt-ssi2-tx-udma-doesn-t-run

器件型号:TM4C129DNCPDT
Thread 中讨论的其他器件: EK-TM4C1294XL

工具/软件:TI-RTOS

大家好、

我正在研发 Tiva TM4C129DNCPDT、尝试使通道2 SSI 充分利用 UDMA。 我已经让 Rx DMA 工作了一段时间、但是我需要手动发送空白字节(0x00)来触发串行时钟、以便我可以从另一个模块接收数据。 我正在尝试在同一个 SSI 通道上设置 Tx DMA、以便处理器不会因为一项相当简单的任务而陷入困境。

现在我的问题是、当我在发送 DMA 通道上调用 uDMAChannelEnable 时、什么也不会发生。 我希望 DMARX 的中断在缓冲区已满时触发、但它没有触发、这就意味着传输从未开始。

在我发布一组 DMA 代码之前、是否有其他人遇到过此问题、或许有解决方案? 我将为此使用 SSI2。 如果有用、我将在发送之前和之后手动切换芯片选择线路。 我还在使用 TI-RTOS、因此我的中断在 app.cfg 文件中注册。

-Tom

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我要看一下。 它应该与演示"UDMA_DEMO"(C:\ti\TivaWare_C_Series-2.1.4.178\examples\boards\ek-tm4c1294xl\UDMA_DEMO)中的方法非常相似、它们在环回模式下配置 UART 并使用 UDMA 运行 TX 和 RX。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我已经连接了一个示例项目、该项目在发送和接收时都使用 uDMA 运行 SSI2。 如果在 PD0和 PD1之间连接了跳线,则验证传输的数据,并在 UART0上报告错误。 使用 Code Composer 的"File"、"Import"函数将项目放入您的工作区。

    /cfs-file/__key/communityserver-discussions-components-files/908/udma_2D00_ssi2_5F00_demo.zip

    以下是逻辑分析仪屏幕截图:

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

    使用缓冲 UARTprintf 改进了版本。

    /cfs-file/__key/communityserver-discussions-components-files/908/1541.udma_2D00_ssi2_5F00_demo.zip

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

    尊敬的 Bob:

    我可能不应该在感恩节假期之前发布! 顺便说一下、祝您感恩节愉快!

    我下载了您的代码并在我的评估板上运行、一切正常。 然后、我将其移植到我的主项目中、并修改了引脚和 whatnot (并在我的代码中发现了一些需要修复的错误)。 到目前为止、在发送和接收端、一切都与 DMA 配合良好

    我注意到您在代码中使用了高级模式、我假设您不必切换芯片选择线路。 但 DMA 是否仅在高级模式下工作?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    UDMA 还将在传统模式下工作。 您的假设是正确的。 我使用高级模式来获得芯片选择保持。