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.

[参考译文] MSPM33C321A:在 MSPM33 上将 DMA1 控制器与 UART 配合使用

Guru**** 2964340 points

Other Parts Discussed in Thread: MSPM33C321A

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1647430/mspm33c321a-using-dma1-controller-with-uart-on-mspm33

器件型号: MSPM33C321A

我正在处理一个需要多个使用 DMA 同时用于 Tx 和 Rx 的 UART 的项目。
DMA0 控制器可以无错误地工作、将任何给定 UART 的 DMA0 替换为 DMA1 既不能用于发送、也不能用于接收。  DMA0 控制器只有 4 个可用通道、因此我还需要将 DMA1 用于其他 UART。  使用 DMA1 控制器的示例工程都可以工作、但都是软件触发的。  使用“uart_tx_console_multibyte_readed_fifo_dma“示例、而将其切换到使用 DMA1 控制器也不起作用。

将 DMA1 控制器用于硬件驱动的 IO 是否有任何限制?

目前我使用的是 Code Composer 20.5.0 和 MSPM33C321A 评估板。

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

    可能已经弄清楚了这一点,有人能确认这(对于 UC12)是必要的吗?

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

    您好、James:

    我相信您可能会遇到此器件的其中一种安全相关配置。 使用 DMA1 时、是否进入默认处理程序?

    请参阅 TRM:

    如果您正在点击默认处理程序、您只需更改 DMA 设置、将其设置为安全和特权。

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

    我已经尝试过、作为一个示例 (dma1_block_transfer)、我正在做内存到内存的 DMA 传输。

    这些解决方案似乎如我上文所述、来自 UART 的 DMA 触发显然需要使用路由到另一个 DMA 控制器。

    DL_GSC_setRegularTriggerDMAInstance

    尽管技术参考手册中确实提到了这一点、但这方面的文档却很少。

    因此、现在一切都可以通过 6 个 UART 使用 12 个 DMA 通道用于 Rx 和 TX。